summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-07-29 18:17:43 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2016-07-30 10:11:53 -0400
commit6327c59d4f34947128bd9b2860a1732a6932b4d7 (patch)
tree8b68fce14fa450737c6278437f2af75fb7095e1e /lib
parente467e899e126db2db7c25d533aee12d78c2dbdfb (diff)
downloadsqlalchemy-6327c59d4f34947128bd9b2860a1732a6932b4d7.tar.gz
Index should extract __clause_element__() early
Fixed bug where :class:`.Index` would fail to extract columns from compound SQL expressions if those SQL expressions were wrapped inside of an ORM-style ``__clause_element__()`` construct. This bug exists in 1.0.x as well, however in 1.1 is more noticeable as hybrid_property @expression now returns a wrapped element. Fixes: #3763 Change-Id: I992536386503a1fb3f2305790abe008d72c44c4a
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/sql/schema.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py
index 55d0b74e6..2c5daa17c 100644
--- a/lib/sqlalchemy/sql/schema.py
+++ b/lib/sqlalchemy/sql/schema.py
@@ -2505,7 +2505,10 @@ class ColumnCollectionMixin(object):
for expr in expressions:
strname = None
column = None
- if not isinstance(expr, ClauseElement):
+ if hasattr(expr, '__clause_element__'):
+ expr = expr.__clause_element__()
+
+ if not isinstance(expr, (ColumnElement, TextClause)):
# this assumes a string
strname = expr
else: