summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Magamedov <vladimir@magamedov.com>2013-09-04 11:43:40 +0300
committerMike Bayer <mike_mp@zzzcomputing.com>2013-09-04 11:45:14 -0400
commite8167548429b9d4937caaa09740ffe9bdab1ef61 (patch)
treececa894f7ae4af3ec565e7bbed437b32a55e7cb5
parentb727d05ce1d23289878899b8982aeba09b824d62 (diff)
downloadsqlalchemy-e8167548429b9d4937caaa09740ffe9bdab1ef61.tar.gz
Fixed Query.exists() method for the case, when query doesn't have any filters applied.
-rw-r--r--doc/build/changelog/changelog_08.rst7
-rw-r--r--doc/build/changelog/changelog_09.rst8
-rw-r--r--lib/sqlalchemy/orm/query.py2
-rw-r--r--test/orm/test_query.py11
4 files changed, 26 insertions, 2 deletions
diff --git a/doc/build/changelog/changelog_08.rst b/doc/build/changelog/changelog_08.rst
index 454b9ea26..10c2e5189 100644
--- a/doc/build/changelog/changelog_08.rst
+++ b/doc/build/changelog/changelog_08.rst
@@ -7,6 +7,13 @@
:version: 0.8.3
.. change::
+ :tags: bug, orm
+ :tickets: 2818
+
+ Fixed bug where :meth:`.Query.exists` failed to work correctly
+ without any WHERE criterion. Courtesy Vladimir Magamedov.
+
+ .. change::
:tags: bug, sql
:tickets: 2811
diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst
index 59dfb52eb..03cecff2c 100644
--- a/doc/build/changelog/changelog_09.rst
+++ b/doc/build/changelog/changelog_09.rst
@@ -7,6 +7,14 @@
:version: 0.9.0
.. change::
+ :tags: bug, orm
+ :tickets: 2818
+
+ Fixed bug where :meth:`.Query.exists` failed to work correctly
+ without any WHERE criterion. Courtesy Vladimir Magamedov.
+ Also in 0.8.3.
+
+ .. change::
:tags: bug, sql
:tickets: 2811
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index b71bfe08f..d64575aec 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -2494,7 +2494,7 @@ class Query(object):
.. versionadded:: 0.8.1
"""
- return sql.exists(self.with_entities('1').statement)
+ return sql.exists(self.statement.with_only_columns(['1']))
def count(self):
"""Return a count of rows this Query would return.
diff --git a/test/orm/test_query.py b/test/orm/test_query.py
index 0973dc357..7151ef0b6 100644
--- a/test/orm/test_query.py
+++ b/test/orm/test_query.py
@@ -1730,9 +1730,18 @@ class ExistsTest(QueryTest, AssertsCompiledSQL):
def test_exists(self):
User = self.classes.User
sess = create_session()
- q1 = sess.query(User).filter(User.name == 'fred')
+
+ q1 = sess.query(User)
self.assert_compile(sess.query(q1.exists()),
'SELECT EXISTS ('
+ 'SELECT 1 FROM users'
+ ') AS anon_1',
+ dialect=default.DefaultDialect()
+ )
+
+ q2 = sess.query(User).filter(User.name == 'fred')
+ self.assert_compile(sess.query(q2.exists()),
+ 'SELECT EXISTS ('
'SELECT 1 FROM users WHERE users.name = :name_1'
') AS anon_1',
dialect=default.DefaultDialect()