:ref:`change_3919`
+ .. change:: 3939
+ :tags: bug, sql
+ :tickets: 3939
+
+ Fixed bug where the use of an :class:`.Alias` object in a column
+ context would raise an argument error when it tried to group itself
+ into a parenthesized expression. Using :class:`.Alias` in this way
+ is not yet a fully supported API, however it applies to some end-user
+ recipes and may have a more prominent role in support of some
+ future Postgresql features.
+
.. change:: 3366
:tags: bug, orm
:tickets: 3366
or 'anon'))
self.name = name
- def self_group(self, target=None):
- if isinstance(target, CompoundSelect) and \
+ def self_group(self, against=None):
+ if isinstance(against, CompoundSelect) and \
isinstance(self.original, Select) and \
self.original._needs_parens_for_grouping():
return FromGrouping(self)
- return super(Alias, self).self_group(target)
+ return super(Alias, self).self_group(against=against)
@property
def description(self):
n + 1, len(s.c._all_columns))
)
- self.selects.append(s.self_group(self))
+ self.selects.append(s.self_group(against=self))
GenerativeSelect.__init__(self, **kwargs)
criterion = a.c.col1 == table2.c.col2
self.assert_(criterion.compare(j.onclause))
+ def test_alias_handles_column_context(self):
+ # not quite a use case yet but this is expected to become
+ # prominent w/ Postgresql's tuple functions
+
+ stmt = select([table1.c.col1, table1.c.col2])
+ a = stmt.alias('a')
+ self.assert_compile(
+ select([func.foo(a)]),
+ "SELECT foo(SELECT table1.col1, table1.col2 FROM table1) "
+ "AS foo_1 FROM "
+ "(SELECT table1.col1 AS col1, table1.col2 AS col2 FROM table1) "
+ "AS a"
+ )
+
def test_union(self):
# tests that we can correspond a column in a Select statement