diff --git a/README.md b/README.md index 56af710a3e..06f1ce190b 100644 --- a/README.md +++ b/README.md @@ -56,13 +56,13 @@ implementation 'com.google.cloud:google-cloud-bigquerystorage' If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-bigquerystorage:2.33.0' +implementation 'com.google.cloud:google-cloud-bigquerystorage:2.33.1' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-bigquerystorage" % "2.33.0" +libraryDependencies += "com.google.cloud" % "google-cloud-bigquerystorage" % "2.33.1" ``` ## Authentication diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java index 27cd9ef41a..c402d66f54 100644 --- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java +++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java @@ -355,7 +355,7 @@ private static void fillField( } else if (val instanceof BigDecimal) { protoMsg.setField( fieldDescriptor, - BigDecimalByteStringEncoder.encodeToNumericByteString((BigDecimal) val)); + BigDecimalByteStringEncoder.encodeToBigNumericByteString((BigDecimal) val)); return; } } @@ -603,7 +603,7 @@ private static void fillRepeatedField( } else if (val instanceof BigDecimal) { protoMsg.addRepeatedField( fieldDescriptor, - BigDecimalByteStringEncoder.encodeToNumericByteString((BigDecimal) val)); + BigDecimalByteStringEncoder.encodeToBigNumericByteString((BigDecimal) val)); added = true; } } diff --git a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessageTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessageTest.java index 62daf66950..91785ce0ec 100644 --- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessageTest.java +++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessageTest.java @@ -984,7 +984,7 @@ public void testStructComplex() throws Exception { BigDecimalByteStringEncoder.encodeToNumericByteString(new BigDecimal(5D))) .setTestBignumeric( BigDecimalByteStringEncoder.encodeToBigNumericByteString( - new BigDecimal("578960446186580977117854925043439539266.3"))) + new BigDecimal("578960446186580977117854925043439539266.3222222222"))) .addTestBignumericStr( BigDecimalByteStringEncoder.encodeToBigNumericByteString(new BigDecimal("1.23"))) .setTestBignumericShort( @@ -1047,9 +1047,7 @@ public void testStructComplex() throws Exception { json.put("test_numeric_float", 4f); json.put("test_numeric_double", 5D); json.put( - "test_bignumeric", - BigDecimalByteStringEncoder.encodeToBigNumericByteString( - new BigDecimal("578960446186580977117854925043439539266.3"))); + "test_bignumeric", new BigDecimal("578960446186580977117854925043439539266.3222222222")); json.put("test_bignumeric_str", new JSONArray(new String[] {"1.23"})); json.put("test_bignumeric_short", 1); json.put("test_bignumeric_int", 2); @@ -1415,6 +1413,31 @@ public void testDoubleAndFloatToNumericConversion() { assertEquals(expectedProto, protoMsg); } + @Test + public void testBigDecimalToBigNumericConversion() { + TableSchema ts = + TableSchema.newBuilder() + .addFields( + 0, + TableFieldSchema.newBuilder() + .setName("bignumeric") + .setType(TableFieldSchema.Type.BIGNUMERIC) + .setMode(TableFieldSchema.Mode.REPEATED) + .build()) + .build(); + TestBignumeric expectedProto = + TestBignumeric.newBuilder() + .addBignumeric( + BigDecimalByteStringEncoder.encodeToBigNumericByteString( + new BigDecimal("24.6789012345"))) + .build(); + JSONObject json = new JSONObject(); + json.put("bignumeric", Collections.singletonList(new BigDecimal("24.6789012345"))); + DynamicMessage protoMsg = + JsonToProtoMessage.convertJsonToProtoMessage(TestBignumeric.getDescriptor(), ts, json); + assertEquals(expectedProto, protoMsg); + } + @Test public void testDoubleAndFloatToRepeatedBigNumericConversion() { TableSchema ts =