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.