From 7009a3bc32daadf078e2806622615c665105240e Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 8 May 2010 15:29:08 -0400 Subject: [PATCH] - func.sysdate() emits "SYSDATE()", i.e. with the ending parenthesis, on MySQL. [ticket:1794] --- CHANGES | 6 +++++- lib/sqlalchemy/dialects/mysql/base.py | 3 +++ test/dialect/test_mysql.py | 8 +++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 5907f5dfc7..2508a3cd05 100644 --- a/CHANGES +++ b/CHANGES @@ -26,7 +26,11 @@ CHANGES - engines - Fixed building the C extensions on Python 2.4. [ticket:1781] - + +- mysql + - func.sysdate() emits "SYSDATE()", i.e. with the ending + parenthesis, on MySQL. [ticket:1794] + - oracle - Added a check for cx_oracle versions lower than version 5, in which case the incompatible "output type handler" won't diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 6a07614763..619bbb3ced 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -1145,6 +1145,9 @@ class MySQLCompiler(compiler.SQLCompiler): def visit_utc_timestamp_func(self, fn, **kw): return "UTC_TIMESTAMP" + + def visit_sysdate_func(self, fn, **kw): + return "SYSDATE()" def visit_concat_op(self, binary, **kw): return "concat(%s, %s)" % (self.process(binary.left), self.process(binary.right)) diff --git a/test/dialect/test_mysql.py b/test/dialect/test_mysql.py index b0859210d9..f61af42381 100644 --- a/test/dialect/test_mysql.py +++ b/test/dialect/test_mysql.py @@ -1069,6 +1069,9 @@ class SQLTest(TestBase, AssertsCompiledSQL): def test_utc_timestamp(self): self.assert_compile(func.utc_timestamp(), "UTC_TIMESTAMP") + def test_sysdate(self): + self.assert_compile(func.sysdate(), "SYSDATE()") + def test_cast(self): t = sql.table('t', sql.column('col')) m = mysql @@ -1237,7 +1240,10 @@ class ExecutionTest(TestBase): meta.reflect(cx) eq_(cx.dialect._connection_charset, charset) cx.close() - + + def test_sysdate(self): + d = testing.db.scalar(func.sysdate()) + assert isinstance(d, datetime.datetime) class MatchTest(TestBase, AssertsCompiledSQL): __only_on__ = 'mysql' -- 2.47.2