]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- postgres TIMESTAMP renders correctly [ticket:981]
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 27 Feb 2008 20:23:23 +0000 (20:23 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 27 Feb 2008 20:23:23 +0000 (20:23 +0000)
CHANGES
lib/sqlalchemy/databases/postgres.py
lib/sqlalchemy/sql/compiler.py
test/dialect/postgres.py

diff --git a/CHANGES b/CHANGES
index 460244b05b6c47b32ec7829ce4903ca52ee28ea8..c2bd34e8aa06f3c2489f62eed83a86e7c9e2a7b8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -62,6 +62,7 @@ CHANGES
 - dialects
     - Invalid SQLite connection URLs now raise an error.
 
+    - postgres TIMESTAMP renders correctly [ticket:981]
 
 0.4.3
 ------
index a9fa90c68842b5646f4de4feca12d3e397b6ece0..9f8e9860718dd60a2d461f95005f22d21cd772a4 100644 (file)
@@ -631,6 +631,13 @@ class PGCompiler(compiler.DefaultCompiler):
         }
     )
 
+    functions = compiler.DefaultCompiler.functions.copy()
+    functions.update (
+        {
+            'TIMESTAMP':lambda x:'TIMESTAMP %s' % x,
+        }
+    )
+
     def visit_sequence(self, seq):
         if seq.optional:
             return None
index c5ff974e52de7f3fb70ada1b0ffb3466d26a3625..8a2a5f2ddb42a1ec1819f795d57a00e429300837 100644 (file)
@@ -349,7 +349,7 @@ class DefaultCompiler(engine.Compiled):
         name = self.function_string(func)
 
         if callable(name):
-            return name(*[self.process(x) for x in func.clause_expr])
+            return name(*[self.process(x) for x in func.clauses])
         else:
             return ".".join(func.packagenames + [name]) % {'expr':self.function_argspec(func)}
 
@@ -357,7 +357,7 @@ class DefaultCompiler(engine.Compiled):
         return self.process(func.clause_expr)
 
     def function_string(self, func):
-        return self.functions.get(func.__class__, func.name + "%(expr)s")
+        return self.functions.get(func.__class__, self.functions.get(func.name, func.name + "%(expr)s"))
 
     def visit_compound_select(self, cs, asfrom=False, parens=True, **kwargs):
         stack_entry = {'select':cs}
index 9ec44203a4b851a881c43df67663aff7e42e70ac..71fb0c763f40979318e0ebda5e6b4a7dd03a98dc 100644 (file)
@@ -705,5 +705,15 @@ class ArrayTest(TestBase, AssertsExecutionResults):
         self.assertEquals(results[1]['strarr'], [[u'm\xe4\xe4'], [u'm\xf6\xf6']])
         arrtable.delete().execute()
 
+class TimeStampTest(TestBase, AssertsExecutionResults): 
+    __only_on__ = 'postgres' 
+    def test_timestamp(self): 
+        engine = testing.db
+        connection = engine.connect() 
+        s = select([func.TIMESTAMP("12/25/07").label("ts")]) 
+        result = connection.execute(s).fetchone() 
+        self.assertEqual(result[0], datetime.datetime(2007, 12, 25, 0, 0)) 
+
+
 if __name__ == "__main__":
     testenv.main()