From 77d15e70230b1541e9e32266ac52720a6ed56aa7 Mon Sep 17 00:00:00 2001 From: chalmer lowe Date: Mon, 11 May 2026 13:40:43 -0400 Subject: [PATCH 1/2] fix(sqlalchemy-bigquery): update literal binds test for SQLAlchemy 2.0 Removes the skip for SQLAlchemy >= 2.0 on test_compiled_query_literal_binds. Modifies the test to wrap the compiled query in sqlalchemy.text(str(compiled)) before execution, as passing a Compiled object directly to Connection.execute() is not supported in SQLAlchemy 2.0. Fixes sqlalchemy-bigquery portion of Issue #16042. --- .../tests/system/test_sqlalchemy_bigquery.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/sqlalchemy-bigquery/tests/system/test_sqlalchemy_bigquery.py b/packages/sqlalchemy-bigquery/tests/system/test_sqlalchemy_bigquery.py index 25b8b04618a0..39a2aceed79a 100644 --- a/packages/sqlalchemy-bigquery/tests/system/test_sqlalchemy_bigquery.py +++ b/packages/sqlalchemy-bigquery/tests/system/test_sqlalchemy_bigquery.py @@ -481,17 +481,13 @@ def test_custom_expression( assert len(result) > 0 -@pytest.mark.skipif( - SQLALCHEMY_VERSION >= packaging.version.parse("2.0"), - reason="Needs to be revisited as part of ensuring full SQL 2.0 compliance.", -) def test_compiled_query_literal_binds( engine, engine_using_test_dataset, table, table_using_test_dataset, query ): q = query(table) compiled = q.compile(engine, compile_kwargs={"literal_binds": True}) with engine.connect() as conn: - result = conn.execute(compiled).fetchall() + result = conn.execute(sqlalchemy.text(str(compiled))).fetchall() assert len(result) > 0 q = query(table_using_test_dataset) @@ -499,7 +495,7 @@ def test_compiled_query_literal_binds( engine_using_test_dataset, compile_kwargs={"literal_binds": True} ) with engine_using_test_dataset.connect() as conn: - result = conn.execute(compiled).fetchall() + result = conn.execute(sqlalchemy.text(str(compiled))).fetchall() assert len(result) > 0 From e99039bf83fba6b321b36622662967c4cf4b50bf Mon Sep 17 00:00:00 2001 From: chalmer lowe Date: Mon, 11 May 2026 13:47:57 -0400 Subject: [PATCH 2/2] test(sqlalchemy-bigquery): update test to use exec_driver_sql per review --- .../tests/system/test_sqlalchemy_bigquery.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/sqlalchemy-bigquery/tests/system/test_sqlalchemy_bigquery.py b/packages/sqlalchemy-bigquery/tests/system/test_sqlalchemy_bigquery.py index 39a2aceed79a..757863f9637b 100644 --- a/packages/sqlalchemy-bigquery/tests/system/test_sqlalchemy_bigquery.py +++ b/packages/sqlalchemy-bigquery/tests/system/test_sqlalchemy_bigquery.py @@ -487,7 +487,10 @@ def test_compiled_query_literal_binds( q = query(table) compiled = q.compile(engine, compile_kwargs={"literal_binds": True}) with engine.connect() as conn: - result = conn.execute(sqlalchemy.text(str(compiled))).fetchall() + if hasattr(conn, "exec_driver_sql"): + result = conn.exec_driver_sql(str(compiled)).fetchall() + else: + result = conn.execute(compiled).fetchall() assert len(result) > 0 q = query(table_using_test_dataset) @@ -495,7 +498,10 @@ def test_compiled_query_literal_binds( engine_using_test_dataset, compile_kwargs={"literal_binds": True} ) with engine_using_test_dataset.connect() as conn: - result = conn.execute(sqlalchemy.text(str(compiled))).fetchall() + if hasattr(conn, "exec_driver_sql"): + result = conn.exec_driver_sql(str(compiled)).fetchall() + else: + result = conn.execute(compiled).fetchall() assert len(result) > 0