summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-10-21 17:58:51 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-10-21 17:58:51 -0400
commit56d5732fbdf09508784df6dc4c04e5b39ac6be85 (patch)
tree0f69a2bfea355cac186dcc44847f8e49ace213cd /test/sql
parent0ae140aa989ea3868c01af23adfcdcc79b7cb22e (diff)
downloadsqlalchemy-56d5732fbdf09508784df6dc4c04e5b39ac6be85.tar.gz
- changelog for pullreq github:139
- add support for self-referential foreign keys to move over as well when the table name is changed.
Diffstat (limited to 'test/sql')
-rw-r--r--test/sql/test_metadata.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py
index 2328e7f73..3c55242fd 100644
--- a/test/sql/test_metadata.py
+++ b/test/sql/test_metadata.py
@@ -722,6 +722,42 @@ class ToMetaDataTest(fixtures.TestBase, ComparesTables):
eq_((table.key, table2.key),
('myschema.mytable', 'myschema.newtable'))
+ def test_change_name_selfref_fk_moves(self):
+ meta = MetaData()
+
+ referenced = Table('ref', meta,
+ Column('id', Integer, primary_key=True),
+ )
+ table = Table('mytable', meta,
+ Column('id', Integer, primary_key=True),
+ Column('parent_id', ForeignKey('mytable.id')),
+ Column('ref_id', ForeignKey('ref.id'))
+ )
+
+ table2 = table.tometadata(table.metadata, name='newtable')
+ assert table.metadata is table2.metadata
+ assert table2.c.ref_id.references(referenced.c.id)
+ assert table2.c.parent_id.references(table2.c.id)
+
+ def test_change_name_selfref_fk_moves_w_schema(self):
+ meta = MetaData()
+
+ referenced = Table('ref', meta,
+ Column('id', Integer, primary_key=True),
+ )
+ table = Table('mytable', meta,
+ Column('id', Integer, primary_key=True),
+ Column('parent_id', ForeignKey('mytable.id')),
+ Column('ref_id', ForeignKey('ref.id'))
+ )
+
+ table2 = table.tometadata(
+ table.metadata, name='newtable', schema='newschema')
+ ref2 = referenced.tometadata(table.metadata, schema='newschema')
+ assert table.metadata is table2.metadata
+ assert table2.c.ref_id.references(ref2.c.id)
+ assert table2.c.parent_id.references(table2.c.id)
+
def _assert_fk(self, t2, schema, expected, referred_schema_fn=None):
m2 = MetaData()
existing_schema = t2.schema