From beef2b5aa811efd42a111c87a4308d6584c78b97 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 28 Nov 2011 12:44:56 -0500 Subject: - [bug] Fixed bug whereby TypeDecorator would return a stale value for _type_affinity, when using a TypeDecorator that "switches" types, like the CHAR/UUID type. --- test/sql/test_types.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'test/sql') diff --git a/test/sql/test_types.py b/test/sql/test_types.py index efad45501..57193a397 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -199,6 +199,23 @@ class TypeAffinityTest(fixtures.TestBase): ]: eq_(t1._compare_type_affinity(t2), comp, "%s %s" % (t1, t2)) + def test_decorator_doesnt_cache(self): + from sqlalchemy.dialects import postgresql + + class MyType(TypeDecorator): + impl = CHAR + + def load_dialect_impl(self, dialect): + if dialect.name == 'postgresql': + return dialect.type_descriptor(postgresql.UUID()) + else: + return dialect.type_descriptor(CHAR(32)) + + t1 = MyType() + d = postgresql.dialect() + assert t1._type_affinity is String + assert t1.dialect_impl(d)._type_affinity is postgresql.UUID + class PickleMetadataTest(fixtures.TestBase): def testmeta(self): for loads, dumps in picklers(): -- cgit v1.2.1