diff --git a/CHANGELOG.md b/CHANGELOG.md index eb350402bc2..d6ee7b03582 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [6.45.2](https://github.com/googleapis/java-spanner/compare/v6.45.1...v6.45.2) (2023-08-14) + + +### Bug Fixes + +* GetColumnCount would fail for empty partititioned result sets ([#2588](https://github.com/googleapis/java-spanner/issues/2588)) ([9a2f3fc](https://github.com/googleapis/java-spanner/commit/9a2f3fc01748224fc8084fbf2b4a0223426b1603)) + ## [6.45.1](https://github.com/googleapis/java-spanner/compare/v6.45.0...v6.45.1) (2023-08-11) diff --git a/README.md b/README.md index 8c508d3f93c..88877d5aa4f 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.21.0 + 26.22.0 pom import @@ -57,13 +57,13 @@ implementation 'com.google.cloud:google-cloud-spanner' If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-spanner:6.45.0' +implementation 'com.google.cloud:google-cloud-spanner:6.45.1' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.45.0" +libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.45.1" ``` @@ -430,7 +430,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-spanner/java11.html [stability-image]: https://img.shields.io/badge/stability-stable-green [maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-spanner.svg -[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.45.0 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.45.1 [authentication]: https://github.com/googleapis/google-cloud-java#authentication [auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes [predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 7fbfef43a39..18c0bf707e6 100644 --- a/google-cloud-spanner-bom/pom.xml +++ b/google-cloud-spanner-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner-bom - 6.45.1 + 6.45.2 pom com.google.cloud @@ -53,48 +53,48 @@ com.google.cloud google-cloud-spanner - 6.45.1 + 6.45.2 com.google.cloud google-cloud-spanner-executor - 6.45.1 + 6.45.2 com.google.cloud google-cloud-spanner test-jar - 6.45.1 + 6.45.2 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.45.1 + 6.45.2 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.45.1 + 6.45.2 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.45.1 + 6.45.2 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.45.1 + 6.45.2 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.45.1 + 6.45.2 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.45.1 + 6.45.2 diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index adc61206b41..a8ac7aa658d 100644 --- a/google-cloud-spanner-executor/pom.xml +++ b/google-cloud-spanner-executor/pom.xml @@ -5,14 +5,14 @@ 4.0.0 com.google.cloud google-cloud-spanner-executor - 6.45.1 + 6.45.2 jar Google Cloud Spanner Executor com.google.cloud google-cloud-spanner-parent - 6.45.1 + 6.45.2 diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 2a4c09c66d6..a03df2216b4 100644 --- a/google-cloud-spanner/pom.xml +++ b/google-cloud-spanner/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner - 6.45.1 + 6.45.2 jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,7 +11,7 @@ com.google.cloud google-cloud-spanner-parent - 6.45.1 + 6.45.2 google-cloud-spanner diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/MergedResultSet.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/MergedResultSet.java index 1f7d15365fc..36451bc8f40 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/MergedResultSet.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/MergedResultSet.java @@ -394,6 +394,26 @@ public Type getType() { return rowProducer.getType(); } + @Override + public int getColumnCount() { + return getType().getStructFields().size(); + } + + @Override + public int getColumnIndex(String columnName) { + return getType().getFieldIndex(columnName); + } + + @Override + public Type getColumnType(int columnIndex) { + return getType().getStructFields().get(columnIndex).getType(); + } + + @Override + public Type getColumnType(String columnName) { + return getType().getStructFields().get(getColumnIndex(columnName)).getType(); + } + @Override public int getNumPartitions() { return rowProducer.getNumPartitions(); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MergedResultSetTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MergedResultSetTest.java index b9d9578d6b9..c8295fd5eca 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MergedResultSetTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MergedResultSetTest.java @@ -17,6 +17,7 @@ package com.google.cloud.spanner.connection; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -30,6 +31,7 @@ import com.google.cloud.spanner.SpannerException; import com.google.cloud.spanner.SpannerExceptionFactory; import com.google.cloud.spanner.Struct; +import com.google.cloud.spanner.Type; import java.util.ArrayList; import java.util.BitSet; import java.util.Collection; @@ -140,6 +142,19 @@ public void testAllResultsAreReturned() { while (resultSet.next()) { assertRowExists(results.allRows, resultSet.getCurrentRowAsStruct(), rowsFound); } + // Verify that we can get the metadata after having gotten all rows. + // This failed in the initial release of this feature for result sets that were empty. The + // reason for that was that the initial implementation would do a call to currentRowAsStruct, + // which would always be null for result sets that never returned any data. + assertNotNull(resultSet.getMetadata()); + if (numPartitions == 0) { + assertEquals(0, resultSet.getColumnCount()); + } else { + assertEquals(18, resultSet.getColumnCount()); + assertEquals(Type.bool(), resultSet.getColumnType(0)); + assertEquals(Type.bool(), resultSet.getColumnType("COL0")); + assertEquals(10, resultSet.getColumnIndex("COL10")); + } // Check that all rows were found. assertEquals(results.allRows.size(), rowsFound.nextClearBit(0)); // Check extended metadata. diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml index 560e6133a44..a58b2a45da3 100644 --- a/grpc-google-cloud-spanner-admin-database-v1/pom.xml +++ b/grpc-google-cloud-spanner-admin-database-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.45.1 + 6.45.2 grpc-google-cloud-spanner-admin-database-v1 GRPC library for grpc-google-cloud-spanner-admin-database-v1 com.google.cloud google-cloud-spanner-parent - 6.45.1 + 6.45.2 diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index d70202912ac..ea3f8f5b035 100644 --- a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.45.1 + 6.45.2 grpc-google-cloud-spanner-admin-instance-v1 GRPC library for grpc-google-cloud-spanner-admin-instance-v1 com.google.cloud google-cloud-spanner-parent - 6.45.1 + 6.45.2 diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index 998a11a850c..975fa6db31b 100644 --- a/grpc-google-cloud-spanner-v1/pom.xml +++ b/grpc-google-cloud-spanner-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.45.1 + 6.45.2 grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.45.1 + 6.45.2 diff --git a/pom.xml b/pom.xml index 70a1df1a8aa..77d76689ea8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.45.1 + 6.45.2 Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -62,37 +62,37 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.45.1 + 6.45.2 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.45.1 + 6.45.2 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.45.1 + 6.45.2 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.45.1 + 6.45.2 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.45.1 + 6.45.2 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.45.1 + 6.45.2 com.google.cloud google-cloud-spanner - 6.45.1 + 6.45.2 diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index 16f77341394..2ee84861e65 100644 --- a/proto-google-cloud-spanner-admin-database-v1/pom.xml +++ b/proto-google-cloud-spanner-admin-database-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.45.1 + 6.45.2 proto-google-cloud-spanner-admin-database-v1 PROTO library for proto-google-cloud-spanner-admin-database-v1 com.google.cloud google-cloud-spanner-parent - 6.45.1 + 6.45.2 diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index 6603ea20cd9..b933334609d 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/proto-google-cloud-spanner-admin-instance-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.45.1 + 6.45.2 proto-google-cloud-spanner-admin-instance-v1 PROTO library for proto-google-cloud-spanner-admin-instance-v1 com.google.cloud google-cloud-spanner-parent - 6.45.1 + 6.45.2 diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml index 38671171352..ab16c464ee4 100644 --- a/proto-google-cloud-spanner-v1/pom.xml +++ b/proto-google-cloud-spanner-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.45.1 + 6.45.2 proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.45.1 + 6.45.2 diff --git a/samples/native-image/pom.xml b/samples/native-image/pom.xml index a1e05ff48d7..1655dc936e4 100644 --- a/samples/native-image/pom.xml +++ b/samples/native-image/pom.xml @@ -28,7 +28,7 @@ com.google.cloud libraries-bom - 26.21.0 + 26.22.0 pom import diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 5af0327ef23..f07cf25d19e 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -31,7 +31,7 @@ com.google.cloud google-cloud-spanner - 6.45.1 + 6.45.2 diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 610de713747..8f312776692 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -33,7 +33,7 @@ com.google.cloud libraries-bom - 26.21.0 + 26.22.0 pom import diff --git a/versions.txt b/versions.txt index 240240a1965..1ce299e8752 100644 --- a/versions.txt +++ b/versions.txt @@ -1,11 +1,11 @@ # Format: # module:released-version:current-version -proto-google-cloud-spanner-admin-instance-v1:6.45.1:6.45.1 -proto-google-cloud-spanner-v1:6.45.1:6.45.1 -proto-google-cloud-spanner-admin-database-v1:6.45.1:6.45.1 -grpc-google-cloud-spanner-v1:6.45.1:6.45.1 -grpc-google-cloud-spanner-admin-instance-v1:6.45.1:6.45.1 -grpc-google-cloud-spanner-admin-database-v1:6.45.1:6.45.1 -google-cloud-spanner:6.45.1:6.45.1 -google-cloud-spanner-executor:6.45.1:6.45.1 +proto-google-cloud-spanner-admin-instance-v1:6.45.2:6.45.2 +proto-google-cloud-spanner-v1:6.45.2:6.45.2 +proto-google-cloud-spanner-admin-database-v1:6.45.2:6.45.2 +grpc-google-cloud-spanner-v1:6.45.2:6.45.2 +grpc-google-cloud-spanner-admin-instance-v1:6.45.2:6.45.2 +grpc-google-cloud-spanner-admin-database-v1:6.45.2:6.45.2 +google-cloud-spanner:6.45.2:6.45.2 +google-cloud-spanner-executor:6.45.2:6.45.2