mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-22 08:32:09 -04:00
3510ffee1f
Fixes: #5294 ### Description Fix for https://github.com/sqlalchemy/sqlalchemy/issues/5294#issue-610311455 I tested it against our database (Adaptive Server Enterprise/16.0 SP02) with `pyodbc+sybase` ### Checklist This pull request is: - [x] A short code fix for #5294 - [x] Added tests. Closes: #5312 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/5312 Pull-request-sha:f62c14825fChange-Id: Ic716e17a6f654deef78781cefc3f16333cd725c3 (cherry picked from commit360583a00a)
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
from sqlalchemy import extract
|
|
from sqlalchemy import select
|
|
from sqlalchemy import sql
|
|
from sqlalchemy.databases import sybase
|
|
from sqlalchemy.testing import AssertsCompiledSQL
|
|
from sqlalchemy.testing import fixtures
|
|
|
|
|
|
class CompileTest(fixtures.TestBase, AssertsCompiledSQL):
|
|
__dialect__ = sybase.dialect()
|
|
|
|
def test_extract(self):
|
|
t = sql.table("t", sql.column("col1"))
|
|
|
|
mapping = {
|
|
"day": "day",
|
|
"doy": "dayofyear",
|
|
"dow": "weekday",
|
|
"milliseconds": "millisecond",
|
|
"millisecond": "millisecond",
|
|
"year": "year",
|
|
}
|
|
|
|
for field, subst in list(mapping.items()):
|
|
self.assert_compile(
|
|
select([extract(field, t.c.col1)]),
|
|
'SELECT DATEPART("%s", t.col1) AS anon_1 FROM t' % subst,
|
|
)
|
|
|
|
def test_limit_offset(self):
|
|
stmt = select([1]).limit(5).offset(6)
|
|
assert stmt.compile().params == {"param_1": 5, "param_2": 6}
|
|
self.assert_compile(
|
|
stmt, "SELECT 1 ROWS LIMIT :param_1 OFFSET :param_2"
|
|
)
|
|
|
|
def test_offset(self):
|
|
stmt = select([1]).offset(10)
|
|
assert stmt.compile().params == {"param_1": 10}
|
|
self.assert_compile(stmt, "SELECT 1 ROWS OFFSET :param_1")
|
|
|
|
def test_limit(self):
|
|
stmt = select([1]).limit(5)
|
|
assert stmt.compile().params == {"param_1": 5}
|
|
self.assert_compile(stmt, "SELECT 1 ROWS LIMIT :param_1")
|
|
|
|
def test_delete_extra_froms(self):
|
|
t1 = sql.table("t1", sql.column("c1"))
|
|
t2 = sql.table("t2", sql.column("c1"))
|
|
q = sql.delete(t1).where(t1.c.c1 == t2.c.c1)
|
|
self.assert_compile(
|
|
q, "DELETE FROM t1 FROM t1, t2 WHERE t1.c1 = t2.c1"
|
|
)
|
|
|
|
def test_delete_extra_froms_alias(self):
|
|
a1 = sql.table("t1", sql.column("c1")).alias("a1")
|
|
t2 = sql.table("t2", sql.column("c1"))
|
|
q = sql.delete(a1).where(a1.c.c1 == t2.c.c1)
|
|
self.assert_compile(
|
|
q, "DELETE FROM a1 FROM t1 AS a1, t2 WHERE a1.c1 = t2.c1"
|
|
)
|
|
self.assert_compile(sql.delete(a1), "DELETE FROM t1 AS a1")
|