You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/06/24 08:41:13 UTC
(superset) branch master updated: fix(bigquery): preserve catalog in partition metadata lookup (#40200)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 7b9bcdd9518 fix(bigquery): preserve catalog in partition metadata lookup (#40200)
7b9bcdd9518 is described below
commit 7b9bcdd951880d9929765f5eee613dd0798ced65
Author: Puneet Dixit <pu...@gmail.com>
AuthorDate: Wed Jun 24 14:11:06 2026 +0530
fix(bigquery): preserve catalog in partition metadata lookup (#40200)
Co-authored-by: Puneet Dixit <rv...@rvei.edu.in>
Co-authored-by: Evan Rusackas <ev...@preset.io>
---
superset/db_engine_specs/bigquery.py | 5 ++++-
tests/unit_tests/db_engine_specs/test_bigquery.py | 24 +++++++++++++++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/superset/db_engine_specs/bigquery.py b/superset/db_engine_specs/bigquery.py
index 41e252afec0..e3bca315c59 100644
--- a/superset/db_engine_specs/bigquery.py
+++ b/superset/db_engine_specs/bigquery.py
@@ -512,7 +512,10 @@ class BigQueryEngineSpec(BaseEngineSpec): # pylint: disable=too-many-public-met
database, catalog=table.catalog, schema=table.schema
) as engine:
client = cls._get_client(engine, database)
- bq_table = client.get_table(f"{table.schema}.{table.table}")
+ table_ref = f"{table.schema}.{table.table}"
+ if table.catalog:
+ table_ref = f"{table.catalog}.{table_ref}"
+ bq_table = client.get_table(table_ref)
if bq_table.time_partitioning:
return bq_table.time_partitioning.field
diff --git a/tests/unit_tests/db_engine_specs/test_bigquery.py b/tests/unit_tests/db_engine_specs/test_bigquery.py
index ec4dcdc69c5..62b575b59cb 100644
--- a/tests/unit_tests/db_engine_specs/test_bigquery.py
+++ b/tests/unit_tests/db_engine_specs/test_bigquery.py
@@ -430,6 +430,30 @@ def test_get_default_catalog(mocker: MockerFixture) -> None:
assert BigQueryEngineSpec.get_default_catalog(database) == "project"
+def test_get_time_partition_column_uses_catalog_in_table_reference(
+ mocker: MockerFixture,
+) -> None:
+ """
+ Test that partition metadata lookup preserves the BigQuery project.
+ """
+ from superset.db_engine_specs.bigquery import BigQueryEngineSpec
+
+ database = mock.Mock()
+ engine = mock.MagicMock()
+ get_engine = mocker.patch.object(BigQueryEngineSpec, "get_engine")
+ get_engine.return_value.__enter__.return_value = engine
+ client = mocker.patch.object(BigQueryEngineSpec, "_get_client").return_value
+ client.get_table.return_value.time_partitioning.field = "ds"
+
+ result = BigQueryEngineSpec.get_time_partition_column(
+ database,
+ Table("my_table", "my_dataset", "other_project"),
+ )
+
+ assert result == "ds"
+ client.get_table.assert_called_once_with("other_project.my_dataset.my_table")
+
+
def test_adjust_engine_params_catalog_as_host() -> None:
"""
Test passing a custom catalog.