Skip to content

Commit b87a4d0

Browse files
committed
Support standard SQL names in to_standard_sql()
1 parent abe939a commit b87a4d0

2 files changed

Lines changed: 17 additions & 4 deletions

File tree

bigquery/google/cloud/bigquery/schema.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,15 @@
2424
"STRING": types.StandardSqlDataType.STRING,
2525
"BYTES": types.StandardSqlDataType.BYTES,
2626
"INTEGER": types.StandardSqlDataType.INT64,
27+
"INT64": types.StandardSqlDataType.INT64,
2728
"FLOAT": types.StandardSqlDataType.FLOAT64,
29+
"FLOAT64": types.StandardSqlDataType.FLOAT64,
2830
"NUMERIC": types.StandardSqlDataType.NUMERIC,
2931
"BOOLEAN": types.StandardSqlDataType.BOOL,
32+
"BOOL": types.StandardSqlDataType.BOOL,
33+
"GEOGRAPHY": types.StandardSqlDataType.GEOGRAPHY,
3034
"RECORD": types.StandardSqlDataType.STRUCT,
35+
"STRUCT": types.StandardSqlDataType.STRUCT,
3136
"TIMESTAMP": types.StandardSqlDataType.TIMESTAMP,
3237
"DATE": types.StandardSqlDataType.DATE,
3338
"TIME": types.StandardSqlDataType.TIME,

bigquery/tests/unit/test_schema.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,16 @@ def test_fields_property(self):
160160
def test_to_standard_sql_simple_type(self):
161161
sql_type = self._get_standard_sql_data_type_class()
162162
examples = (
163+
# a few legacy types
163164
("INTEGER", sql_type.INT64),
164165
("FLOAT", sql_type.FLOAT64),
165166
("BOOLEAN", sql_type.BOOL),
166167
("DATETIME", sql_type.DATETIME),
168+
# a few standard types
169+
("INT64", sql_type.INT64),
170+
("FLOAT64", sql_type.FLOAT64),
171+
("BOOL", sql_type.BOOL),
172+
("GEOGRAPHY", sql_type.GEOGRAPHY),
167173
)
168174
for legacy_type, standard_type in examples:
169175
field = self._make_one("some_field", legacy_type)
@@ -172,7 +178,7 @@ def test_to_standard_sql_simple_type(self):
172178
self.assertEqual(standard_field.type.type_kind, standard_type)
173179
self.assertFalse(standard_field.type.HasField("sub_type"))
174180

175-
def test_to_standard_sql_complex_type(self):
181+
def test_to_standard_sql_struct_type(self):
176182
from google.cloud.bigquery_v2 import types
177183

178184
# Expected result object:
@@ -240,9 +246,11 @@ def test_to_standard_sql_complex_type(self):
240246
"last_used", "RECORD", fields=(sub_sub_field1, sub_sub_field2)
241247
)
242248
sub_field_bytes = self._make_one("image_content", "BYTES")
243-
schema_field = self._make_one(
244-
"image_usage", "RECORD", fields=(sub_field_bytes, sub_field_record)
245-
)
249+
250+
for type_name in ("RECORD", "STRUCT"):
251+
schema_field = self._make_one(
252+
"image_usage", type_name, fields=(sub_field_bytes, sub_field_record)
253+
)
246254

247255
standard_field = schema_field.to_standard_sql()
248256

0 commit comments

Comments
 (0)