diff options
| author | Eloy Felix <eloyfelix@gmail.com> | 2016-12-12 12:09:54 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-05-30 17:14:22 -0400 |
| commit | f8b4f7289e3b07be489ede3f54b983d1461a2ac4 (patch) | |
| tree | e307db736897bebb0a39160dc5fd2f45676a429b /lib/sqlalchemy/testing/suite/test_reflection.py | |
| parent | 8b82369347641d1c9d64406462fa5527132c4880 (diff) | |
| download | sqlalchemy-f8b4f7289e3b07be489ede3f54b983d1461a2ac4.tar.gz | |
Implement get_unique_constraints, get_check_constraints for Oracle
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/326
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/342
Fixes: #4002
Change-Id: I221fe8ba305fc455a03e3a5d15f803bf8ee2e8fb
Diffstat (limited to 'lib/sqlalchemy/testing/suite/test_reflection.py')
| -rw-r--r-- | lib/sqlalchemy/testing/suite/test_reflection.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/sqlalchemy/testing/suite/test_reflection.py b/lib/sqlalchemy/testing/suite/test_reflection.py index f47b34bf4..1c4fd7d4d 100644 --- a/lib/sqlalchemy/testing/suite/test_reflection.py +++ b/lib/sqlalchemy/testing/suite/test_reflection.py @@ -677,12 +677,36 @@ class ComponentReflectionTest(fixtures.TablesTest): key=operator.itemgetter('name') ) + names_that_duplicate_index = set() + for orig, refl in zip(uniques, reflected): # Different dialects handle duplicate index and constraints # differently, so ignore this flag - refl.pop('duplicates_index', None) + dupe = refl.pop('duplicates_index', None) + if dupe: + names_that_duplicate_index.add(dupe) eq_(orig, refl) + reflected_metadata = MetaData() + reflected = Table( + 'testtbl', reflected_metadata, autoload_with=orig_meta.bind, + schema=schema) + + # test "deduplicates for index" logic. MySQL and Oracle + # "unique constraints" are actually unique indexes (with possible + # exception of a unique that is a dupe of another one in the case + # of Oracle). make sure # they aren't duplicated. + idx_names = set([idx.name for idx in reflected.indexes]) + uq_names = set([ + uq.name for uq in reflected.constraints + if isinstance(uq, sa.UniqueConstraint)]).difference( + ['unique_c_a_b']) + + assert not idx_names.intersection(uq_names) + if names_that_duplicate_index: + eq_(names_that_duplicate_index, idx_names) + eq_(uq_names, set()) + @testing.provide_metadata def _test_get_view_definition(self, schema=None): meta = self.metadata |
