is the flag that per :ticket:`2992` causes an order by or group by
an expression that's also in the columns clause to be copied by
label, even if referenced as the expression object. The behavior
for MSSQL is now the old behavior that copies the whole expression
in by default, as MSSQL can be picky on these particularly in
GROUP BY expressions.
fixes #3338
- Add a test that includes a composed label in a GROUP BY
.. changelog::
:version: 1.0.0b4
+ .. change::
+ :tags: bug, mssql
+ :tickets: 3338
+
+ Turned off the "simple order by" flag on the MSSQL dialect; this
+ is the flag that per :ticket:`2992` causes an order by or group by
+ an expression that's also in the columns clause to be copied by
+ label, even if referenced as the expression object. The behavior
+ for MSSQL is now the old behavior that copies the whole expression
+ in by default, as MSSQL can be picky on these particularly in
+ GROUP BY expressions.
+
.. change::
:tags: feature, schema
:tickets: 3341
use_scope_identity = True
max_identifier_length = 128
schema_name = "dbo"
+ supports_simple_order_by_label = False
colspecs = {
sqltypes.DateTime: _MSDateTime,
[(7, ), (5, ), (3, )]
)
+ def test_group_by_composed(self):
+ table = self.tables.some_table
+ expr = (table.c.x + table.c.y).label('lx')
+ stmt = select([func.count(1), expr]).group_by(expr).order_by(expr)
+ self._assert_result(
+ stmt,
+ [(1, 3), (1, 5), (1, 7)]
+ )
+
class LimitOffsetTest(fixtures.TablesTest):
__backend__ = True