Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: error using empty array of structs parameter #474

Merged
merged 15 commits into from Feb 24, 2021

Conversation

plamut
Copy link
Contributor

@plamut plamut commented Jan 19, 2021

Fixes #463.

This PR adds an optional type info parameter to ArrayQueryParameter so that array query parameters with STRUCT items can be used in queries even if they are empty. This is a solution similar to the one used in e.g. the Ruby client.

(for non-struct items the type can always be determined by using the array_type argument)

PR checklist:

  • Make sure to open an issue as a bug/issue before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)

@plamut plamut requested review from a team and stephaniewang526 and removed request for a team January 19, 2021 12:43
@product-auto-label product-auto-label bot added the api: bigquery Issues related to the googleapis/python-bigquery API. label Jan 19, 2021
@google-cla google-cla bot added the cla: yes This human has signed the Contributor License Agreement. label Jan 19, 2021
@plamut plamut added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Jan 19, 2021
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Jan 19, 2021
google/cloud/bigquery/query.py Outdated Show resolved Hide resolved
@plamut plamut requested a review from tswast February 4, 2021 12:03
google/cloud/bigquery/query.py Outdated Show resolved Hide resolved
google/cloud/bigquery/query.py Show resolved Hide resolved
raise NotImplementedError


class ScalarQueryParameterType(_AbstractQueryParameterType):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we should do this in this PR, but I'm tempted to ask for an additional set of constants in google.cloud.bigquery.enums that has all the scalar types defined as objects (without name & description). I imagine that will be useful when we eventually create an "array of structs query parameter" code sample.

Copy link
Contributor Author

@plamut plamut Feb 20, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds reasonable, let's do it in a follow-up PR. 👍

Edit: It's actually very straightforward (if I understood it correctly, that is), thus added that in an extra commit.

google/cloud/bigquery/query.py Outdated Show resolved Hide resolved
google/cloud/bigquery/query.py Outdated Show resolved Hide resolved
@plamut plamut requested a review from tswast February 20, 2021 12:15
@@ -215,6 +216,26 @@ class SqlTypeNames(str, enum.Enum):
DATETIME = "DATETIME"


class SqlParameterScalarTypes:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beautiful!

@tswast tswast merged commit c1d15f4 into googleapis:master Feb 24, 2021
gcf-merge-on-green bot pushed a commit that referenced this pull request Feb 25, 2021
🤖 I have created a release \*beep\* \*boop\* 
---
## [2.10.0](https://www.github.com/googleapis/python-bigquery/compare/v2.9.0...v2.10.0) (2021-02-25)


### Features

* add BIGNUMERIC support ([#527](https://www.github.com/googleapis/python-bigquery/issues/527)) ([cc3394f](https://www.github.com/googleapis/python-bigquery/commit/cc3394f80934419eb00c2029bb81c92a696e7d88))


### Bug Fixes

* error using empty array of structs parameter ([#474](https://www.github.com/googleapis/python-bigquery/issues/474)) ([c1d15f4](https://www.github.com/googleapis/python-bigquery/commit/c1d15f4e5da4b7e10c00afffd59a5c7f3ded027a))
* QueryJob.exception() *returns* the errors, not raises them ([#467](https://www.github.com/googleapis/python-bigquery/issues/467)) ([d763279](https://www.github.com/googleapis/python-bigquery/commit/d7632799769248b09a8558ba18f5025ebdd9675a))


### Documentation

* **bigquery:** Add alternative approach to setting credentials ([#517](https://www.github.com/googleapis/python-bigquery/issues/517)) ([60fbf28](https://www.github.com/googleapis/python-bigquery/commit/60fbf287b0d34d5db2e61cce7a5b42735ed43d0e))
* explain retry behavior for DONE jobs ([#532](https://www.github.com/googleapis/python-bigquery/issues/532)) ([696c443](https://www.github.com/googleapis/python-bigquery/commit/696c443f0a6740be0767e12b706a7771bc1460c3))
---


This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
@plamut plamut deleted the iss-463 branch February 26, 2021 07:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: bigquery Issues related to the googleapis/python-bigquery API. cla: yes This human has signed the Contributor License Agreement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support arrays of record/structs as query parameters
3 participants