summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
Diffstat (limited to 'test/sql')
-rw-r--r--test/sql/test_compiler.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/test/sql/test_compiler.py b/test/sql/test_compiler.py
index 5ea1110c6..c273dbbf8 100644
--- a/test/sql/test_compiler.py
+++ b/test/sql/test_compiler.py
@@ -5624,6 +5624,78 @@ class SchemaTest(fixtures.TestBase, AssertsCompiledSQL):
render_schema_translate=True,
)
+ def test_schema_non_schema_disambiguation(self):
+ """test #7471"""
+
+ t1 = table("some_table", column("id"), column("q"))
+ t2 = table("some_table", column("id"), column("p"), schema="foo")
+
+ self.assert_compile(
+ select(t1, t2),
+ "SELECT some_table_1.id, some_table_1.q, "
+ "foo.some_table.id AS id_1, foo.some_table.p "
+ "FROM some_table AS some_table_1, foo.some_table",
+ )
+
+ self.assert_compile(
+ select(t1, t2).set_label_style(LABEL_STYLE_TABLENAME_PLUS_COL),
+ # the original "tablename_colname" label is preserved despite
+ # the alias of some_table
+ "SELECT some_table_1.id AS some_table_id, some_table_1.q AS "
+ "some_table_q, foo.some_table.id AS foo_some_table_id, "
+ "foo.some_table.p AS foo_some_table_p "
+ "FROM some_table AS some_table_1, foo.some_table",
+ )
+
+ self.assert_compile(
+ select(t1, t2).join_from(t1, t2, t1.c.id == t2.c.id),
+ "SELECT some_table_1.id, some_table_1.q, "
+ "foo.some_table.id AS id_1, foo.some_table.p "
+ "FROM some_table AS some_table_1 "
+ "JOIN foo.some_table ON some_table_1.id = foo.some_table.id",
+ )
+
+ self.assert_compile(
+ select(t1, t2).where(t1.c.id == t2.c.id),
+ "SELECT some_table_1.id, some_table_1.q, "
+ "foo.some_table.id AS id_1, foo.some_table.p "
+ "FROM some_table AS some_table_1, foo.some_table "
+ "WHERE some_table_1.id = foo.some_table.id",
+ )
+
+ self.assert_compile(
+ select(t1).where(t1.c.id == t2.c.id),
+ "SELECT some_table_1.id, some_table_1.q "
+ "FROM some_table AS some_table_1, foo.some_table "
+ "WHERE some_table_1.id = foo.some_table.id",
+ )
+
+ subq = select(t1).where(t1.c.id == t2.c.id).subquery()
+ self.assert_compile(
+ select(t2).select_from(t2).join(subq, t2.c.id == subq.c.id),
+ "SELECT foo.some_table.id, foo.some_table.p "
+ "FROM foo.some_table JOIN "
+ "(SELECT some_table_1.id AS id, some_table_1.q AS q "
+ "FROM some_table AS some_table_1, foo.some_table "
+ "WHERE some_table_1.id = foo.some_table.id) AS anon_1 "
+ "ON foo.some_table.id = anon_1.id",
+ )
+
+ self.assert_compile(
+ select(t1, subq.c.id)
+ .select_from(t1)
+ .join(subq, t1.c.id == subq.c.id),
+ # some_table is only aliased inside the subquery. this is not
+ # any challenge for the compiler, just checking as this is a new
+ # source of aliasing.
+ "SELECT some_table.id, some_table.q, anon_1.id AS id_1 "
+ "FROM some_table "
+ "JOIN (SELECT some_table_1.id AS id, some_table_1.q AS q "
+ "FROM some_table AS some_table_1, foo.some_table "
+ "WHERE some_table_1.id = foo.some_table.id) AS anon_1 "
+ "ON some_table.id = anon_1.id",
+ )
+
def test_alias(self):
a = alias(table4, "remtable")
self.assert_compile(