summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2019-05-18 17:39:22 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2019-05-18 17:40:30 -0400
commit614dfb5f5b5a2427d5d6ce0bc5f34bf0581bf698 (patch)
treebf0f098f5651d75f3b478481bedbe10a36716364
parent69ebf2cc365baf82016c9d1672fe89e39594b523 (diff)
downloadsqlalchemy-614dfb5f5b5a2427d5d6ce0bc5f34bf0581bf698.tar.gz
Repair anonymous label comparison
Add a test for comparison of named labels vs. anonymous Change-Id: I57ada3cf79d982ff32a298cf73a748d353b63dac
-rw-r--r--lib/sqlalchemy/sql/clause_compare.py2
-rw-r--r--test/sql/test_compare.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/clause_compare.py b/lib/sqlalchemy/sql/clause_compare.py
index 87f9fb2df..0ea981f1e 100644
--- a/lib/sqlalchemy/sql/clause_compare.py
+++ b/lib/sqlalchemy/sql/clause_compare.py
@@ -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)
)
diff --git a/test/sql/test_compare.py b/test/sql/test_compare.py
index 67072a640..3608851ed 100644
--- a/test/sql/test_compare.py
+++ b/test/sql/test_compare.py
@@ -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())