Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions google/cloud/bigquery/job/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -1554,6 +1554,8 @@ def result( # type: ignore # (incompatible with supertype)
)

first = True
if self.state is None:
self._begin(retry=retry, timeout=timeout)

def do_get_result():
nonlocal first
Expand Down Expand Up @@ -1581,14 +1583,18 @@ def do_get_result():
self._retry_do_query = retry_do_query
self._job_retry = job_retry

super(QueryJob, self).result(retry=retry, timeout=timeout)

# Since the job could already be "done" (e.g. got a finished job
# via client.get_job), the superclass call to done() might not
# set the self._query_results cache.
if self._query_results is None or not self._query_results.complete:
self._reload_query_results(retry=retry, timeout=timeout)

# jobs.getQueryResults should be called before jobs.get. The
# jobs.getQueryResults request will raise an exception for
# failed jobs. This means our job retry mechanism can start
# earlier without a wasted call to jobs.get.
super(QueryJob, self).result(retry=retry, timeout=timeout)

if retry_do_query is not None and job_retry is not None:
do_get_result = job_retry(do_get_result)

Expand Down