diff --git a/gcloud/bigquery/table.py b/gcloud/bigquery/table.py index cf136669d773..510f86b87cf8 100644 --- a/gcloud/bigquery/table.py +++ b/gcloud/bigquery/table.py @@ -700,7 +700,7 @@ def _parse_schema_resource(info): for r_field in info['fields']: name = r_field['name'] field_type = r_field['type'] - mode = r_field['mode'] + mode = r_field.get('mode', 'NULLABLE') description = r_field.get('description') sub_fields = _parse_schema_resource(r_field) schema.append( diff --git a/gcloud/bigquery/test_table.py b/gcloud/bigquery/test_table.py index 345c7d4cbdac..ddfeae95220c 100644 --- a/gcloud/bigquery/test_table.py +++ b/gcloud/bigquery/test_table.py @@ -67,7 +67,7 @@ class _SchemaBase(object): def _verify_field(self, field, r_field): self.assertEqual(field.name, r_field['name']) self.assertEqual(field.field_type, r_field['type']) - self.assertEqual(field.mode, r_field['mode']) + self.assertEqual(field.mode, r_field.get('mode', 'NULLABLE')) def _verifySchema(self, schema, resource): r_fields = resource['schema']['fields'] @@ -1274,6 +1274,15 @@ def test__parse_schema_resource_subfields(self): schema = self._callFUT(RESOURCE['schema']) self._verifySchema(schema, RESOURCE) + def test__parse_schema_resource_fields_without_mode(self): + RESOURCE = self._makeResource() + RESOURCE['schema']['fields'].append( + {'name': 'phone', + 'type': 'STRING'}) + + schema = self._callFUT(RESOURCE['schema']) + self._verifySchema(schema, RESOURCE) + class Test_build_schema_resource(unittest2.TestCase, _SchemaBase):