Skip to content

Commit ea68410

Browse files
authored
BigQuery: Fix NPE for null table schema fields (#4338)
* Add failing test for empty table schema * Fix NPE if table schema returns null for fields
1 parent 2aa9d80 commit ea68410

File tree

2 files changed

+16
-1
lines changed
  • google-cloud-clients/google-cloud-bigquery/src

2 files changed

+16
-1
lines changed

google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Schema.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,13 @@
1818

1919
import static com.google.common.base.Preconditions.checkNotNull;
2020

21+
import com.google.api.services.bigquery.model.TableFieldSchema;
2122
import com.google.api.services.bigquery.model.TableSchema;
2223
import com.google.common.base.Function;
2324
import com.google.common.base.MoreObjects;
2425
import java.io.Serializable;
26+
import java.util.Collections;
27+
import java.util.List;
2528
import java.util.Objects;
2629

2730
/** This class represents the schema for a Google BigQuery Table or data source. */
@@ -90,6 +93,10 @@ TableSchema toPb() {
9093
}
9194

9295
static Schema fromPb(com.google.api.services.bigquery.model.TableSchema tableSchemaPb) {
93-
return Schema.of(FieldList.fromPb(tableSchemaPb.getFields()));
96+
List<TableFieldSchema> fields = tableSchemaPb.getFields();
97+
if (fields == null) {
98+
fields = Collections.emptyList();
99+
}
100+
return Schema.of(FieldList.fromPb(fields));
94101
}
95102
}

google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/SchemaTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import static org.junit.Assert.assertEquals;
2020

21+
import com.google.api.services.bigquery.model.TableSchema;
2122
import com.google.common.collect.ImmutableList;
2223
import java.util.List;
2324
import org.junit.Test;
@@ -57,4 +58,11 @@ private void compareTableSchema(Schema expected, Schema value) {
5758
assertEquals(expected, value);
5859
assertEquals(expected.getFields(), value.getFields());
5960
}
61+
62+
@Test
63+
public void testEmptySchema() {
64+
TableSchema tableSchema = new TableSchema();
65+
Schema schema = Schema.fromPb(tableSchema);
66+
assertEquals(0, schema.getFields().size());
67+
}
6068
}

0 commit comments

Comments
 (0)