diff options
author | Vladimir Magamedov <vladimir@magamedov.com> | 2013-09-04 11:43:40 +0300 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-09-04 11:45:14 -0400 |
commit | e8167548429b9d4937caaa09740ffe9bdab1ef61 (patch) | |
tree | ceca894f7ae4af3ec565e7bbed437b32a55e7cb5 | |
parent | b727d05ce1d23289878899b8982aeba09b824d62 (diff) | |
download | sqlalchemy-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.rst | 7 | ||||
-rw-r--r-- | doc/build/changelog/changelog_09.rst | 8 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/query.py | 2 | ||||
-rw-r--r-- | test/orm/test_query.py | 11 |
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() |