diff --git a/CHANGELOG.md b/CHANGELOG.md index 68fe818513..3b1e95582c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [2.34.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.33.1...v2.34.0) (2023-03-10) + + +### Features + +* Add routing header for multiplexed connection ([#2035](https://github.com/googleapis/java-bigquerystorage/issues/2035)) ([1f2752f](https://github.com/googleapis/java-bigquerystorage/commit/1f2752f3988ac87dca50813d69d0d519a2356a30)) + + +### Bug Fixes + +* **bigdecimal:** Convert BigDecimal to BigNumeric instead of Numeric ([#2031](https://github.com/googleapis/java-bigquerystorage/issues/2031)) ([e0f7e34](https://github.com/googleapis/java-bigquerystorage/commit/e0f7e34ca7f7c60279985afec46f780e0acc9a9e)), closes [#2013](https://github.com/googleapis/java-bigquerystorage/issues/2013) + ## [2.33.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.33.0...v2.33.1) (2023-03-02) diff --git a/README.md b/README.md index 56af710a3e..e373392f39 100644 --- a/README.md +++ b/README.md @@ -49,20 +49,20 @@ If you are using Maven without BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies: ```Groovy -implementation platform('com.google.cloud:libraries-bom:26.9.0') +implementation platform('com.google.cloud:libraries-bom:26.10.0') 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-bom/pom.xml b/google-cloud-bigquerystorage-bom/pom.xml index 0c2ba75cdd..bfd1195281 100644 --- a/google-cloud-bigquerystorage-bom/pom.xml +++ b/google-cloud-bigquerystorage-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-bigquerystorage-bom - 2.33.1 + 2.34.0 pom com.google.cloud @@ -52,37 +52,37 @@ com.google.cloud google-cloud-bigquerystorage - 2.33.1 + 2.34.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1beta1 - 0.157.1 + 0.158.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1beta2 - 0.157.1 + 0.158.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1 - 2.33.1 + 2.34.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1beta1 - 0.157.1 + 0.158.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1beta2 - 0.157.1 + 0.158.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1 - 2.33.1 + 2.34.0 diff --git a/google-cloud-bigquerystorage/pom.xml b/google-cloud-bigquerystorage/pom.xml index e15f6316e9..4c82eafb15 100644 --- a/google-cloud-bigquerystorage/pom.xml +++ b/google-cloud-bigquerystorage/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-bigquerystorage - 2.33.1 + 2.34.0 jar BigQuery Storage https://github.com/googleapis/java-bigquerystorage @@ -11,7 +11,7 @@ com.google.cloud google-cloud-bigquerystorage-parent - 2.33.1 + 2.34.0 google-cloud-bigquerystorage diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java index 6da6950d3a..3d713fd914 100644 --- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java +++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java @@ -51,6 +51,8 @@ import java.util.concurrent.locks.ReentrantLock; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.annotation.concurrent.GuardedBy; /** @@ -219,11 +221,29 @@ class ConnectionWorker implements AutoCloseable { private RuntimeException testOnlyRunTimeExceptionInAppendLoop = null; private long testOnlyAppendLoopSleepTime = 0; + private static String projectMatching = "projects/[^/]+/"; + private static Pattern streamPatternProject = Pattern.compile(projectMatching); + /** The maximum size of one request. Defined by the API. */ public static long getApiMaxRequestBytes() { return 10L * 1000L * 1000L; // 10 megabytes (https://en.wikipedia.org/wiki/Megabyte) } + static String extractProjectName(String streamName) { + Matcher streamMatcher = streamPatternProject.matcher(streamName); + if (streamMatcher.find()) { + return streamMatcher.group(); + } else { + throw new IllegalStateException( + String.format("The passed in stream name does not match standard format %s", streamName)); + } + } + + static String getRoutingHeader(String streamName, String location) { + String project = extractProjectName(streamName); + return project + "locations/" + location; + } + public ConnectionWorker( String streamName, String location, @@ -259,6 +279,10 @@ public ConnectionWorker( newHeaders.putAll(clientSettings.toBuilder().getHeaderProvider().getHeaders()); if (this.location == null) { newHeaders.put("x-goog-request-params", "write_stream=" + this.streamName); + } else { + newHeaders.put( + "x-goog-request-params", + "write_location=" + getRoutingHeader(this.streamName, this.location)); } BigQueryWriteSettings stubSettings = clientSettings 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/ConnectionWorkerTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerTest.java index cb4e05ab20..049e884aee 100644 --- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerTest.java +++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerTest.java @@ -710,4 +710,10 @@ public void testLongTimeIdleWontFail() throws Exception { assertEquals(i, futures.get(i).get().getAppendResult().getOffset().getValue()); } } + + @Test + public void testLocationName() throws Exception { + assertEquals( + "projects/p1/locations/us", ConnectionWorker.getRoutingHeader(TEST_STREAM_1, "us")); + } } 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 = diff --git a/grpc-google-cloud-bigquerystorage-v1/pom.xml b/grpc-google-cloud-bigquerystorage-v1/pom.xml index d58d8855d3..3abe5fae42 100644 --- a/grpc-google-cloud-bigquerystorage-v1/pom.xml +++ b/grpc-google-cloud-bigquerystorage-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1 - 2.33.1 + 2.34.0 grpc-google-cloud-bigquerystorage-v1 GRPC library for grpc-google-cloud-bigquerystorage-v1 com.google.cloud google-cloud-bigquerystorage-parent - 2.33.1 + 2.34.0 diff --git a/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml b/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml index 11bf193c04..0481abf0a4 100644 --- a/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml +++ b/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1beta1 - 0.157.1 + 0.158.0 grpc-google-cloud-bigquerystorage-v1beta1 GRPC library for grpc-google-cloud-bigquerystorage-v1beta1 com.google.cloud google-cloud-bigquerystorage-parent - 2.33.1 + 2.34.0 diff --git a/grpc-google-cloud-bigquerystorage-v1beta2/pom.xml b/grpc-google-cloud-bigquerystorage-v1beta2/pom.xml index 4fe6f2af2f..9a825b6b6a 100644 --- a/grpc-google-cloud-bigquerystorage-v1beta2/pom.xml +++ b/grpc-google-cloud-bigquerystorage-v1beta2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1beta2 - 0.157.1 + 0.158.0 grpc-google-cloud-bigquerystorage-v1beta2 GRPC library for grpc-google-cloud-bigquerystorage-v1beta2 com.google.cloud google-cloud-bigquerystorage-parent - 2.33.1 + 2.34.0 diff --git a/pom.xml b/pom.xml index c4a7299c8a..1f80e69774 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-bigquerystorage-parent pom - 2.33.1 + 2.34.0 BigQuery Storage Parent https://github.com/googleapis/java-bigquerystorage @@ -83,37 +83,37 @@ com.google.api.grpc proto-google-cloud-bigquerystorage-v1beta1 - 0.157.1 + 0.158.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1beta2 - 0.157.1 + 0.158.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1 - 2.33.1 + 2.34.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1beta1 - 0.157.1 + 0.158.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1beta2 - 0.157.1 + 0.158.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1 - 2.33.1 + 2.34.0 com.google.cloud google-cloud-bigquerystorage - 2.33.1 + 2.34.0 org.json diff --git a/proto-google-cloud-bigquerystorage-v1/pom.xml b/proto-google-cloud-bigquerystorage-v1/pom.xml index ab167e3e43..b84e3bc7fa 100644 --- a/proto-google-cloud-bigquerystorage-v1/pom.xml +++ b/proto-google-cloud-bigquerystorage-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1 - 2.33.1 + 2.34.0 proto-google-cloud-bigquerystorage-v1 PROTO library for proto-google-cloud-bigquerystorage-v1 com.google.cloud google-cloud-bigquerystorage-parent - 2.33.1 + 2.34.0 diff --git a/proto-google-cloud-bigquerystorage-v1beta1/pom.xml b/proto-google-cloud-bigquerystorage-v1beta1/pom.xml index 620c8fc9d3..8aebeb3f9c 100644 --- a/proto-google-cloud-bigquerystorage-v1beta1/pom.xml +++ b/proto-google-cloud-bigquerystorage-v1beta1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1beta1 - 0.157.1 + 0.158.0 proto-google-cloud-bigquerystorage-v1beta1 PROTO library for proto-google-cloud-bigquerystorage-v1beta1 com.google.cloud google-cloud-bigquerystorage-parent - 2.33.1 + 2.34.0 diff --git a/proto-google-cloud-bigquerystorage-v1beta2/pom.xml b/proto-google-cloud-bigquerystorage-v1beta2/pom.xml index 21233134f0..4db97c9aa7 100644 --- a/proto-google-cloud-bigquerystorage-v1beta2/pom.xml +++ b/proto-google-cloud-bigquerystorage-v1beta2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1beta2 - 0.157.1 + 0.158.0 proto-google-cloud-bigquerystorage-v1beta2 PROTO library for proto-google-cloud-bigquerystorage-v1beta2 com.google.cloud google-cloud-bigquerystorage-parent - 2.33.1 + 2.34.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index f77fcff5d2..9c405f0cf4 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-bigquerystorage - 2.33.1 + 2.34.0 diff --git a/versions.txt b/versions.txt index de19bb0d55..37259216b6 100644 --- a/versions.txt +++ b/versions.txt @@ -1,10 +1,10 @@ # Format: # module:released-version:current-version -google-cloud-bigquerystorage:2.33.1:2.33.1 -grpc-google-cloud-bigquerystorage-v1beta1:0.157.1:0.157.1 -grpc-google-cloud-bigquerystorage-v1beta2:0.157.1:0.157.1 -grpc-google-cloud-bigquerystorage-v1:2.33.1:2.33.1 -proto-google-cloud-bigquerystorage-v1beta1:0.157.1:0.157.1 -proto-google-cloud-bigquerystorage-v1beta2:0.157.1:0.157.1 -proto-google-cloud-bigquerystorage-v1:2.33.1:2.33.1 +google-cloud-bigquerystorage:2.34.0:2.34.0 +grpc-google-cloud-bigquerystorage-v1beta1:0.158.0:0.158.0 +grpc-google-cloud-bigquerystorage-v1beta2:0.158.0:0.158.0 +grpc-google-cloud-bigquerystorage-v1:2.34.0:2.34.0 +proto-google-cloud-bigquerystorage-v1beta1:0.158.0:0.158.0 +proto-google-cloud-bigquerystorage-v1beta2:0.158.0:0.158.0 +proto-google-cloud-bigquerystorage-v1:2.34.0:2.34.0