Skip to content

Commit efd11fe

Browse files
committed
add test cases from issue
1 parent 549002d commit efd11fe

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

pybigquery/sqlalchemy_bigquery.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,14 +186,16 @@ def visit_column(self, column, add_to_result_map=None,
186186
def visit_label(self, *args, within_group_by=False, **kwargs):
187187
# Use labels in GROUP BY clause.
188188
#
189-
# Flag set in the group_by_clause method. Works around missing equivalent to
190-
# supports_simple_order_by_label for group by.
189+
# Flag set in the group_by_clause method. Works around missing
190+
# equivalent to supports_simple_order_by_label for group by.
191191
if within_group_by:
192192
kwargs['render_label_as_label'] = args[0]
193193
return super(BigQueryCompiler, self).visit_label(*args, **kwargs)
194194

195195
def group_by_clause(self, select, **kw):
196-
return super(BigQueryCompiler, self).group_by_clause(select, **kw, within_group_by=True)
196+
return super(BigQueryCompiler, self).group_by_clause(
197+
select, **kw, within_group_by=True
198+
)
197199

198200

199201
class BigQueryTypeCompiler(GenericTypeCompiler):

test/test_sqlalchemy_bigquery.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,33 @@ def test_group_by(session, table, session_using_test_dataset, table_using_test_d
301301
assert len(result) > 0
302302

303303

304+
def test_nested_labels(engine, table):
305+
col = table.c.integer
306+
exprs = [
307+
sqlalchemy.func.sum(
308+
sqlalchemy.func.sum(col.label("inner")
309+
).label("outer")).over(),
310+
sqlalchemy.func.sum(
311+
sqlalchemy.case([[
312+
sqlalchemy.literal(True),
313+
col.label("inner"),
314+
]]).label("outer")
315+
),
316+
sqlalchemy.func.sum(
317+
sqlalchemy.func.sum(
318+
sqlalchemy.case([[
319+
sqlalchemy.literal(True), col.label("inner")
320+
]]).label("middle")
321+
).label("outer")
322+
).over(),
323+
]
324+
for expr in exprs:
325+
sql = str(expr.compile(engine))
326+
assert "inner" not in sql
327+
assert "middle" not in sql
328+
assert "outer" not in sql
329+
330+
304331
def test_session_query(session, table, session_using_test_dataset, table_using_test_dataset):
305332
for session, table in [(session, table), (session_using_test_dataset, table_using_test_dataset)]:
306333
col_concat = func.concat(table.c.string).label('concat')

0 commit comments

Comments
 (0)