]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Repair anonymous label comparison
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 18 May 2019 21:39:22 +0000 (17:39 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 18 May 2019 21:40:30 +0000 (17:40 -0400)
Add a test for comparison of named labels vs. anonymous

Change-Id: I57ada3cf79d982ff32a298cf73a748d353b63dac

lib/sqlalchemy/sql/clause_compare.py
test/sql/test_compare.py

index 87f9fb2df5a99b9e49aa5f5e26d058936730c4f3..0ea981f1e2519b010b9fe680c7247fb960a107aa 100644 (file)
@@ -228,7 +228,7 @@ class StructureComparatorStrategy(object):
     def compare_label(self, elements, left, right, **kw):
         return left._type._compare_type_affinity(right._type) and (
             left.name == right.name
-            if not isinstance(left, elements._anonymous_label)
+            if not isinstance(left.name, elements._anonymous_label)
             else isinstance(right.name, elements._anonymous_label)
         )
 
index 67072a64072b35426528137eb5ce61d6911c2a82..3608851ed6e79b2ab2c55c5cc04c0918d5bad8d3 100644 (file)
@@ -562,6 +562,17 @@ class CompareClausesTest(fixtures.TestBase):
 
         is_false(l1.compare(l2))
 
+    def test_compare_labels(self):
+        is_true(column("q").label(None).compare(column("q").label(None)))
+
+        is_false(column("q").label("foo").compare(column("q").label(None)))
+
+        is_false(column("q").label(None).compare(column("q").label("foo")))
+
+        is_false(column("q").label("foo").compare(column("q").label("bar")))
+
+        is_true(column("q").label("foo").compare(column("q").label("foo")))
+
     def test_compare_binds(self):
         b1 = bindparam("foo", type_=Integer())
         b2 = bindparam("foo", type_=Integer())