summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/expression.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-06-27 18:54:02 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-06-27 18:54:02 -0400
commit63dbed1fd7421fd4f5cbf0bb2773f7faa8359651 (patch)
treed1a800dba12d888dac2fbb063193131f06d9e684 /lib/sqlalchemy/sql/expression.py
parent1006f1705169310477db073c2b66af1d20615c38 (diff)
downloadsqlalchemy-63dbed1fd7421fd4f5cbf0bb2773f7faa8359651.tar.gz
- Fixed a subtle bug involving column
correspondence in a selectable with the same column repeated. Affects [ticket:2188].
Diffstat (limited to 'lib/sqlalchemy/sql/expression.py')
-rw-r--r--lib/sqlalchemy/sql/expression.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py
index f78015ac2..9dd7bd335 100644
--- a/lib/sqlalchemy/sql/expression.py
+++ b/lib/sqlalchemy/sql/expression.py
@@ -2144,6 +2144,10 @@ class ColumnCollection(util.OrderedProperties):
'use_labels for select() statements.' % (key,
getattr(existing, 'table', None)))
self._all_cols.remove(existing)
+ # pop out memoized proxy_set as this
+ # operation may very well be occurring
+ # in a _make_proxy operation
+ value.__dict__.pop('proxy_set', None)
self._all_cols.add(value)
self._data[key] = value
@@ -2328,7 +2332,6 @@ class FromClause(Selectable):
"""
# dont dig around if the column is locally present
-
if self.c.contains_column(column):
return column
col, intersect = None, None
@@ -3873,6 +3876,7 @@ class ColumnClause(_Immutable, ColumnElement):
is_literal=is_literal
)
c.proxies = [self]
+
if attach:
selectable._columns[c.name] = c
return c