summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2022-03-24 21:30:52 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2022-03-24 21:30:52 +0000
commit221aff778e1eb3c3aa8f8a1f72629177442694bc (patch)
tree5f668dd290cce756f4bfc1e60a0ec3c59b0951c8 /test/sql
parent1c1c925fe3a77581f4879f6b6fe0bb6b6158cc3d (diff)
parent6f02d5edd88fe2475629438b0730181a2b00c5fe (diff)
downloadsqlalchemy-221aff778e1eb3c3aa8f8a1f72629177442694bc.tar.gz
Merge "pep484 - SQL internals" into main
Diffstat (limited to 'test/sql')
-rw-r--r--test/sql/test_defaults.py3
-rw-r--r--test/sql/test_metadata.py45
2 files changed, 46 insertions, 2 deletions
diff --git a/test/sql/test_defaults.py b/test/sql/test_defaults.py
index f3260f272..52c779969 100644
--- a/test/sql/test_defaults.py
+++ b/test/sql/test_defaults.py
@@ -354,7 +354,8 @@ class DefaultObjectTest(fixtures.TestBase):
assert_raises_message(
sa.exc.ArgumentError,
r"SQL expression for WHERE/HAVING role expected, "
- r"got (?:Sequence|ColumnDefault|DefaultClause)\('y'.*\)",
+ r"got (?:Sequence|(?:ScalarElement)ColumnDefault|"
+ r"DefaultClause)\('y'.*\)",
t.select().where,
const,
)
diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py
index 11c3e83b7..21fc0a627 100644
--- a/test/sql/test_metadata.py
+++ b/test/sql/test_metadata.py
@@ -760,7 +760,10 @@ class MetaDataTest(fixtures.TestBase, ComparesTables):
"%s"
", name='someconstraint')" % repr(ck.sqltext),
),
- (ColumnDefault(("foo", "bar")), "ColumnDefault(('foo', 'bar'))"),
+ (
+ ColumnDefault(("foo", "bar")),
+ "ScalarElementColumnDefault(('foo', 'bar'))",
+ ),
):
eq_(repr(const), exp)
@@ -916,6 +919,46 @@ class ToMetaDataTest(fixtures.TestBase, AssertsCompiledSQL, ComparesTables):
a2 = a.to_metadata(m2)
assert b2.c.y.references(a2.c.x)
+ def test_fk_w_no_colname(self):
+ """test a ForeignKey that refers to table name only. the column
+ name is assumed to be the same col name on parent table.
+
+ this is a little used feature from long ago that nonetheless is
+ still in the code.
+
+ The feature was found to be not working but is repaired for
+ SQLAlchemy 2.0.
+
+ """
+ m1 = MetaData()
+ a = Table("a", m1, Column("x", Integer))
+ b = Table("b", m1, Column("x", Integer, ForeignKey("a")))
+ assert b.c.x.references(a.c.x)
+
+ m2 = MetaData()
+ b2 = b.to_metadata(m2)
+ a2 = a.to_metadata(m2)
+ assert b2.c.x.references(a2.c.x)
+
+ def test_fk_w_no_colname_name_missing(self):
+ """test a ForeignKey that refers to table name only. the column
+ name is assumed to be the same col name on parent table.
+
+ this is a little used feature from long ago that nonetheless is
+ still in the code.
+
+ """
+ m1 = MetaData()
+ a = Table("a", m1, Column("x", Integer))
+ b = Table("b", m1, Column("y", Integer, ForeignKey("a")))
+
+ with expect_raises_message(
+ exc.NoReferencedColumnError,
+ "Could not initialize target column for ForeignKey 'a' on "
+ "table 'b': table 'a' has no column named 'y'",
+ ):
+ assert b.c.y.references(a.c.x)
+
def test_column_collection_constraint_w_ad_hoc_columns(self):
"""Test ColumnCollectionConstraint that has columns that aren't
part of the Table.