[Sqlalchemy-tickets] [sqlalchemy] #2818: Query.exists() don't works with queries without filters
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2013-09-03 08:26:14
|
#2818: Query.exists() don't works with queries without filters
------------------------+-----------------------------------------
Reporter: vmagamedov | Owner: zzzeek
Type: defect | Status: new
Priority: medium | Milestone: 0.8.xx
Component: orm | Severity: no triage selected yet
Keywords: | Progress State: awaiting triage
------------------------+-----------------------------------------
Action:
{{{
#!python
db.session.query(User).exists()
}}}
Expectation:
{{{
#!sql
SELECT 1 FROM users
}}}
Current result:
{{{
#!sql
SELECT 1
}}}
Solution:
{{{
#!diff
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index b71bfe0..d64575a 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 0973dc3..bc56668 100644
--- a/test/orm/test_query.py
+++ b/test/orm/test_query.py
@@ -1730,9 +1730,16 @@ 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()
}}}
P.S. Is it normal to send pull requests on !GitHub? Or you prefer
Trac/patches?
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2818>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|