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"