summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/compiler.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-10-16 16:03:59 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-10-16 16:03:59 +0000
commit9b22fc0a9b5a6e97129096dd5ee8b3eb24895ac4 (patch)
tree798ca0b3fdffe8c045e50e09793ffbfc0adb032e /lib/sqlalchemy/sql/compiler.py
parent9226871456014f1283633ead19fac23487a0e429 (diff)
downloadsqlalchemy-9b22fc0a9b5a6e97129096dd5ee8b3eb24895ac4.tar.gz
- Fixed SQL compiler's awareness of top-level column labels as used
in result-set processing; nested selects which contain the same column names don't affect the result or conflict with result-column metadata. - query.get() and related functions (like many-to-one lazyloading) use compile-time-aliased bind parameter names, to prevent name conflicts with bind parameters that already exist in the mapped selectable.
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
-rw-r--r--lib/sqlalchemy/sql/compiler.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py
index 05c7a5cf4..5572c2ed4 100644
--- a/lib/sqlalchemy/sql/compiler.py
+++ b/lib/sqlalchemy/sql/compiler.py
@@ -240,7 +240,7 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor):
def visit_label(self, label):
labelname = self._truncated_identifier("colident", label.name)
- if self.stack and self.stack[-1].get('select'):
+ if len(self.stack) == 1 and self.stack[-1].get('select'):
self.typemap.setdefault(labelname.lower(), label.obj.type)
if isinstance(label.obj, sql._ColumnClause):
self.column_labels[label.obj._label] = labelname
@@ -258,7 +258,7 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor):
else:
name = column.name
- if self.stack and self.stack[-1].get('select'):
+ if len(self.stack) == 1 and self.stack[-1].get('select'):
# if we are within a visit to a Select, set up the "typemap"
# for this column which is used to translate result set values
self.typemap.setdefault(name.lower(), column.type)