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
Merged

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 a review from as a code owner Jan 19, 2021
@plamut plamut requested review from stephaniewang526 and removed request for Jan 19, 2021
@google-cla google-cla bot added the cla: yes label Jan 19, 2021
google/cloud/bigquery/query.py Outdated Show resolved Hide resolved
Loading
@plamut plamut requested a review from tswast Feb 4, 2021
google/cloud/bigquery/query.py Outdated Show resolved Hide resolved
Loading
google/cloud/bigquery/query.py Show resolved Hide resolved
Loading
raise NotImplementedError


class ScalarQueryParameterType(_AbstractQueryParameterType):
Copy link
Contributor

@tswast tswast Feb 19, 2021

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.

Loading

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.

Loading

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


class SqlParameterScalarTypes:
Copy link
Contributor

@tswast tswast Feb 24, 2021

Choose a reason for hiding this comment

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

Beautiful!

Loading

@tswast tswast merged commit c1d15f4 into googleapis:master Feb 24, 2021
10 of 11 checks passed
Loading
gcf-merge-on-green bot pushed a commit that referenced this issue 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 Feb 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

3 participants