Skip to content

Commit b8eac84

Browse files
committed
Merge pull request #1675 from tseaver/1673-bigquery-reify_query_job
Cache job constructed for a synchronous query.
2 parents 7aafecd + b53fec5 commit b8eac84

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

gcloud/bigquery/query.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def __init__(self, query, client):
5050
self._properties = {}
5151
self.query = query
5252
self._configuration = _SyncQueryConfiguration()
53+
self._job = None
5354

5455
@property
5556
def project(self):
@@ -134,9 +135,12 @@ def job(self):
134135
:returns: Job instance used to run the query (None until
135136
``jobReference`` property is set by the server).
136137
"""
137-
job_ref = self._properties.get('jobReference')
138-
if job_ref is not None:
139-
return QueryJob(job_ref['jobId'], self.query, self._client)
138+
if self._job is None:
139+
job_ref = self._properties.get('jobReference')
140+
if job_ref is not None:
141+
self._job = QueryJob(job_ref['jobId'], self.query,
142+
self._client)
143+
return self._job
140144

141145
@property
142146
def page_token(self):

gcloud/bigquery/test_query.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ def test_job_w_jobid(self):
156156
self.assertEqual(job.query, self.QUERY)
157157
self.assertTrue(job._client is client)
158158
self.assertEqual(job.name, SERVER_GENERATED)
159+
fetched_later = query.job
160+
self.assertTrue(fetched_later is job)
159161

160162
def test_schema(self):
161163
client = _Client(self.PROJECT)

0 commit comments

Comments
 (0)