diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-07-19 16:10:15 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-07-19 16:10:15 +0000 |
| commit | d2513a54eb62f5e217eb738ecacb3b2058472228 (patch) | |
| tree | 7dac5a38dda6144d072a54adfb3c4ddaf7f26908 /lib/sqlalchemy/sql.py | |
| parent | bb188d2cce7ff380f8e5bfdf934bba694c6dcf20 (diff) | |
| download | sqlalchemy-d2513a54eb62f5e217eb738ecacb3b2058472228.tar.gz | |
fix to typing in clause construction which specifically helps
type issues with polymorphic_union (CAST/ColumnClause propigates
its type to proxy columns)
Diffstat (limited to 'lib/sqlalchemy/sql.py')
| -rw-r--r-- | lib/sqlalchemy/sql.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 8109d8cd5..e0b8866f6 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -985,7 +985,15 @@ class Cast(ColumnElement): visitor.visit_cast(self) def _get_from_objects(self): return self.clause._get_from_objects() - + def _make_proxy(self, selectable, name=None): + if name is not None: + co = ColumnClause(name, selectable, type=self.type) + co.orig_set = self.orig_set + selectable.columns[name]= co + return co + else: + return self + class FunctionGenerator(object): """generates Function objects based on getattr calls""" def __init__(self, engine=None): @@ -1210,7 +1218,7 @@ class ColumnClause(ColumnElement): def _bind_param(self, obj): return BindParamClause(self._label, obj, shortname = self.name, type=self.type) def _make_proxy(self, selectable, name = None): - c = ColumnClause(name or self.name, selectable, hidden=self.hidden) + c = ColumnClause(name or self.name, selectable, hidden=self.hidden, type=self.type) c.orig_set = self.orig_set if not self.hidden: selectable.columns[c.name] = c @@ -1349,7 +1357,6 @@ class CompoundSelect(SelectBaseMixin, FromClause): col = column._make_proxy(self, name=column._label) else: col = column._make_proxy(self, name=column.name) - try: colset = self._col_map[col.name] except KeyError: |
