summaryrefslogtreecommitdiff
path: root/test/dialect/test_postgresql.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-03-26 12:03:54 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-03-26 12:03:54 -0400
commitdb052dfba8db282516c353b1dc3984668ce93538 (patch)
treebe120e5c9486d45fe22b6f247f779fa90ea3c098 /test/dialect/test_postgresql.py
parent832d508816aae51af1f08e37a0e964ce41755104 (diff)
downloadsqlalchemy-db052dfba8db282516c353b1dc3984668ce93538.tar.gz
- the TIME and TIMESTAMP types are now availble from the
postgresql dialect directly, which add the PG-specific argument 'precision' to both. 'precision' and 'timezone' are correctly reflected for both TIME and TIMEZONE types. [ticket:997]
Diffstat (limited to 'test/dialect/test_postgresql.py')
-rw-r--r--test/dialect/test_postgresql.py49
1 files changed, 48 insertions, 1 deletions
diff --git a/test/dialect/test_postgresql.py b/test/dialect/test_postgresql.py
index bc3fbc614..dc022bb77 100644
--- a/test/dialect/test_postgresql.py
+++ b/test/dialect/test_postgresql.py
@@ -1284,7 +1284,7 @@ class MiscTest(TestBase, AssertsExecutionResults, AssertsCompiledSQL):
assert_raises(exception_cls, eng.execute, "show transaction isolation level")
-class TimezoneTest(TestBase, AssertsExecutionResults):
+class TimezoneTest(TestBase):
"""Test timezone-aware datetimes.
psycopg will return a datetime with a tzinfo attached to it, if postgresql
@@ -1330,6 +1330,53 @@ class TimezoneTest(TestBase, AssertsExecutionResults):
c = notztable.update(notztable.c.id==1).execute(name='newname')
print notztable.select(tztable.c.id==1).execute().first()
+class TimePrecisionTest(TestBase, AssertsCompiledSQL):
+ __dialect__ = postgresql.dialect()
+
+ def test_compile(self):
+ for (type_, expected) in [
+ (postgresql.TIME(), "TIME WITHOUT TIME ZONE"),
+ (postgresql.TIME(precision=5), "TIME(5) WITHOUT TIME ZONE"),
+ (postgresql.TIME(timezone=True, precision=5), "TIME(5) WITH TIME ZONE"),
+ (postgresql.TIMESTAMP(), "TIMESTAMP WITHOUT TIME ZONE"),
+ (postgresql.TIMESTAMP(precision=5), "TIMESTAMP(5) WITHOUT TIME ZONE"),
+ (postgresql.TIMESTAMP(timezone=True, precision=5), "TIMESTAMP(5) WITH TIME ZONE"),
+ ]:
+ self.assert_compile(type_, expected)
+
+ @testing.only_on('postgresql', 'DB specific feature')
+ def test_reflection(self):
+ m1 = MetaData(testing.db)
+ t1 = Table('t1', m1,
+ Column('c1', postgresql.TIME()),
+ Column('c2', postgresql.TIME(precision=5)),
+ Column('c3', postgresql.TIME(timezone=True, precision=5)),
+ Column('c4', postgresql.TIMESTAMP()),
+ Column('c5', postgresql.TIMESTAMP(precision=5)),
+ Column('c6', postgresql.TIMESTAMP(timezone=True, precision=5)),
+
+ )
+ t1.create()
+ try:
+ m2 = MetaData(testing.db)
+ t2 = Table('t1', m2, autoload=True)
+ eq_(t2.c.c1.type.precision, None)
+ eq_(t2.c.c2.type.precision, 5)
+ eq_(t2.c.c3.type.precision, 5)
+ eq_(t2.c.c4.type.precision, None)
+ eq_(t2.c.c5.type.precision, 5)
+ eq_(t2.c.c6.type.precision, 5)
+ eq_(t2.c.c1.type.timezone, False)
+ eq_(t2.c.c2.type.timezone, False)
+ eq_(t2.c.c3.type.timezone, True)
+ eq_(t2.c.c4.type.timezone, False)
+ eq_(t2.c.c5.type.timezone, False)
+ eq_(t2.c.c6.type.timezone, True)
+ finally:
+ t1.drop()
+
+
+
class ArrayTest(TestBase, AssertsExecutionResults):
__only_on__ = 'postgresql'