Skip to content

BigQuery: query_parameters fails if None is bound as parameter #9027

@peku33

Description

@peku33

OS Type & Version: Ubuntu 19.04 x64
Python version: Python 3.7.3
Packges: latest up to this date:

'google-cloud-bigquery==1.18.0',

Steps to reproduce

  1. Create a query, bind None (NULL) as parameter
  2. Execute it
  3. Call query_parameters

Code example

from google.cloud import bigquery

client = bigquery.Client.from_service_account_json(
    <...>
)
job = client.query(
    "SELECT LOWER(@none_value)",
    job_config=bigquery.QueryJobConfig(
        query_parameters=[
            bigquery.ScalarQueryParameter('none_value', 'STRING', None)
        ]
    )
)
result = list(job.result())
query_parameters = job.query_parameters

Stack trace

Traceback (most recent call last):
  File "test.py", line 16, in <module>
    query_parameters = job.query_parameters
  File "/test/venv/lib/python3.7/site-packages/google/cloud/bigquery/job.py", line 2472, in query_parameters
    return self._configuration.query_parameters
  File "/test/venv/lib/python3.7/site-packages/google/cloud/bigquery/job.py", line 2200, in query_parameters
    return _from_api_repr_query_parameters(prop)
  File "/test/venv/lib/python3.7/site-packages/google/cloud/bigquery/job.py", line 1965, in _from_api_repr_query_parameters
    return [_query_param_from_api_repr(mapping) for mapping in resource]
  File "/test/venv/lib/python3.7/site-packages/google/cloud/bigquery/job.py", line 1965, in <listcomp>
    return [_query_param_from_api_repr(mapping) for mapping in resource]
  File "/test/venv/lib/python3.7/site-packages/google/cloud/bigquery/query.py", line 625, in _query_param_from_api_repr
    return klass.from_api_repr(resource)
  File "/test/venv/lib/python3.7/site-packages/google/cloud/bigquery/query.py", line 129, in from_api_repr
    value = resource["parameterValue"]["value"]
KeyError: 'parameterValue'

This is related to #7309

Metadata

Metadata

Assignees

Labels

api: bigqueryIssues related to the BigQuery API.priority: p2Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions