diff options
Diffstat (limited to 'lib/sqlalchemy/sql/elements.py')
-rw-r--r-- | lib/sqlalchemy/sql/elements.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py index 43115f117..7310edd3f 100644 --- a/lib/sqlalchemy/sql/elements.py +++ b/lib/sqlalchemy/sql/elements.py @@ -2823,14 +2823,11 @@ class TypeCoerce(WrapsColumnExpression, ColumnElement): renders SQL that labels the expression, but otherwise does not modify its value on the SQL side:: - SELECT date_string AS anon_1 FROM log + SELECT date_string AS date_string FROM log - When result rows are fetched, the ``StringDateTime`` type + When result rows are fetched, the ``StringDateTime`` type processor will be applied to result rows on behalf of the ``date_string`` column. - The rationale for the "anon_1" label is so that the type-coerced - column remains separate in the list of result columns vs. other - type-coerced or direct values of the target column. In order to - provide a named label for the expression, use + In order to provide a named label for the expression, use :meth:`_expression.ColumnElement.label`:: stmt = select([ @@ -2893,6 +2890,13 @@ class TypeCoerce(WrapsColumnExpression, ColumnElement): def wrapped_column_expression(self): return self.clause + def self_group(self, against=None): + grouped = self.clause.self_group(against=against) + if grouped is not self.clause: + return TypeCoerce(grouped, self.type) + else: + return self + class Extract(ColumnElement): """Represent a SQL EXTRACT clause, ``extract(field FROM expr)``.""" |