summaryrefslogtreecommitdiff
path: root/test/orm/query.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-09-28 00:39:06 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-09-28 00:39:06 +0000
commit5f75197e86059d7e4bbe20558c98011d89f9cfda (patch)
tree5225252c7bb6a04ec656dcd8db283dc48a950e26 /test/orm/query.py
parent15f1a5df20291f77a0a6e83ba9dd5527034237ad (diff)
downloadsqlalchemy-5f75197e86059d7e4bbe20558c98011d89f9cfda.tar.gz
- Fixed up slices on Query (i.e. query[x:y]) to work properly
for zero length slices, slices with None on either end. [ticket:1177]
Diffstat (limited to 'test/orm/query.py')
-rw-r--r--test/orm/query.py42
1 files changed, 41 insertions, 1 deletions
diff --git a/test/orm/query.py b/test/orm/query.py
index ac961d9a0..5d77f2d81 100644
--- a/test/orm/query.py
+++ b/test/orm/query.py
@@ -497,13 +497,53 @@ class CompileTest(QueryTest):
l = list(session.query(User).instances(s.execute(emailad = 'jack@bean.com')))
assert [User(id=7)] == l
+# more slice tests are available in test/orm/generative.py
class SliceTest(QueryTest):
def test_first(self):
assert User(id=7) == create_session().query(User).first()
assert create_session().query(User).filter(User.id==27).first() is None
- # more slice tests are available in test/orm/generative.py
+ @testing.fails_on_everything_except('sqlite')
+ def test_limit_offset_applies(self):
+ """Test that the expected LIMIT/OFFSET is applied for slices.
+
+ The LIMIT/OFFSET syntax differs slightly on all databases, and
+ query[x:y] executes immediately, so we are asserting against
+ SQL strings using sqlite's syntax.
+
+ """
+ sess = create_session()
+ q = sess.query(User)
+
+ self.assert_sql(testing.db, lambda: q[10:20], [
+ ("SELECT users.id AS users_id, users.name AS users_name FROM users LIMIT 10 OFFSET 10", {})
+ ])
+
+ self.assert_sql(testing.db, lambda: q[:20], [
+ ("SELECT users.id AS users_id, users.name AS users_name FROM users LIMIT 20 OFFSET 0", {})
+ ])
+
+ self.assert_sql(testing.db, lambda: q[5:], [
+ ("SELECT users.id AS users_id, users.name AS users_name FROM users LIMIT -1 OFFSET 5", {})
+ ])
+
+ self.assert_sql(testing.db, lambda: q[2:2], [])
+
+ self.assert_sql(testing.db, lambda: q[-2:-5], [])
+
+ self.assert_sql(testing.db, lambda: q[-5:-2], [
+ ("SELECT users.id AS users_id, users.name AS users_name FROM users", {})
+ ])
+
+ self.assert_sql(testing.db, lambda: q[-5:], [
+ ("SELECT users.id AS users_id, users.name AS users_name FROM users", {})
+ ])
+
+ self.assert_sql(testing.db, lambda: q[:], [
+ ("SELECT users.id AS users_id, users.name AS users_name FROM users", {})
+ ])
+
class TextTest(QueryTest):
def test_fulltext(self):