summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/testing/config.py1
-rw-r--r--lib/sqlalchemy/testing/provision.py5
-rw-r--r--lib/sqlalchemy/testing/suite/test_reflection.py18
3 files changed, 22 insertions, 2 deletions
diff --git a/lib/sqlalchemy/testing/config.py b/lib/sqlalchemy/testing/config.py
index 8c232f319..0b8027b84 100644
--- a/lib/sqlalchemy/testing/config.py
+++ b/lib/sqlalchemy/testing/config.py
@@ -15,6 +15,7 @@ file_config = None
test_schema = None
test_schema_2 = None
_current = None
+ident = "main"
_fixture_functions = None # installed by plugin_base
diff --git a/lib/sqlalchemy/testing/provision.py b/lib/sqlalchemy/testing/provision.py
index aa14a9c1a..c4f489a69 100644
--- a/lib/sqlalchemy/testing/provision.py
+++ b/lib/sqlalchemy/testing/provision.py
@@ -67,6 +67,11 @@ def setup_config(db_url, options, file_config, follower_ident):
eng.connect().close()
cfg = config.Config.register(eng, db_opts, options, file_config)
+
+ # a symbolic name that tests can use if they need to disambiguate
+ # names across databases
+ config.ident = follower_ident
+
if follower_ident:
configure_follower(cfg, follower_ident)
return cfg
diff --git a/lib/sqlalchemy/testing/suite/test_reflection.py b/lib/sqlalchemy/testing/suite/test_reflection.py
index 3e4d7a2c0..f1c573662 100644
--- a/lib/sqlalchemy/testing/suite/test_reflection.py
+++ b/lib/sqlalchemy/testing/suite/test_reflection.py
@@ -458,7 +458,13 @@ class ComponentReflectionTest(fixtures.TablesTest):
Column("id", sa.INT, primary_key=True),
Column("name", sa.VARCHAR(50)),
Column("foo", sa.INT),
- sa.UniqueConstraint("name", name="user_tmp_uq"),
+ # disambiguate temp table unique constraint names. this is
+ # pretty arbitrary for a generic dialect however we are doing
+ # it to suit SQL Server which will produce name conflicts for
+ # unique constraints created against temp tables in different
+ # databases.
+ # https://www.arbinada.com/en/node/1645
+ sa.UniqueConstraint("name", name="user_tmp_uq_%s" % config.ident),
sa.Index("user_tmp_ix", "foo"),
**kw
)
@@ -1091,7 +1097,15 @@ class ComponentReflectionTest(fixtures.TablesTest):
# Different dialects handle duplicate index and constraints
# differently, so ignore this flag
refl.pop("duplicates_index", None)
- eq_(reflected, [{"column_names": ["name"], "name": "user_tmp_uq"}])
+ eq_(
+ reflected,
+ [
+ {
+ "column_names": ["name"],
+ "name": "user_tmp_uq_%s" % config.ident,
+ }
+ ],
+ )
@testing.requires.temp_table_reflect_indexes
def test_get_temp_table_indexes(self):