summaryrefslogtreecommitdiff
path: root/test/dialect/postgresql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2018-08-21 20:59:04 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2018-08-21 21:03:44 -0400
commit32ce703a98eba8a7685e609b4a7ca86b79dd0904 (patch)
treedaccb23549471e07d963b31a93722e2035a51738 /test/dialect/postgresql
parentaafc4cb2c93e474e068983927475ea3f2f370524 (diff)
downloadsqlalchemy-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.py35
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)