diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-02-21 22:46:31 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-02-21 22:46:31 -0500 |
| commit | aa9ce3f521f254da9879ede011e520ec35b8270e (patch) | |
| tree | fa2601f7b1f11e60479a104e783d055c95e06eab /lib/sqlalchemy/sql/compiler.py | |
| parent | c87d0bff3ada6368512462211973980e52591f6f (diff) | |
| download | sqlalchemy-aa9ce3f521f254da9879ede011e520ec35b8270e.tar.gz | |
- additional adjustment to the fix made in 8ad968f33100baeb3b13c7e0b724b6b79ab4277f
for ref #3657. The Oracle dialect makes more use of the "select_wraps_for"
feature than SQL server because Oracle doesn't have "TOP" for a limit-only
select, so tests are showing more happening here. In the case where
the select() has some dupe columns, these are deduped from the .c collection
so a positional match between the wrapper and original can't use .inner_columns,
because these collections wont match. Using _columns_plus_names
instead which is the deduped collection that determines the SELECT display,
which definitely have to match up.
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 3bbb79d55..9f5400455 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -1592,7 +1592,10 @@ class SQLCompiler(Compiled): # rewrite the targeted columns in the result map translate = dict( - zip(select.inner_columns, select_wraps_for.inner_columns) + zip( + [name for (key, name) in select._columns_plus_names], + [name for (key, name) in + select_wraps_for._columns_plus_names]) ) self._result_columns = [ |
