Skip to content

Commit

Permalink
fix: underscores weren't allowed in struct field names when passing p…
Browse files Browse the repository at this point in the history
…arameters to the DB API (#930)
  • Loading branch information
jimfulton authored Aug 31, 2021
1 parent bd417d3 commit fcb0bc6
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 6 deletions.
2 changes: 1 addition & 1 deletion google/cloud/bigquery/dbapi/_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ def _parse_type(
\s*
(ARRAY|STRUCT|RECORD) # Type
\s*
<([A-Z0-9<> ,()]+)> # Subtype(s)
<([A-Z0-9_<> ,()]+)> # Subtype(s)
\s*$
""",
re.IGNORECASE | re.VERBOSE,
Expand Down
2 changes: 1 addition & 1 deletion google/cloud/bigquery/dbapi/cursor.py
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,7 @@ def _extract_types(
([^:)]*) # name
(?:: # ':' introduces type
( # start of type group
[a-zA-Z0-9<>, ]+ # First part, no parens
[a-zA-Z0-9_<>, ]+ # First part, no parens
(?: # start sets of parens + non-paren text
\([0-9 ,]+\) # comma-separated groups of digits in parens
Expand Down
8 changes: 4 additions & 4 deletions tests/unit/test_dbapi__helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -612,8 +612,8 @@ def test_complex_query_parameter_type_errors(type_, value, expect):
"parameters,parameter_types,expect",
[
(
[[], dict(name="ch1", bdate=datetime.date(2021, 1, 1))],
["ARRAY<INT64>", "struct<name string, bdate date>"],
[[], dict(name="ch1", b_date=datetime.date(2021, 1, 1))],
["ARRAY<INT64>", "struct<name string, b_date date>"],
[
{
"parameterType": {"arrayType": {"type": "INT64"}, "type": "ARRAY"},
Expand All @@ -623,13 +623,13 @@ def test_complex_query_parameter_type_errors(type_, value, expect):
"parameterType": {
"structTypes": [
{"name": "name", "type": {"type": "STRING"}},
{"name": "bdate", "type": {"type": "DATE"}},
{"name": "b_date", "type": {"type": "DATE"}},
],
"type": "STRUCT",
},
"parameterValue": {
"structValues": {
"bdate": {"value": "2021-01-01"},
"b_date": {"value": "2021-01-01"},
"name": {"value": "ch1"},
}
},
Expand Down
4 changes: 4 additions & 0 deletions tests/unit/test_dbapi_cursor.py
Original file line number Diff line number Diff line change
Expand Up @@ -809,6 +809,10 @@ def test__format_operation_no_placeholders(self):
"values(%%%%%(foo:INT64)s, %(bar)s)",
("values(%%%%%(foo)s, %(bar)s)", dict(foo="INT64")),
),
(
"values(%%%%%(foo:struct<x_1 string, y_ int64>)s, %(bar)s)",
("values(%%%%%(foo)s, %(bar)s)", dict(foo="struct<x_1 string, y_ int64>")),
),
(
"values(%%%%%(foo:struct<x string, y int64>)s, %(bar)s)",
("values(%%%%%(foo)s, %(bar)s)", dict(foo="struct<x string, y int64>")),
Expand Down

0 comments on commit fcb0bc6

Please sign in to comment.