This is an automated email from the ASF dual-hosted git repository.

shahar1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new d711e88dc63 Add persist_xcom option to BigQueryInsertJobOperator 
(#66760)
d711e88dc63 is described below

commit d711e88dc63aaf843809bc6a591ddb3c4d73d39e
Author: Ulada Zakharava <[email protected]>
AuthorDate: Wed May 13 20:12:12 2026 +0200

    Add persist_xcom option to BigQueryInsertJobOperator (#66760)
---
 .../providers/google/cloud/operators/bigquery.py   |  7 +++++-
 providers/google/tests/deprecations_ignore.yml     |  1 +
 .../unit/google/cloud/operators/test_bigquery.py   | 28 ++++++++++++++++++++++
 3 files changed, 35 insertions(+), 1 deletion(-)

diff --git 
a/providers/google/src/airflow/providers/google/cloud/operators/bigquery.py 
b/providers/google/src/airflow/providers/google/cloud/operators/bigquery.py
index 120350d5b39..dbce35b85b7 100644
--- a/providers/google/src/airflow/providers/google/cloud/operators/bigquery.py
+++ b/providers/google/src/airflow/providers/google/cloud/operators/bigquery.py
@@ -2505,13 +2505,18 @@ class 
BigQueryInsertJobOperator(GoogleCloudBaseOperator, _BigQueryInsertJobOpera
                             BigQueryTableLink.persist(**persist_kwargs)
 
         self.job_id = job.job_id
-
         if self.project_id:
             job_id_path = convert_job_id(
                 job_id=self.job_id,
                 project_id=self.project_id,
                 location=self.location,
             )
+            warnings.warn(
+                "BigQueryInsertJobOperator's `job_id_path` XCom is deprecated 
and will be removed in a "
+                "future provider release. Use the operator return value or 
BigQuery job extra link instead.",
+                AirflowProviderDeprecationWarning,
+                stacklevel=2,
+            )
             context["ti"].xcom_push(key="job_id_path", value=job_id_path)
 
         persist_kwargs = {
diff --git a/providers/google/tests/deprecations_ignore.yml 
b/providers/google/tests/deprecations_ignore.yml
index d07c6bdfc21..2701b0e17f0 100644
--- a/providers/google/tests/deprecations_ignore.yml
+++ b/providers/google/tests/deprecations_ignore.yml
@@ -58,6 +58,7 @@
 - 
providers/google/tests/unit/google/cloud/hooks/test_bigquery.py::TestTimePartitioningInRunJob::test_run_with_auto_detect
 - 
providers/google/tests/unit/google/cloud/hooks/test_gcs.py::TestGCSHook::test_list__error_match_glob_and_invalid_delimiter
 - 
providers/google/tests/unit/google/cloud/operators/test_dataproc.py::TestDataprocClusterScaleOperator::test_execute
+- 
providers/google/tests/unit/google/cloud/operators/test_bigquery.py::TestBigQueryInsertJobOperator
 - 
providers/google/tests/unit/google/cloud/operators/test_dataproc.py::test_create_cluster_operator_extra_links
 - 
providers/google/tests/unit/google/cloud/operators/test_dataproc.py::test_scale_cluster_operator_extra_links
 - 
providers/google/tests/unit/google/cloud/operators/test_dataproc.py::test_submit_spark_job_operator_extra_links
diff --git 
a/providers/google/tests/unit/google/cloud/operators/test_bigquery.py 
b/providers/google/tests/unit/google/cloud/operators/test_bigquery.py
index f857c6713d4..537599304fc 100644
--- a/providers/google/tests/unit/google/cloud/operators/test_bigquery.py
+++ b/providers/google/tests/unit/google/cloud/operators/test_bigquery.py
@@ -30,6 +30,7 @@ from google.cloud.bigquery import DEFAULT_RETRY, 
ScalarQueryParameter, Table
 from google.cloud.bigquery.routine import Routine
 from google.cloud.exceptions import Conflict
 
+from airflow.exceptions import AirflowProviderDeprecationWarning
 from airflow.providers.common.compat.openlineage.facet import (
     DocumentationDatasetFacet,
     ErrorMessageRunFacet,
@@ -1030,6 +1031,33 @@ class TestBigQueryInsertJobOperator:
 
         assert result == real_job_id
 
+    
@mock.patch("airflow.providers.google.cloud.operators.bigquery.BigQueryHook")
+    def test_execute_pushes_deprecated_job_id_path_xcom(self, mock_hook):
+        job_id = "123456"
+        real_job_id = f"{job_id}_hash"
+
+        configuration = {
+            "query": {
+                "query": "SELECT * FROM any",
+                "useLegacySql": False,
+            }
+        }
+        job = MagicMock(state="DONE", job_id=real_job_id, error_result=False)
+        job.to_api_repr.return_value = {"configuration": {"query": {}}}
+        mock_hook.return_value.insert_job.return_value = job
+        mock_hook.return_value.generate_job_id.return_value = real_job_id
+
+        op = BigQueryInsertJobOperator(
+            task_id="insert_query_job",
+            configuration=configuration,
+            location=TEST_DATASET_LOCATION,
+            job_id=job_id,
+            project_id=TEST_GCP_PROJECT_ID,
+        )
+
+        with pytest.warns(AirflowProviderDeprecationWarning, 
match="`job_id_path` XCom is deprecated"):
+            op.execute(context=MagicMock())
+
     
@mock.patch("airflow.providers.google.cloud.operators.bigquery.BigQueryHook")
     def test_execute_copy_success(self, mock_hook):
         job_id = "123456"

Reply via email to