diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-08-21 20:59:04 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-08-21 21:03:44 -0400 |
| commit | 32ce703a98eba8a7685e609b4a7ca86b79dd0904 (patch) | |
| tree | daccb23549471e07d963b31a93722e2035a51738 /test/dialect/postgresql | |
| parent | aafc4cb2c93e474e068983927475ea3f2f370524 (diff) | |
| download | sqlalchemy-32ce703a98eba8a7685e609b4a7ca86b79dd0904.tar.gz | |
Strip quotes from format_type in addition to other characters
Fixed bug in PostgreSQL ENUM reflection where a case-sensitive, quoted name
would be reported by the query including quotes, which would not match a
target column during table reflection as the quotes needed to be stripped
off.
Fixes: #4323
Change-Id: I668f3acccc578e58f23b70c82d31d5c1ec194913
Diffstat (limited to 'test/dialect/postgresql')
| -rw-r--r-- | test/dialect/postgresql/test_reflection.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/dialect/postgresql/test_reflection.py b/test/dialect/postgresql/test_reflection.py index 5c52195d1..70bc26e0b 100644 --- a/test/dialect/postgresql/test_reflection.py +++ b/test/dialect/postgresql/test_reflection.py @@ -909,6 +909,41 @@ class ReflectionTest(fixtures.TestBase): }]) @testing.provide_metadata + def test_inspect_enums_case_sensitive(self): + enum_type = postgresql.ENUM( + 'CapsOne', 'CapsTwo', name='UpperCase', metadata=self.metadata) + enum_type.create(testing.db) + inspector = reflection.Inspector.from_engine(testing.db) + eq_(inspector.get_enums(), [ + { + 'visible': True, + 'labels': ['CapsOne', 'CapsTwo'], + 'name': 'UpperCase', + 'schema': 'public' + }]) + + @testing.provide_metadata + def test_inspect_enums_case_sensitive_from_table(self): + enum_type = postgresql.ENUM( + 'CapsOne', 'CapsTwo', name='UpperCase', metadata=self.metadata) + + t = Table('t', self.metadata, Column('q', enum_type)) + + enum_type.create(testing.db) + t.create(testing.db) + + inspector = reflection.Inspector.from_engine(testing.db) + cols = inspector.get_columns("t") + cols[0]['type'] = (cols[0]['type'].name, cols[0]['type'].enums) + eq_(cols, [ + { + 'name': 'q', + 'type': ('UpperCase', ['CapsOne', 'CapsTwo']), + 'nullable': True, 'default': None, + 'autoincrement': False, 'comment': None} + ]) + + @testing.provide_metadata def test_inspect_enums_star(self): enum_type = postgresql.ENUM( 'cat', 'dog', 'rat', name='pet', metadata=self.metadata) |
