]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Add additional tests to verify _is_clone_of proxy level link
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 1 Aug 2019 17:27:43 +0000 (13:27 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 1 Aug 2019 20:26:02 +0000 (16:26 -0400)
The commit message in 896d47f318c5c27620fd6da is not accurate,
we do in fact still need _is_clone_of when a clone of a column is
created so that we can implement _cloned_set().  Additionally,
the linkage of _is_clone_of within make_proxy() also suits
an additional use case that seems to be related to [ticket:2419].
Adjust one of the tests which likely got changed within 1.4's
refactoring of Select to test this correctly.

Change-Id: I124c7c6b02498e2dfad9797816df42a5b6f91901

test/sql/test_generative.py

index 93e43551745e2dccb4f5de44d9509412ca779c08..8f06cf3db1a9932a684ea2a1c13d7139ea7dd7b4 100644 (file)
@@ -425,12 +425,13 @@ class ClauseTest(fixtures.TestBase, AssertsCompiledSQL):
         eq_(str(f1), str(f2))
 
     def test_aliased_cloned_schema_column_adapt_exported(self):
-        clause = select([t3.c.col1, func.foo(t3.c.col2).label("foo")])
-        c_sub = clause.subquery()
+        clause = select(
+            [t3.c.col1, func.foo(t3.c.col2).label("foo")]
+        ).subquery()
 
-        aliased1 = select([c_sub.c.col1, c_sub.c.foo]).subquery()
+        aliased1 = select([clause.c.col1, clause.c.foo]).subquery()
         aliased2 = clause
-        aliased2.selected_columns.col1, aliased2.selected_columns.foo
+        aliased2.c.col1, aliased2.c.foo
         aliased3 = cloned_traverse(aliased2, {}, {})
 
         # also fixed by [ticket:2419].  When we look at the
@@ -438,8 +439,8 @@ class ClauseTest(fixtures.TestBase, AssertsCompiledSQL):
         # have an _is_clone_of pointer.   But we now modified _make_proxy
         # to assign this.
         adapter = sql_util.ColumnAdapter(aliased1)
-        f1 = select([adapter.columns[c] for c in aliased2.selected_columns])
-        f2 = select([adapter.columns[c] for c in aliased3.selected_columns])
+        f1 = select([adapter.columns[c] for c in aliased2.c])
+        f2 = select([adapter.columns[c] for c in aliased3.c])
         eq_(str(f1), str(f2))
 
     def test_labeled_expression_adapt(self):