kwargs don't propagate to column-level expressions

Issue #2593 resolved
Mike Bayer repo owner created an issue

hit this myself the other day and someone else is also.

from sqlalchemy import *
from sqlalchemy.sql import column
from sqlalchemy.engine import default


s = select([== 5, 7)](case([(column('x')))])

compiler = s._compiler(default.DefaultDialect())

print compiler.process(s, literal_binds=True)




#!diff
diff -r 2484ef34c27f3342e62bd6285bb3668e2c913090 lib/sqlalchemy/sql/compiler.py
--- a/lib/sqlalchemy/sql/compiler.py    Mon Oct 15 20:07:13 2012 -0400
+++ b/lib/sqlalchemy/sql/compiler.py    Tue Oct 16 00:32:46 2012 -0400
@@ -1044,9 +1044,12 @@
         else:
             result_expr = col_expr

+        column_clause_args.update(
+                    within_columns_clause=within_columns_clause,
+                    add_to_result_map=add_to_result_map
+                )
         return result_expr._compiler_dispatch(
-                       self, within_columns_clause=within_columns_clause,
-                        add_to_result_map=add_to_result_map,
+                       self,
                         **column_clause_args
                     )

@@ -1093,7 +1096,8 @@
         self.stack.append({'from': correlate_froms,
                             'iswrapper': iswrapper})

-        column_clause_args = {'positional_names': positional_names}
+        column_clause_args = kwargs.copy()
+        column_clause_args.update({'positional_names': positional_names})

         # the actual list of columns to print in the SELECT column list.
         inner_columns = [

Comments (2)

  1. Log in to comment