-
Notifications
You must be signed in to change notification settings - Fork 315
feat: support ScalarQueryParameterType
for type_
argument in ScalarQueryParameter
constructor
#850
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
Changes from all commits
e9475d4
9f4f6e2
93e153b
7599f25
4bca752
cdd18d8
e447953
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -259,23 +259,23 @@ class SqlTypeNames(str, enum.Enum): | |
class SqlParameterScalarTypes: | ||
"""Supported scalar SQL query parameter types as type objects.""" | ||
|
||
STRING = ScalarQueryParameterType("STRING") | ||
BOOL = ScalarQueryParameterType("BOOL") | ||
BOOLEAN = ScalarQueryParameterType("BOOL") | ||
BIGDECIMAL = ScalarQueryParameterType("BIGNUMERIC") | ||
BIGNUMERIC = ScalarQueryParameterType("BIGNUMERIC") | ||
BYTES = ScalarQueryParameterType("BYTES") | ||
INTEGER = ScalarQueryParameterType("INT64") | ||
INT64 = ScalarQueryParameterType("INT64") | ||
DATE = ScalarQueryParameterType("DATE") | ||
DATETIME = ScalarQueryParameterType("DATETIME") | ||
DECIMAL = ScalarQueryParameterType("NUMERIC") | ||
FLOAT = ScalarQueryParameterType("FLOAT64") | ||
FLOAT64 = ScalarQueryParameterType("FLOAT64") | ||
NUMERIC = ScalarQueryParameterType("NUMERIC") | ||
BIGNUMERIC = ScalarQueryParameterType("BIGNUMERIC") | ||
DECIMAL = ScalarQueryParameterType("NUMERIC") | ||
BIGDECIMAL = ScalarQueryParameterType("BIGNUMERIC") | ||
BOOLEAN = ScalarQueryParameterType("BOOL") | ||
BOOL = ScalarQueryParameterType("BOOL") | ||
GEOGRAPHY = ScalarQueryParameterType("GEOGRAPHY") | ||
TIMESTAMP = ScalarQueryParameterType("TIMESTAMP") | ||
DATE = ScalarQueryParameterType("DATE") | ||
INT64 = ScalarQueryParameterType("INT64") | ||
INTEGER = ScalarQueryParameterType("INT64") | ||
NUMERIC = ScalarQueryParameterType("NUMERIC") | ||
STRING = ScalarQueryParameterType("STRING") | ||
TIME = ScalarQueryParameterType("TIME") | ||
DATETIME = ScalarQueryParameterType("DATETIME") | ||
TIMESTAMP = ScalarQueryParameterType("TIMESTAMP") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn't INTERVAL too a scalar? Or why don't we include it here in this class? (can also be done in the #840 if out of scope here) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It can't actually at the moment. When I tried in a system test, I got a backend error. The team is aware and fixing it in internal issue 195050789 |
||
|
||
|
||
class WriteDisposition(object): | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,14 +16,21 @@ | |
|
||
from collections import OrderedDict | ||
import copy | ||
from typing import Union | ||
import datetime | ||
import decimal | ||
from typing import Optional, Union | ||
|
||
from google.cloud.bigquery.table import _parse_schema_resource | ||
from google.cloud.bigquery._helpers import _rows_from_json | ||
from google.cloud.bigquery._helpers import _QUERY_PARAMS_FROM_JSON | ||
from google.cloud.bigquery._helpers import _SCALAR_VALUE_TO_JSON_PARAM | ||
|
||
|
||
_SCALAR_VALUE_TYPE = Optional[ | ||
Union[str, int, float, decimal.Decimal, bool, datetime.datetime, datetime.date] | ||
] | ||
|
||
|
||
class UDFResource(object): | ||
"""Describe a single user-defined function (UDF) resource. | ||
|
||
|
@@ -325,35 +332,46 @@ class ScalarQueryParameter(_AbstractQueryParameter): | |
"""Named / positional query parameters for scalar values. | ||
|
||
Args: | ||
name (Optional[str]): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
name: | ||
Parameter name, used via ``@foo`` syntax. If None, the | ||
parameter can only be addressed via position (``?``). | ||
|
||
type_ (str): | ||
Name of parameter type. One of 'STRING', 'INT64', | ||
'FLOAT64', 'NUMERIC', 'BIGNUMERIC', 'BOOL', 'TIMESTAMP', 'DATETIME', or | ||
'DATE'. | ||
type_: | ||
Name of parameter type. See | ||
:class:`google.cloud.bigquery.enums.SqlTypeNames` and | ||
:class:`google.cloud.bigquery.enums.SqlParameterScalarTypes` for | ||
supported types. | ||
|
||
value (Union[str, int, float, decimal.Decimal, bool, datetime.datetime, datetime.date]): | ||
value: | ||
The scalar parameter value. | ||
""" | ||
|
||
def __init__(self, name, type_, value): | ||
def __init__( | ||
self, | ||
name: Optional[str], | ||
type_: Optional[Union[str, ScalarQueryParameterType]], | ||
value: _SCALAR_VALUE_TYPE, | ||
): | ||
self.name = name | ||
self.type_ = type_ | ||
if isinstance(type_, ScalarQueryParameterType): | ||
self.type_ = type_._type | ||
else: | ||
self.type_ = type_ | ||
self.value = value | ||
|
||
@classmethod | ||
def positional(cls, type_: str, value) -> "ScalarQueryParameter": | ||
def positional( | ||
cls, type_: Union[str, ScalarQueryParameterType], value: _SCALAR_VALUE_TYPE | ||
) -> "ScalarQueryParameter": | ||
"""Factory for positional paramater. | ||
|
||
Args: | ||
type_ (str): | ||
type_: | ||
Name of parameter type. One of 'STRING', 'INT64', | ||
'FLOAT64', 'NUMERIC', 'BIGNUMERIC', 'BOOL', 'TIMESTAMP', 'DATETIME', or | ||
'DATE'. | ||
|
||
value (Union[str, int, float, decimal.Decimal, bool, datetime.datetime, datetime.date]): | ||
value: | ||
The scalar parameter value. | ||
|
||
Returns: | ||
|
Uh oh!
There was an error while loading. Please reload this page.