From a0838e0c476f7deab5b67f431c8ce107974b9313 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 24 Sep 2007 19:27:52 +0000 Subject: - columns from Alias objects, when used to target result-row columns, must match exactly to the label used in the generated statement. This is so searching for columns in a result row which match aliases won't accidentally match non-aliased columns. fixes errors which can arise in eager loading scenarios. --- lib/sqlalchemy/sql/expression.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lib/sqlalchemy/sql/expression.py') diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index f7514fec9..dac5d7a74 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -2423,6 +2423,14 @@ class Alias(FromClause): def _get_from_objects(self, **modifiers): return [self] + def _proxy_column(self, column): + c = column._make_proxy(self) + # send a note to ResultProxy to not "approximate" + # this column based on its name when targeting result columns + # see test/sql/query.py QueryTest.test_exact_match + c._exact_match = True + return c + bind = property(lambda s: s.selectable.bind) class _ColumnElementAdapter(ColumnElement): -- cgit v1.2.1