# more slice tests are available in test/orm/generative.py
class SliceTest(QueryTest):
__dialect__ = "default"
+ __backend__ = True
def test_first(self):
User = self.classes.User
],
)
+ @testing.requires.sql_expression_limit_offset
def test_first_against_expression_offset(self):
User = self.classes.User
sess = create_session()
- q = sess.query(User).order_by(User.id).offset(literal_column("2"))
+ q = (
+ sess.query(User)
+ .order_by(User.id)
+ .offset(literal_column("2") + literal_column("3"))
+ )
self.assert_sql(
testing.db,
(
"SELECT users.id AS users_id, users.name AS users_name "
"FROM users ORDER BY users.id "
- "LIMIT :param_1 OFFSET 2",
+ "LIMIT :param_1 OFFSET 2 + 3",
[{"param_1": 1}],
)
],
User = self.classes.User
sess = create_session()
- q = sess.query(User).order_by(User.id).offset(literal_column("2"))
+ q = (
+ sess.query(User)
+ .order_by(User.id)
+ .offset(literal_column("2") + literal_column("3"))
+ )
self.assert_sql(
testing.db,
(
"SELECT users.id AS users_id, users.name AS users_name "
"FROM users ORDER BY users.id "
- "LIMIT :param_1 OFFSET 2 + :2_1",
- [{"param_1": 3, "2_1": 2}],
+ "LIMIT :param_1 OFFSET 2 + 3 + :param_2",
+ [{"param_1": 3, "param_2": 2}],
)
],
)
def sql_expression_limit_offset(self):
return (
fails_if(
- ["mysql"],
- "MySQL can't accommodate full expressions in OFFSET or LIMIT",
+ ["mysql", "mssql"],
+ "Target backend can't accommodate full expressions in "
+ "OFFSET or LIMIT",
)
+ self.offset
)