From 413d6f03f288fa21511daaa3442fc1fde9ca246f Mon Sep 17 00:00:00 2001 From: allenc3 <31832826+allenc3@users.noreply.github.com> Date: Tue, 14 Jul 2020 11:37:26 -0500 Subject: [PATCH] fix: BQTableSchemaToProtoDescriptor change type mapping (#402) Change BQ Date to map to Proto Int32. --- .../clirr-ignored-differences.xml | 5 ++++ .../BQTableSchemaToProtoDescriptor.java | 18 +++++++-------- .../BQTableSchemaToProtoDescriptorTest.java | 23 ++++++++++++------- .../src/test/proto/jsonTest.proto | 5 ++-- 4 files changed, 32 insertions(+), 19 deletions(-) diff --git a/google-cloud-bigquerystorage/clirr-ignored-differences.xml b/google-cloud-bigquerystorage/clirr-ignored-differences.xml index 847badd79d..2e9eb51582 100644 --- a/google-cloud-bigquerystorage/clirr-ignored-differences.xml +++ b/google-cloud-bigquerystorage/clirr-ignored-differences.xml @@ -28,4 +28,9 @@ com.google.cloud.bigquery.storage.v1alpha2.WriterCache getTestInstance(com.google.cloud.bigquery.storage.v1alpha2.BigQueryWriteClient, int, com.google.cloud.bigquery.storage.v1alpha2.SchemaCompact) com.google.cloud.bigquery.storage.v1alpha2.WriterCache getTestInstance(com.google.cloud.bigquery.storage.v1alpha2.BigQueryWriteClient, int, com.google.cloud.bigquery.storage.v1alpha2.SchemaCompatibility) + + 7002 + com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptor + com.google.protobuf.Descriptors$Descriptor ConvertBQTableSchemaToProtoDescriptor(com.google.cloud.bigquery.storage.v1alpha2.Table$TableSchema) + diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptor.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptor.java index 946d2bc7c8..2dbdbb442e 100644 --- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptor.java +++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptor.java @@ -44,7 +44,7 @@ public class BQTableSchemaToProtoDescriptor { new ImmutableMap.Builder() .put(Table.TableFieldSchema.Type.BOOL, FieldDescriptorProto.Type.TYPE_BOOL) .put(Table.TableFieldSchema.Type.BYTES, FieldDescriptorProto.Type.TYPE_BYTES) - .put(Table.TableFieldSchema.Type.DATE, FieldDescriptorProto.Type.TYPE_INT64) + .put(Table.TableFieldSchema.Type.DATE, FieldDescriptorProto.Type.TYPE_INT32) .put(Table.TableFieldSchema.Type.DATETIME, FieldDescriptorProto.Type.TYPE_INT64) .put(Table.TableFieldSchema.Type.DOUBLE, FieldDescriptorProto.Type.TYPE_DOUBLE) .put(Table.TableFieldSchema.Type.GEOGRAPHY, FieldDescriptorProto.Type.TYPE_BYTES) @@ -62,9 +62,9 @@ public class BQTableSchemaToProtoDescriptor { * @param BQTableSchema * @throws Descriptors.DescriptorValidationException */ - public static Descriptor ConvertBQTableSchemaToProtoDescriptor(Table.TableSchema BQTableSchema) + public static Descriptor convertBQTableSchemaToProtoDescriptor(Table.TableSchema BQTableSchema) throws Descriptors.DescriptorValidationException { - return ConvertBQTableSchemaToProtoDescriptorImpl( + return convertBQTableSchemaToProtoDescriptorImpl( BQTableSchema, "root", new HashMap, Descriptor>()); } @@ -77,7 +77,7 @@ public static Descriptor ConvertBQTableSchemaToProtoDescriptor(Table.TableSchema * @param dependencyMap Stores already constructed descriptors to prevent reconstruction * @throws Descriptors.DescriptorValidationException */ - private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl( + private static Descriptor convertBQTableSchemaToProtoDescriptorImpl( Table.TableSchema BQTableSchema, String scope, HashMap, Descriptor> dependencyMap) @@ -93,19 +93,19 @@ private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl( if (dependencyMap.containsKey(fieldList)) { Descriptor descriptor = dependencyMap.get(fieldList); dependenciesList.add(descriptor.getFile()); - fields.add(ConvertBQTableFieldToProtoField(BQTableField, index++, descriptor.getName())); + fields.add(convertBQTableFieldToProtoField(BQTableField, index++, descriptor.getName())); } else { Descriptor descriptor = - ConvertBQTableSchemaToProtoDescriptorImpl( + convertBQTableSchemaToProtoDescriptorImpl( Table.TableSchema.newBuilder().addAllFields(fieldList).build(), currentScope, dependencyMap); dependenciesList.add(descriptor.getFile()); dependencyMap.put(fieldList, descriptor); - fields.add(ConvertBQTableFieldToProtoField(BQTableField, index++, currentScope)); + fields.add(convertBQTableFieldToProtoField(BQTableField, index++, currentScope)); } } else { - fields.add(ConvertBQTableFieldToProtoField(BQTableField, index++, currentScope)); + fields.add(convertBQTableFieldToProtoField(BQTableField, index++, currentScope)); } } FileDescriptor[] dependenciesArray = new FileDescriptor[dependenciesList.size()]; @@ -127,7 +127,7 @@ private static Descriptor ConvertBQTableSchemaToProtoDescriptorImpl( * @param index Index for protobuf fields. * @param scope used to name descriptors */ - private static FieldDescriptorProto ConvertBQTableFieldToProtoField( + private static FieldDescriptorProto convertBQTableFieldToProtoField( Table.TableFieldSchema BQTableField, int index, String scope) { Table.TableFieldSchema.Mode mode = BQTableField.getMode(); String fieldName = BQTableField.getName(); diff --git a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptorTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptorTest.java index e2cb04d1f4..b8dce2bdd1 100644 --- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptorTest.java +++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1alpha2/BQTableSchemaToProtoDescriptorTest.java @@ -38,7 +38,7 @@ public class BQTableSchemaToProtoDescriptorTest { new ImmutableMap.Builder() .put(Table.TableFieldSchema.Type.BOOL, BoolType.getDescriptor()) .put(Table.TableFieldSchema.Type.BYTES, BytesType.getDescriptor()) - .put(Table.TableFieldSchema.Type.DATE, Int64Type.getDescriptor()) + .put(Table.TableFieldSchema.Type.DATE, Int32Type.getDescriptor()) .put(Table.TableFieldSchema.Type.DATETIME, Int64Type.getDescriptor()) .put(Table.TableFieldSchema.Type.DOUBLE, DoubleType.getDescriptor()) .put(Table.TableFieldSchema.Type.GEOGRAPHY, BytesType.getDescriptor()) @@ -101,7 +101,7 @@ public void testSimpleTypes() throws Exception { final Table.TableSchema tableSchema = Table.TableSchema.newBuilder().addFields(0, tableFieldSchema).build(); final Descriptor descriptor = - BQTableSchemaToProtoDescriptor.ConvertBQTableSchemaToProtoDescriptor(tableSchema); + BQTableSchemaToProtoDescriptor.convertBQTableSchemaToProtoDescriptor(tableSchema); isDescriptorEqual(descriptor, entry.getValue()); } } @@ -124,7 +124,7 @@ public void testStructSimple() throws Exception { final Table.TableSchema tableSchema = Table.TableSchema.newBuilder().addFields(0, tableFieldSchema).build(); final Descriptor descriptor = - BQTableSchemaToProtoDescriptor.ConvertBQTableSchemaToProtoDescriptor(tableSchema); + BQTableSchemaToProtoDescriptor.convertBQTableSchemaToProtoDescriptor(tableSchema); isDescriptorEqual(descriptor, MessageType.getDescriptor()); } @@ -160,6 +160,12 @@ public void testStructComplex() throws Exception { .setMode(Table.TableFieldSchema.Mode.REPEATED) .setName("test_double") .build(); + final Table.TableFieldSchema test_date = + Table.TableFieldSchema.newBuilder() + .setType(Table.TableFieldSchema.Type.DATE) + .setMode(Table.TableFieldSchema.Mode.REQUIRED) + .setName("test_date") + .build(); final Table.TableFieldSchema ComplexLvl2 = Table.TableFieldSchema.newBuilder() .setType(Table.TableFieldSchema.Type.STRUCT) @@ -182,11 +188,12 @@ public void testStructComplex() throws Exception { .addFields(2, test_bytes) .addFields(3, test_bool) .addFields(4, test_double) - .addFields(5, ComplexLvl1) - .addFields(6, ComplexLvl2) + .addFields(5, test_date) + .addFields(6, ComplexLvl1) + .addFields(7, ComplexLvl2) .build(); final Descriptor descriptor = - BQTableSchemaToProtoDescriptor.ConvertBQTableSchemaToProtoDescriptor(tableSchema); + BQTableSchemaToProtoDescriptor.convertBQTableSchemaToProtoDescriptor(tableSchema); isDescriptorEqual(descriptor, ComplexRoot.getDescriptor()); } @@ -217,7 +224,7 @@ public void testOptions() throws Exception { .addFields(2, optional) .build(); final Descriptor descriptor = - BQTableSchemaToProtoDescriptor.ConvertBQTableSchemaToProtoDescriptor(tableSchema); + BQTableSchemaToProtoDescriptor.convertBQTableSchemaToProtoDescriptor(tableSchema); isDescriptorEqual(descriptor, OptionTest.getDescriptor()); } @@ -267,7 +274,7 @@ public void testDescriptorReuseDuringCreation() throws Exception { .addFields(2, reuse_lvl1_2) .build(); final Descriptor descriptor = - BQTableSchemaToProtoDescriptor.ConvertBQTableSchemaToProtoDescriptor(tableSchema); + BQTableSchemaToProtoDescriptor.convertBQTableSchemaToProtoDescriptor(tableSchema); HashMap descriptorToCount = new HashMap(); mapDescriptorToCount(descriptor, descriptorToCount); assertEquals(descriptorToCount.size(), 2); diff --git a/google-cloud-bigquerystorage/src/test/proto/jsonTest.proto b/google-cloud-bigquerystorage/src/test/proto/jsonTest.proto index c531e09096..a0a0333fd8 100644 --- a/google-cloud-bigquerystorage/src/test/proto/jsonTest.proto +++ b/google-cloud-bigquerystorage/src/test/proto/jsonTest.proto @@ -8,8 +8,9 @@ message ComplexRoot { required bytes test_bytes = 3; optional bool test_bool = 4; repeated double test_double = 5; - required ComplexLvl1 complexLvl1 = 6; - required ComplexLvl2 complexLvl2 = 7; + required int32 test_date = 6; + required ComplexLvl1 complexLvl1 = 7; + required ComplexLvl2 complexLvl2 = 8; } message ComplexLvl1 {