summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/compiler.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-02-21 22:46:31 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2016-02-21 22:46:31 -0500
commitaa9ce3f521f254da9879ede011e520ec35b8270e (patch)
treefa2601f7b1f11e60479a104e783d055c95e06eab /lib/sqlalchemy/sql/compiler.py
parentc87d0bff3ada6368512462211973980e52591f6f (diff)
downloadsqlalchemy-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.py5
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 = [