diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-03-26 10:09:10 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-03-26 10:11:31 -0400 |
| commit | 74d3f3965b383aef7421f2cf1779573a4ac65987 (patch) | |
| tree | ffbbe8818f23cbc1c4ace1888ca01ced4f4e8591 /test/sql | |
| parent | 59308fd60fd8f7750205063134df4b944d12704b (diff) | |
| download | sqlalchemy-74d3f3965b383aef7421f2cf1779573a4ac65987.tar.gz | |
support BLANK_SCHEMA, RETAIN_SCHEMA FK schema on copy
Added support so that the :paramref:`.Table.tometadata.referred_schema_fn`
callable passed to :meth:`.Table.to_metadata` may return the value
:data:`.BLANK_SCHEMA` to indicate that the referenced foreign key should be
reset to None. The :data.`RETAIN_SCHEMA` symbol may also be returned from
this function to indicate "no change", which will behave the same as
``None`` currently does which also indicates no change.
Fixes: #7860
Change-Id: I82a45988d534295d8356453f68001b21d4ff706d
Diffstat (limited to 'test/sql')
| -rw-r--r-- | test/sql/test_metadata.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index 21fc0a627..f7480d11a 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -41,6 +41,7 @@ from sqlalchemy.sql import naming from sqlalchemy.sql import operators from sqlalchemy.sql.elements import _NONE_NAME from sqlalchemy.sql.elements import literal_column +from sqlalchemy.sql.schema import RETAIN_SCHEMA from sqlalchemy.testing import assert_raises from sqlalchemy.testing import assert_raises_message from sqlalchemy.testing import AssertsCompiledSQL @@ -1315,6 +1316,27 @@ class ToMetaDataTest(fixtures.TestBase, AssertsCompiledSQL, ComparesTables): self._assert_fk(t2, "z", "h.t1.x", referred_schema_fn=ref_fn) + def test_fk_reset_to_none(self): + m = MetaData() + + t2 = Table("t2", m, Column("y", Integer, ForeignKey("p.t1.x"))) + + def ref_fn(table, to_schema, constraint, referred_schema): + return BLANK_SCHEMA + + self._assert_fk(t2, None, "t1.x", referred_schema_fn=ref_fn) + + @testing.combinations(None, RETAIN_SCHEMA) + def test_fk_test_non_return_for_referred_schema(self, sym): + m = MetaData() + + t2 = Table("t2", m, Column("y", Integer, ForeignKey("p.t1.x"))) + + def ref_fn(table, to_schema, constraint, referred_schema): + return sym + + self._assert_fk(t2, None, "p.t1.x", referred_schema_fn=ref_fn) + def test_copy_info(self): m = MetaData() fk = ForeignKey("t2.id") |
