diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index b91fa381f..4dd9974f2 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -104,7 +104,7 @@ jobs:
- uses: actions/setup-java@v4
with:
distribution: temurin
- java-version: 11
+ java-version: 17
- run: java -version
- run: .kokoro/build.sh
env:
diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml
index d74a2b264..667eb33ae 100644
--- a/.github/workflows/unmanaged_dependency_check.yaml
+++ b/.github/workflows/unmanaged_dependency_check.yaml
@@ -14,6 +14,6 @@ jobs:
shell: bash
run: .kokoro/build.sh
- name: Unmanaged dependency check
- uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.47.0
+ uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.48.0
with:
bom-path: pom.xml
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index 502fb4fd4..d7dbf59de 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -62,7 +62,7 @@ test)
RETURN_CODE=$?
;;
lint)
- mvn com.coveo:fmt-maven-plugin:check -B -ntp
+ mvn com.spotify.fmt:fmt-maven-plugin:check -B -ntp
RETURN_CODE=$?
;;
javadoc)
diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg
index fcb138739..49bf3f1e1 100644
--- a/.kokoro/presubmit/graalvm-native-a.cfg
+++ b/.kokoro/presubmit/graalvm-native-a.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.47.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.48.0"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg
index f8ab2d6e5..af1210bdc 100644
--- a/.kokoro/presubmit/graalvm-native-b.cfg
+++ b/.kokoro/presubmit/graalvm-native-b.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.47.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.48.0"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg
index fa345ea0a..10457a1ac 100644
--- a/.kokoro/presubmit/graalvm-native-c.cfg
+++ b/.kokoro/presubmit/graalvm-native-c.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.47.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.48.0"
}
env_vars: {
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 24d441102..cc27fb6c6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## [2.30.2](https://github.com/googleapis/java-spanner-jdbc/compare/v2.30.1...v2.30.2) (2025-05-22)
+
+
+### Dependencies
+
+* Update dependency com.google.api.grpc:proto-google-cloud-trace-v1 to v2.63.0 ([#2058](https://github.com/googleapis/java-spanner-jdbc/issues/2058)) ([da82fea](https://github.com/googleapis/java-spanner-jdbc/commit/da82feacf3de8c7d441cf8686c6f7385f5274bc9))
+* Update dependency com.google.cloud:google-cloud-spanner to v6.94.0 ([#2064](https://github.com/googleapis/java-spanner-jdbc/issues/2064)) ([1b789e5](https://github.com/googleapis/java-spanner-jdbc/commit/1b789e50a4a3b06782923479cc1024ee7c2e102b))
+* Update dependency com.google.cloud:google-cloud-spanner-bom to v6.94.0 ([#2065](https://github.com/googleapis/java-spanner-jdbc/issues/2065)) ([1154c13](https://github.com/googleapis/java-spanner-jdbc/commit/1154c13ae1ca44a9a52cafc2d24628f53a9d121e))
+* Update dependency com.google.cloud:google-cloud-trace to v2.63.0 ([#2059](https://github.com/googleapis/java-spanner-jdbc/issues/2059)) ([86a49bb](https://github.com/googleapis/java-spanner-jdbc/commit/86a49bbf29d0752aa2fdcf5fe73587f72fc6630e))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.48.0 ([#2057](https://github.com/googleapis/java-spanner-jdbc/issues/2057)) ([c6f47d4](https://github.com/googleapis/java-spanner-jdbc/commit/c6f47d4753e73ef58e21d5d13f4d380b67a80a55))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.50.0 ([#2051](https://github.com/googleapis/java-spanner-jdbc/issues/2051)) ([1d2a3b7](https://github.com/googleapis/java-spanner-jdbc/commit/1d2a3b728f5a56b948412bea493e2b5b70a89ab2))
+* Update dependency org.springframework.data:spring-data-bom to v2024.1.6 ([#2060](https://github.com/googleapis/java-spanner-jdbc/issues/2060)) ([91c30e4](https://github.com/googleapis/java-spanner-jdbc/commit/91c30e425fdb8a1a4a9d55fdc5df254ff17aa201))
+
## [2.30.1](https://github.com/googleapis/java-spanner-jdbc/compare/v2.30.0...v2.30.1) (2025-05-09)
diff --git a/README.md b/README.md
index 4ddfd3ece..0409981be 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ If you are using Maven, add this to your pom.xml file:
com.google.cloud
google-cloud-spanner-jdbc
- 2.30.1
+ 2.30.2
```
@@ -30,7 +30,7 @@ If you are using Gradle without BOM, add this to your dependencies
```Groovy
-implementation 'com.google.cloud:google-cloud-spanner-jdbc:2.30.1'
+implementation 'com.google.cloud:google-cloud-spanner-jdbc:2.30.2'
```
@@ -38,7 +38,7 @@ If you are using SBT, add this to your dependencies
```Scala
-libraryDependencies += "com.google.cloud" % "google-cloud-spanner-jdbc" % "2.30.1"
+libraryDependencies += "com.google.cloud" % "google-cloud-spanner-jdbc" % "2.30.2"
```
diff --git a/clirr-ignored-differences.xml b/clirr-ignored-differences.xml
index 547c9c44c..f8e168c5f 100644
--- a/clirr-ignored-differences.xml
+++ b/clirr-ignored-differences.xml
@@ -123,4 +123,8 @@
com/google/cloud/spanner/jdbc/CloudSpannerJdbcConnection
com.google.cloud.spanner.DatabaseId getDatabaseId()
+
+ 8001
+ com/google/cloud/spanner/connection/ConnectionPropertiesHelper
+
diff --git a/pom.xml b/pom.xml
index e208c4426..12159cf86 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
google-cloud-spanner-jdbc
- 2.30.1
+ 2.30.2
jar
Google Cloud Spanner JDBC
https://github.com/googleapis/java-spanner-jdbc
@@ -14,7 +14,7 @@
com.google.cloud
sdk-platform-java-config
- 3.47.0
+ 3.48.0
@@ -61,7 +61,7 @@
com.google.cloud
google-cloud-spanner-bom
- 6.93.0
+ 6.94.0
pom
import
@@ -216,13 +216,13 @@
com.google.cloud
google-cloud-trace
- 2.62.0
+ 2.63.0
test
com.google.api.grpc
proto-google-cloud-trace-v1
- 2.62.0
+ 2.63.0
test
@@ -351,7 +351,7 @@
java
- com.google.cloud.spanner.connection.ConnectionPropertiesFileGenerator
+ com.google.cloud.spanner.jdbc.ConnectionPropertiesFileGenerator
test
false
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index b16b39dc8..87ee93280 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -29,7 +29,7 @@
com.google.cloud
google-cloud-spanner-jdbc
- 2.30.0
+ 2.30.1
diff --git a/samples/quickperf/pom.xml b/samples/quickperf/pom.xml
index c32aba479..83374c8bc 100644
--- a/samples/quickperf/pom.xml
+++ b/samples/quickperf/pom.xml
@@ -12,7 +12,7 @@
com.google.cloud
sdk-platform-java-config
- 3.47.0
+ 3.48.0
@@ -27,7 +27,7 @@
com.google.cloud
libraries-bom
- 26.59.0
+ 26.60.0
pom
import
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index d8c1b122b..abcfd5722 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -29,7 +29,7 @@
com.google.cloud
google-cloud-spanner-jdbc
- 2.30.1
+ 2.30.2
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index a648f3ba6..170fd5af7 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -9,7 +9,7 @@
com.google.cloud
sdk-platform-java-config
- 3.47.0
+ 3.48.0
@@ -26,7 +26,7 @@
com.google.cloud
libraries-bom
- 26.59.0
+ 26.60.0
pom
import
diff --git a/samples/spring-data-jdbc/googlesql/pom.xml b/samples/spring-data-jdbc/googlesql/pom.xml
index 783e25ede..2d19f3272 100644
--- a/samples/spring-data-jdbc/googlesql/pom.xml
+++ b/samples/spring-data-jdbc/googlesql/pom.xml
@@ -23,28 +23,28 @@
org.springframework.data
spring-data-bom
- 2024.1.5
+ 2024.1.6
import
pom
com.google.cloud
google-cloud-spanner-bom
- 6.93.0
+ 6.94.0
import
pom
com.google.cloud
libraries-bom
- 26.59.0
+ 26.60.0
import
pom
io.opentelemetry
opentelemetry-bom
- 1.49.0
+ 1.50.0
pom
import
diff --git a/samples/spring-data-jdbc/postgresql/pom.xml b/samples/spring-data-jdbc/postgresql/pom.xml
index 78439fba4..b9fe1385d 100644
--- a/samples/spring-data-jdbc/postgresql/pom.xml
+++ b/samples/spring-data-jdbc/postgresql/pom.xml
@@ -23,28 +23,28 @@
org.springframework.data
spring-data-bom
- 2024.1.5
+ 2024.1.6
import
pom
com.google.cloud
google-cloud-spanner-bom
- 6.93.0
+ 6.94.0
import
pom
com.google.cloud
libraries-bom
- 26.59.0
+ 26.60.0
import
pom
io.opentelemetry
opentelemetry-bom
- 1.49.0
+ 1.50.0
pom
import
diff --git a/samples/spring-data-mybatis/googlesql/pom.xml b/samples/spring-data-mybatis/googlesql/pom.xml
index bcf10d7de..2b8bd8914 100644
--- a/samples/spring-data-mybatis/googlesql/pom.xml
+++ b/samples/spring-data-mybatis/googlesql/pom.xml
@@ -28,21 +28,21 @@
org.springframework.data
spring-data-bom
- 2024.1.5
+ 2024.1.6
import
pom
com.google.cloud
google-cloud-spanner-bom
- 6.93.0
+ 6.94.0
import
pom
com.google.cloud
libraries-bom
- 26.59.0
+ 26.60.0
import
pom
@@ -94,7 +94,7 @@
com.google.cloud
google-cloud-spanner
- 6.93.0
+ 6.94.0
test-jar
test
diff --git a/samples/spring-data-mybatis/postgresql/pom.xml b/samples/spring-data-mybatis/postgresql/pom.xml
index 0cd43877c..e7e1ff505 100644
--- a/samples/spring-data-mybatis/postgresql/pom.xml
+++ b/samples/spring-data-mybatis/postgresql/pom.xml
@@ -28,14 +28,14 @@
org.springframework.data
spring-data-bom
- 2024.1.5
+ 2024.1.6
import
pom
com.google.cloud
libraries-bom
- 26.59.0
+ 26.60.0
import
pom
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/AbstractJdbcPreparedStatement.java b/src/main/java/com/google/cloud/spanner/jdbc/AbstractJdbcPreparedStatement.java
index 9c58a5239..be8df4aff 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/AbstractJdbcPreparedStatement.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/AbstractJdbcPreparedStatement.java
@@ -81,8 +81,7 @@ public void addBatch(String sql) throws SQLException {
@Override
public void setNull(int parameterIndex, int sqlType) throws SQLException {
checkClosed();
- parameters.setParameter(
- parameterIndex, /* value = */ null, sqlType, /* scaleOrLength = */ null);
+ parameters.setParameter(parameterIndex, /* value= */ null, sqlType, /* scaleOrLength= */ null);
}
@Override
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/AbstractJdbcResultSet.java b/src/main/java/com/google/cloud/spanner/jdbc/AbstractJdbcResultSet.java
index 652ed0b25..4b6ac4c13 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/AbstractJdbcResultSet.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/AbstractJdbcResultSet.java
@@ -39,6 +39,7 @@
abstract class AbstractJdbcResultSet extends AbstractJdbcWrapper implements ResultSet {
/** The underlying Cloud Spanner {@link com.google.cloud.spanner.ResultSet}. */
final com.google.cloud.spanner.ResultSet spanner;
+
/** Current fetch size hint for this result set. */
private int fetchSize;
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/CloudSpannerJdbcConnection.java b/src/main/java/com/google/cloud/spanner/jdbc/CloudSpannerJdbcConnection.java
index 359854c90..50f1f5328 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/CloudSpannerJdbcConnection.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/CloudSpannerJdbcConnection.java
@@ -88,7 +88,9 @@ default void setTransactionTag(String tag) throws SQLException {
throw new UnsupportedOperationException();
}
- /** @return The transaction tag of the current transaction. */
+ /**
+ * @return The transaction tag of the current transaction.
+ */
default String getTransactionTag() throws SQLException {
throw new UnsupportedOperationException();
}
@@ -242,7 +244,9 @@ default String getStatementTag() throws SQLException {
*/
void setReturnCommitStats(boolean returnCommitStats) throws SQLException;
- /** @return true if this connection requests commit statistics from Cloud Spanner. */
+ /**
+ * @return true if this connection requests commit statistics from Cloud Spanner.
+ */
boolean isReturnCommitStats() throws SQLException;
/**
@@ -359,7 +363,9 @@ default String getStatementTag() throws SQLException {
*/
String getConnectionUrl();
- /** @return The {@link Dialect} that is used by this connection. */
+ /**
+ * @return The {@link Dialect} that is used by this connection.
+ */
default Dialect getDialect() {
return Dialect.GOOGLE_STANDARD_SQL;
}
diff --git a/src/main/java/com/google/cloud/spanner/connection/ConnectionPropertiesHelper.java b/src/main/java/com/google/cloud/spanner/jdbc/ConnectionPropertiesHelper.java
similarity index 80%
rename from src/main/java/com/google/cloud/spanner/connection/ConnectionPropertiesHelper.java
rename to src/main/java/com/google/cloud/spanner/jdbc/ConnectionPropertiesHelper.java
index cde651e02..4f8db86b0 100644
--- a/src/main/java/com/google/cloud/spanner/connection/ConnectionPropertiesHelper.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/ConnectionPropertiesHelper.java
@@ -14,9 +14,10 @@
* limitations under the License.
*/
-package com.google.cloud.spanner.connection;
+package com.google.cloud.spanner.jdbc;
-import com.google.api.core.InternalApi;
+import com.google.cloud.spanner.connection.ConnectionProperties;
+import com.google.cloud.spanner.connection.ConnectionProperty;
import com.google.common.collect.ImmutableList;
import java.sql.DriverPropertyInfo;
import java.util.Arrays;
@@ -26,16 +27,14 @@
import java.util.regex.Pattern;
import java.util.stream.Collectors;
-// TODO: Remove this class when the Connection API has made the list of properties public.
-@InternalApi
-public class ConnectionPropertiesHelper {
- public static ImmutableList> VALID_CONNECTION_PROPERTIES =
+class ConnectionPropertiesHelper {
+ static ImmutableList> VALID_CONNECTION_PROPERTIES =
ImmutableList.copyOf(
- ConnectionProperties.CONNECTION_PROPERTIES.values().stream()
+ ConnectionProperties.VALID_CONNECTION_PROPERTIES.stream()
.sorted(Comparator.comparing(ConnectionProperty::getName))
.collect(Collectors.toList()));
- public static DriverPropertyInfo toDriverPropertyInfo(
+ static DriverPropertyInfo toDriverPropertyInfo(
String connectionUri, ConnectionProperty> connectionProperty) {
DriverPropertyInfo result =
new DriverPropertyInfo(
@@ -56,7 +55,7 @@ public static DriverPropertyInfo toDriverPropertyInfo(
return result;
}
- public static String getConnectionPropertyName(ConnectionProperty> connectionProperty) {
+ static String getConnectionPropertyName(ConnectionProperty> connectionProperty) {
return connectionProperty.getName();
}
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/IsolationLevelConverter.java b/src/main/java/com/google/cloud/spanner/jdbc/IsolationLevelConverter.java
index 3e3e10c9f..cabf08057 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/IsolationLevelConverter.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/IsolationLevelConverter.java
@@ -40,7 +40,7 @@ static IsolationLevel convertToSpanner(int jdbcIsolationLevel) throws SQLExcepti
static int convertToJdbc(IsolationLevel isolationLevel) {
switch (isolationLevel) {
- // Translate UNSPECIFIED to SERIALIZABLE as that is the default isolation level.
+ // Translate UNSPECIFIED to SERIALIZABLE as that is the default isolation level.
case ISOLATION_LEVEL_UNSPECIFIED:
case SERIALIZABLE:
return Connection.TRANSACTION_SERIALIZABLE;
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/JdbcConstants.java b/src/main/java/com/google/cloud/spanner/jdbc/JdbcConstants.java
index 164aec0ee..8de8c7f0e 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/JdbcConstants.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/JdbcConstants.java
@@ -27,6 +27,7 @@ public final class JdbcConstants {
* was executed with {@link Statement#execute(String)} returned a {@link ResultSet}.
*/
public static final int STATEMENT_RESULT_SET = -1;
+
/**
* Special value that is used to indicate that a statement had no result. The method {@link
* Statement#getUpdateCount()} will return this value if the previous statement that was executed
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/JdbcDataSource.java b/src/main/java/com/google/cloud/spanner/jdbc/JdbcDataSource.java
index 026406e2b..d4f415d27 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/JdbcDataSource.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/JdbcDataSource.java
@@ -114,12 +114,16 @@ public boolean isClosed() {
return false;
}
- /** @return the JDBC URL to use for this {@link DataSource}. */
+ /**
+ * @return the JDBC URL to use for this {@link DataSource}.
+ */
public String getUrl() {
return url;
}
- /** @param url The JDBC URL to use for this {@link DataSource}. */
+ /**
+ * @param url The JDBC URL to use for this {@link DataSource}.
+ */
public void setUrl(String url) {
this.url = url;
}
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/JdbcDriver.java b/src/main/java/com/google/cloud/spanner/jdbc/JdbcDriver.java
index f7bdb3b09..120880fee 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/JdbcDriver.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/JdbcDriver.java
@@ -23,7 +23,6 @@
import com.google.cloud.spanner.SpannerException;
import com.google.cloud.spanner.connection.ConnectionOptions;
import com.google.cloud.spanner.connection.ConnectionOptionsHelper;
-import com.google.cloud.spanner.connection.ConnectionPropertiesHelper;
import com.google.cloud.spanner.connection.ConnectionProperty;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Suppliers;
@@ -196,7 +195,9 @@ static void deregister() throws SQLException {
registeredDriver = null;
}
- /** @return {@code true} if the driver is registered against {@link DriverManager} */
+ /**
+ * @return {@code true} if the driver is registered against {@link DriverManager}
+ */
static boolean isRegistered() {
return registeredDriver != null;
}
@@ -281,7 +282,7 @@ static boolean isHibernate() {
// we assume that Hibernate will (eventually) be used.
Class.forName(
"com.google.cloud.spanner.hibernate.SpannerDialect",
- /*initialize=*/ false,
+ /* initialize= */ false,
JdbcDriver.class.getClassLoader());
return true;
} catch (Throwable ignore) {
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/JdbcSqlException.java b/src/main/java/com/google/cloud/spanner/jdbc/JdbcSqlException.java
index c36b8134a..90f6df043 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/JdbcSqlException.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/JdbcSqlException.java
@@ -25,13 +25,19 @@
*/
public interface JdbcSqlException {
- /** @see Throwable#getMessage() */
+ /**
+ * @see Throwable#getMessage()
+ */
String getMessage();
- /** @see Throwable#getCause() */
+ /**
+ * @see Throwable#getCause()
+ */
Throwable getCause();
- /** @see SQLException#getSQLState() */
+ /**
+ * @see SQLException#getSQLState()
+ */
String getSQLState();
/** Returns the gRPC error code as an int */
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/JsonType.java b/src/main/java/com/google/cloud/spanner/jdbc/JsonType.java
index 3e69adea4..747f8732e 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/JsonType.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/JsonType.java
@@ -27,11 +27,13 @@
*/
public class JsonType implements SQLType {
public static final JsonType INSTANCE = new JsonType();
+
/**
* Spanner does not have any type numbers, but the code values are unique. Add 100,000 to avoid
* conflicts with the type numbers in java.sql.Types.
*/
public static final int VENDOR_TYPE_NUMBER = 100_000 + TypeCode.JSON_VALUE;
+
/**
* Define a short type number as well, as this is what is expected to be returned in {@link
* DatabaseMetaData#getTypeInfo()}.
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/PgJsonbType.java b/src/main/java/com/google/cloud/spanner/jdbc/PgJsonbType.java
index b0a819b0d..d447233ca 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/PgJsonbType.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/PgJsonbType.java
@@ -22,12 +22,14 @@
public class PgJsonbType implements SQLType {
public static final PgJsonbType INSTANCE = new PgJsonbType();
+
/**
* Spanner/Spangres does not have any type numbers, but the code values are unique. Add 200,000 to
* avoid conflicts with the type numbers in java.sql.Types. Native Cloud Spanner types already use
* the range starting at 100,000 (see {@link JsonType}).
*/
public static final int VENDOR_TYPE_NUMBER = 200_000 + TypeCode.JSON_VALUE;
+
/**
* Define a short type number as well, as this is what is expected to be returned in {@link
* DatabaseMetaData#getTypeInfo()}.
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/ProtoEnumType.java b/src/main/java/com/google/cloud/spanner/jdbc/ProtoEnumType.java
index 953fb73b3..7c710bc90 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/ProtoEnumType.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/ProtoEnumType.java
@@ -27,11 +27,13 @@
*/
public class ProtoEnumType implements SQLType {
public static final ProtoEnumType INSTANCE = new ProtoEnumType();
+
/**
* Spanner does not have any type numbers, but the code values are unique. Add 100,000 to avoid
* conflicts with the type numbers in java.sql.Types.
*/
public static final int VENDOR_TYPE_NUMBER = 100_000 + TypeCode.ENUM_VALUE;
+
/**
* Define a short type number as well, as this is what is expected to be returned in {@link
* DatabaseMetaData#getTypeInfo()}.
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/ProtoMessageType.java b/src/main/java/com/google/cloud/spanner/jdbc/ProtoMessageType.java
index 2a7f6f705..df5fd98a2 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/ProtoMessageType.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/ProtoMessageType.java
@@ -27,11 +27,13 @@
*/
public class ProtoMessageType implements SQLType {
public static final ProtoMessageType INSTANCE = new ProtoMessageType();
+
/**
* Spanner does not have any type numbers, but the code values are unique. Add 100,000 to avoid
* conflicts with the type numbers in java.sql.Types.
*/
public static final int VENDOR_TYPE_NUMBER = 100_000 + TypeCode.PROTO_VALUE;
+
/**
* Define a short type number as well, as this is what is expected to be returned in {@link
* DatabaseMetaData#getTypeInfo()}.
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/SpannerPool.java b/src/main/java/com/google/cloud/spanner/jdbc/SpannerPool.java
index 8bcbcc195..2122d7dc4 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/SpannerPool.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/SpannerPool.java
@@ -16,12 +16,16 @@
package com.google.cloud.spanner.jdbc;
-/** @see com.google.cloud.spanner.connection.SpannerPool */
+/**
+ * @see com.google.cloud.spanner.connection.SpannerPool
+ */
@Deprecated
public class SpannerPool {
private SpannerPool() {}
- /** @see com.google.cloud.spanner.connection.SpannerPool#closeSpannerPool() */
+ /**
+ * @see com.google.cloud.spanner.connection.SpannerPool#closeSpannerPool()
+ */
@Deprecated
public static void closeSpannerPool() {
com.google.cloud.spanner.connection.SpannerPool.closeSpannerPool();
diff --git a/src/main/java/com/google/cloud/spanner/jdbc/UuidType.java b/src/main/java/com/google/cloud/spanner/jdbc/UuidType.java
index 46317b435..22bf3666b 100644
--- a/src/main/java/com/google/cloud/spanner/jdbc/UuidType.java
+++ b/src/main/java/com/google/cloud/spanner/jdbc/UuidType.java
@@ -27,11 +27,13 @@
*/
public class UuidType implements SQLType {
public static final UuidType INSTANCE = new UuidType();
+
/**
* Spanner does not have any type numbers, but the code values are unique. Add 100,000 to avoid
* conflicts with the type numbers in java.sql.Types.
*/
public static final int VENDOR_TYPE_NUMBER = 100_000 + TypeCode.UUID_VALUE;
+
/**
* Define a short type number as well, as this is what is expected to be returned in {@link
* DatabaseMetaData#getTypeInfo()}.
diff --git a/src/test/java/com/google/cloud/spanner/connection/ConnectionPropertiesFileGenerator.java b/src/test/java/com/google/cloud/spanner/jdbc/ConnectionPropertiesFileGenerator.java
similarity index 96%
rename from src/test/java/com/google/cloud/spanner/connection/ConnectionPropertiesFileGenerator.java
rename to src/test/java/com/google/cloud/spanner/jdbc/ConnectionPropertiesFileGenerator.java
index 4307fbcb0..9efc63b9e 100644
--- a/src/test/java/com/google/cloud/spanner/connection/ConnectionPropertiesFileGenerator.java
+++ b/src/test/java/com/google/cloud/spanner/jdbc/ConnectionPropertiesFileGenerator.java
@@ -14,8 +14,9 @@
* limitations under the License.
*/
-package com.google.cloud.spanner.connection;
+package com.google.cloud.spanner.jdbc;
+import com.google.cloud.spanner.connection.ConnectionProperty;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
diff --git a/src/test/java/com/google/cloud/spanner/jdbc/DdlMockServerTest.java b/src/test/java/com/google/cloud/spanner/jdbc/DdlMockServerTest.java
index 7bca2369a..0646a73bc 100644
--- a/src/test/java/com/google/cloud/spanner/jdbc/DdlMockServerTest.java
+++ b/src/test/java/com/google/cloud/spanner/jdbc/DdlMockServerTest.java
@@ -62,7 +62,7 @@ public void testGetDatabaseDdl() throws SQLException {
mockDatabaseAdmin.addResponse(
GetDatabaseDdlResponse.newBuilder().addAllStatements(expectedDdl).build());
- try (Connection connection = createConnection(/* autoCommit = */ true)) {
+ try (Connection connection = createConnection(/* autoCommit= */ true)) {
CloudSpannerJdbcConnection spannerJdbcConnection =
connection.unwrap(CloudSpannerJdbcConnection.class);
List ddl =
@@ -85,7 +85,7 @@ public void testDdlInAutoCommitIsTrue_succeeds() throws SQLException {
.setMetadata(Any.pack(UpdateDatabaseDdlMetadata.getDefaultInstance()))
.build());
- try (Connection connection = createConnection(/* autoCommit = */ true)) {
+ try (Connection connection = createConnection(/* autoCommit= */ true)) {
assertFalse(
connection.createStatement().execute("create table foo (id int64) primary key (id)"));
}
@@ -100,7 +100,7 @@ public void testDdlInAutoCommitIsFalse_succeedsWithNoActiveTransaction() throws
.setMetadata(Any.pack(UpdateDatabaseDdlMetadata.getDefaultInstance()))
.build());
- try (Connection connection = createConnection(/* autoCommit = */ false)) {
+ try (Connection connection = createConnection(/* autoCommit= */ false)) {
assertFalse(
connection.createStatement().execute("create table foo (id int64) primary key (id)"));
}
@@ -111,7 +111,7 @@ public void testDdlInAutoCommitIsFalse_failsWithActiveTransaction() throws SQLEx
mockSpanner.putStatementResult(
StatementResult.update(Statement.of("update foo set bar=1 where true"), 1L));
- try (Connection connection = createConnection(/* autoCommit = */ false)) {
+ try (Connection connection = createConnection(/* autoCommit= */ false)) {
assertFalse(connection.createStatement().execute("update foo set bar=1 where true"));
SQLException exception =
assertThrows(
diff --git a/src/test/java/com/google/cloud/spanner/jdbc/JdbcConnectionTest.java b/src/test/java/com/google/cloud/spanner/jdbc/JdbcConnectionTest.java
index d4cfeb8d0..69bb4fba8 100644
--- a/src/test/java/com/google/cloud/spanner/jdbc/JdbcConnectionTest.java
+++ b/src/test/java/com/google/cloud/spanner/jdbc/JdbcConnectionTest.java
@@ -192,7 +192,10 @@ public void testRollback() throws SQLException {
@Test
public void testClosedJdbcConnection()
- throws SQLException, NoSuchMethodException, SecurityException, IllegalAccessException,
+ throws SQLException,
+ NoSuchMethodException,
+ SecurityException,
+ IllegalAccessException,
IllegalArgumentException {
testClosed(Connection.class, "getCatalog");
testClosed(Connection.class, "getWarnings");
@@ -328,14 +331,20 @@ public void testClosedJdbcConnection()
}
private void testClosed(Class extends Connection> clazz, String name)
- throws NoSuchMethodException, SecurityException, SQLException, IllegalAccessException,
+ throws NoSuchMethodException,
+ SecurityException,
+ SQLException,
+ IllegalAccessException,
IllegalArgumentException {
testClosed(clazz, name, null, null);
}
private void testClosed(
Class extends Connection> clazz, String name, Class>[] paramTypes, Object[] args)
- throws NoSuchMethodException, SecurityException, SQLException, IllegalAccessException,
+ throws NoSuchMethodException,
+ SecurityException,
+ SQLException,
+ IllegalAccessException,
IllegalArgumentException {
Method method = clazz.getDeclaredMethod(name, paramTypes);
testInvokeMethodOnClosedConnection(method, args);
diff --git a/src/test/java/com/google/cloud/spanner/jdbc/JdbcDriverTest.java b/src/test/java/com/google/cloud/spanner/jdbc/JdbcDriverTest.java
index 494233faf..9ae33fa6f 100644
--- a/src/test/java/com/google/cloud/spanner/jdbc/JdbcDriverTest.java
+++ b/src/test/java/com/google/cloud/spanner/jdbc/JdbcDriverTest.java
@@ -26,7 +26,6 @@
import com.google.cloud.ServiceOptions;
import com.google.cloud.spanner.MockSpannerServiceImpl;
-import com.google.cloud.spanner.connection.ConnectionPropertiesHelper;
import com.google.cloud.spanner.connection.SpannerPool;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
diff --git a/src/test/java/com/google/cloud/spanner/jdbc/JdbcSqlScriptVerifier.java b/src/test/java/com/google/cloud/spanner/jdbc/JdbcSqlScriptVerifier.java
index 51e121337..10a9327b4 100644
--- a/src/test/java/com/google/cloud/spanner/jdbc/JdbcSqlScriptVerifier.java
+++ b/src/test/java/com/google/cloud/spanner/jdbc/JdbcSqlScriptVerifier.java
@@ -119,6 +119,7 @@ protected Object getFirstValue() throws Exception {
public static class JdbcGenericConnection extends GenericConnection {
private final CloudSpannerJdbcConnection connection;
+
/**
* Use this to strip comments from a statement before the statement is executed. This should
* only be used when the connection is used in a unit test with a mocked underlying connection.
diff --git a/src/test/java/com/google/cloud/spanner/jdbc/it/ITJdbcConnectTest.java b/src/test/java/com/google/cloud/spanner/jdbc/it/ITJdbcConnectTest.java
index 17bd65785..b42e81e5e 100644
--- a/src/test/java/com/google/cloud/spanner/jdbc/it/ITJdbcConnectTest.java
+++ b/src/test/java/com/google/cloud/spanner/jdbc/it/ITJdbcConnectTest.java
@@ -27,8 +27,9 @@
import com.google.cloud.spanner.jdbc.CloudSpannerJdbcConnection;
import com.google.cloud.spanner.jdbc.JdbcDataSource;
import com.google.cloud.spanner.testing.EmulatorSpannerHelper;
-import java.io.FileInputStream;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
@@ -229,7 +230,7 @@ public void testConnectWithDataSourceWithConflictingValues() throws SQLException
public void testConnectWithOAuthToken() throws Exception {
GoogleCredentials credentials;
if (hasValidKeyFile()) {
- credentials = GoogleCredentials.fromStream(new FileInputStream(getKeyFile()));
+ credentials = GoogleCredentials.fromStream(Files.newInputStream(Paths.get(getKeyFile())));
} else {
try {
credentials = GoogleCredentials.getApplicationDefault();
diff --git a/src/test/java/com/google/cloud/spanner/jdbc/it/ITProtoColumnsTest.java b/src/test/java/com/google/cloud/spanner/jdbc/it/ITProtoColumnsTest.java
index aa09aea6e..74a381834 100644
--- a/src/test/java/com/google/cloud/spanner/jdbc/it/ITProtoColumnsTest.java
+++ b/src/test/java/com/google/cloud/spanner/jdbc/it/ITProtoColumnsTest.java
@@ -16,6 +16,8 @@
package com.google.cloud.spanner.jdbc.it;
+import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.SPANNER_EMULATOR_HOST;
+import static com.google.cloud.spanner.testing.EmulatorSpannerHelper.isUsingEmulator;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -34,7 +36,6 @@
import com.google.cloud.spanner.jdbc.ProtoMessageType;
import com.google.cloud.spanner.jdbc.it.SingerProto.Genre;
import com.google.cloud.spanner.jdbc.it.SingerProto.SingerInfo;
-import com.google.cloud.spanner.testing.EmulatorSpannerHelper;
import com.google.cloud.spanner.testing.RemoteSpannerHelper;
import java.io.InputStream;
import java.sql.Connection;
@@ -68,8 +69,6 @@ public static boolean isUsingGraalVm() {
@BeforeClass
public static void setup() throws Exception {
- assumeFalse(
- "Proto columns is not supported in the emulator", EmulatorSpannerHelper.isUsingEmulator());
assumeFalse("Skipping tests on GraalVM", isUsingGraalVm());
RemoteSpannerHelper testHelper = env.getTestHelper();
final String projectId = testHelper.getInstanceId().getProject();
@@ -87,7 +86,12 @@ public static void setup() throws Exception {
.setDialect(Dialect.GOOGLE_STANDARD_SQL)
.setProtoDescriptors(in)
.build();
- final String host = SpannerTestHost.getHost();
+ final String host;
+ if (isUsingEmulator()) {
+ host = System.getenv(SPANNER_EMULATOR_HOST);
+ } else {
+ host = SpannerTestHost.getHost();
+ }
database =
databaseAdminClient
@@ -109,6 +113,9 @@ public static void setup() throws Exception {
in.close();
url = "jdbc:cloudspanner://" + host + "/" + database.getId();
+ if (isUsingEmulator()) {
+ url += "?autoConfigEmulator=true";
+ }
}
@AfterClass
@@ -121,8 +128,6 @@ public static void teardown() {
@Test
public void testNonNullElements() throws Exception {
- assumeFalse(
- "Proto columns is not supported in the emulator", EmulatorSpannerHelper.isUsingEmulator());
assumeFalse("Skipping tests on GraalVM", isUsingGraalVm());
SingerInfo singerInfo =
SingerInfo.newBuilder()
@@ -166,8 +171,6 @@ public void testNonNullElements() throws Exception {
@Test
public void testNullElements() throws Exception {
- assumeFalse(
- "Proto columns is not supported in the emulator", EmulatorSpannerHelper.isUsingEmulator());
assumeFalse("Skipping tests on GraalVM", isUsingGraalVm());
try (Connection connection = DriverManager.getConnection(url);
PreparedStatement ps =
@@ -201,8 +204,6 @@ public void testNullElements() throws Exception {
@Test
public void testUntypedNullElements() throws Exception {
- assumeFalse(
- "Proto columns is not supported in the emulator", EmulatorSpannerHelper.isUsingEmulator());
assumeFalse("Skipping tests on GraalVM", isUsingGraalVm());
try (Connection connection = DriverManager.getConnection(url);
PreparedStatement ps =
@@ -231,8 +232,6 @@ public void testUntypedNullElements() throws Exception {
@Test
public void testInterCompatibility() throws Exception {
- assumeFalse(
- "Proto columns is not supported in the emulator", EmulatorSpannerHelper.isUsingEmulator());
assumeFalse("Skipping tests on GraalVM", isUsingGraalVm());
SingerInfo singerInfo =
SingerInfo.newBuilder()
diff --git a/src/test/java/com/google/cloud/spanner/jdbc/it/SingerProto.java b/src/test/java/com/google/cloud/spanner/jdbc/it/SingerProto.java
index 00e44bb30..2a93d1c98 100644
--- a/src/test/java/com/google/cloud/spanner/jdbc/it/SingerProto.java
+++ b/src/test/java/com/google/cloud/spanner/jdbc/it/SingerProto.java
@@ -28,6 +28,7 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLi
public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
}
+
/** Protobuf enum {@code examples.spanner.music.Genre} */
public enum Genre implements com.google.protobuf.ProtocolMessageEnum {
/** POP = 0; */
@@ -43,10 +44,13 @@ public enum Genre implements com.google.protobuf.ProtocolMessageEnum {
/** POP = 0; */
public static final int POP_VALUE = 0;
+
/** JAZZ = 1; */
public static final int JAZZ_VALUE = 1;
+
/** FOLK = 2; */
public static final int FOLK_VALUE = 2;
+
/** ROCK = 3; */
public static final int ROCK_VALUE = 3;
@@ -144,6 +148,7 @@ public interface SingerInfoOrBuilder
* @return Whether the singerId field is set.
*/
boolean hasSingerId();
+
/**
* optional int64 singer_id = 1;
*
@@ -157,12 +162,14 @@ public interface SingerInfoOrBuilder
* @return Whether the birthDate field is set.
*/
boolean hasBirthDate();
+
/**
* optional string birth_date = 2;
*
* @return The birthDate.
*/
String getBirthDate();
+
/**
* optional string birth_date = 2;
*
@@ -176,12 +183,14 @@ public interface SingerInfoOrBuilder
* @return Whether the nationality field is set.
*/
boolean hasNationality();
+
/**
* optional string nationality = 3;
*
* @return The nationality.
*/
String getNationality();
+
/**
* optional string nationality = 3;
*
@@ -195,12 +204,14 @@ public interface SingerInfoOrBuilder
* @return Whether the genre field is set.
*/
boolean hasGenre();
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
* @return The enum numeric value on the wire for genre.
*/
int getGenreValue();
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -208,12 +219,14 @@ public interface SingerInfoOrBuilder
*/
Genre getGenre();
}
+
/** Protobuf type {@code examples.spanner.music.SingerInfo} */
public static final class SingerInfo extends com.google.protobuf.GeneratedMessageV3
implements
// @@protoc_insertion_point(message_implements:examples.spanner.music.SingerInfo)
SingerInfoOrBuilder {
private static final long serialVersionUID = 0L;
+
// Use SingerInfo.newBuilder() to construct.
private SingerInfo(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
super(builder);
@@ -244,6 +257,7 @@ protected FieldAccessorTable internalGetFieldAccessorTable() {
private int bitField0_;
public static final int SINGER_ID_FIELD_NUMBER = 1;
private long singerId_ = 0L;
+
/**
* optional int64 singer_id = 1;
*
@@ -253,6 +267,7 @@ protected FieldAccessorTable internalGetFieldAccessorTable() {
public boolean hasSingerId() {
return ((bitField0_ & 0x00000001) != 0);
}
+
/**
* optional int64 singer_id = 1;
*
@@ -267,6 +282,7 @@ public long getSingerId() {
@SuppressWarnings("serial")
private volatile Object birthDate_ = "";
+
/**
* optional string birth_date = 2;
*
@@ -276,6 +292,7 @@ public long getSingerId() {
public boolean hasBirthDate() {
return ((bitField0_ & 0x00000002) != 0);
}
+
/**
* optional string birth_date = 2;
*
@@ -293,6 +310,7 @@ public String getBirthDate() {
return s;
}
}
+
/**
* optional string birth_date = 2;
*
@@ -315,6 +333,7 @@ public com.google.protobuf.ByteString getBirthDateBytes() {
@SuppressWarnings("serial")
private volatile Object nationality_ = "";
+
/**
* optional string nationality = 3;
*
@@ -324,6 +343,7 @@ public com.google.protobuf.ByteString getBirthDateBytes() {
public boolean hasNationality() {
return ((bitField0_ & 0x00000004) != 0);
}
+
/**
* optional string nationality = 3;
*
@@ -341,6 +361,7 @@ public String getNationality() {
return s;
}
}
+
/**
* optional string nationality = 3;
*
@@ -361,6 +382,7 @@ public com.google.protobuf.ByteString getNationalityBytes() {
public static final int GENRE_FIELD_NUMBER = 4;
private int genre_ = 0;
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -370,6 +392,7 @@ public com.google.protobuf.ByteString getNationalityBytes() {
public boolean hasGenre() {
return ((bitField0_ & 0x00000008) != 0);
}
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -379,6 +402,7 @@ public boolean hasGenre() {
public int getGenreValue() {
return genre_;
}
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -593,6 +617,7 @@ protected Builder newBuilderForType(BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
+
/** Protobuf type {@code examples.spanner.music.SingerInfo} */
public static final class Builder
extends com.google.protobuf.GeneratedMessageV3.Builder
@@ -808,6 +833,7 @@ public Builder mergeFrom(
private int bitField0_;
private long singerId_;
+
/**
* optional int64 singer_id = 1;
*
@@ -817,6 +843,7 @@ public Builder mergeFrom(
public boolean hasSingerId() {
return ((bitField0_ & 0x00000001) != 0);
}
+
/**
* optional int64 singer_id = 1;
*
@@ -826,6 +853,7 @@ public boolean hasSingerId() {
public long getSingerId() {
return singerId_;
}
+
/**
* optional int64 singer_id = 1;
*
@@ -839,6 +867,7 @@ public Builder setSingerId(long value) {
onChanged();
return this;
}
+
/**
* optional int64 singer_id = 1;
*
@@ -852,6 +881,7 @@ public Builder clearSingerId() {
}
private Object birthDate_ = "";
+
/**
* optional string birth_date = 2;
*
@@ -860,6 +890,7 @@ public Builder clearSingerId() {
public boolean hasBirthDate() {
return ((bitField0_ & 0x00000002) != 0);
}
+
/**
* optional string birth_date = 2;
*
@@ -876,6 +907,7 @@ public String getBirthDate() {
return (String) ref;
}
}
+
/**
* optional string birth_date = 2;
*
@@ -892,6 +924,7 @@ public com.google.protobuf.ByteString getBirthDateBytes() {
return (com.google.protobuf.ByteString) ref;
}
}
+
/**
* optional string birth_date = 2;
*
@@ -907,6 +940,7 @@ public Builder setBirthDate(String value) {
onChanged();
return this;
}
+
/**
* optional string birth_date = 2;
*
@@ -918,6 +952,7 @@ public Builder clearBirthDate() {
onChanged();
return this;
}
+
/**
* optional string birth_date = 2;
*
@@ -936,6 +971,7 @@ public Builder setBirthDateBytes(com.google.protobuf.ByteString value) {
}
private Object nationality_ = "";
+
/**
* optional string nationality = 3;
*
@@ -944,6 +980,7 @@ public Builder setBirthDateBytes(com.google.protobuf.ByteString value) {
public boolean hasNationality() {
return ((bitField0_ & 0x00000004) != 0);
}
+
/**
* optional string nationality = 3;
*
@@ -960,6 +997,7 @@ public String getNationality() {
return (String) ref;
}
}
+
/**
* optional string nationality = 3;
*
@@ -976,6 +1014,7 @@ public com.google.protobuf.ByteString getNationalityBytes() {
return (com.google.protobuf.ByteString) ref;
}
}
+
/**
* optional string nationality = 3;
*
@@ -991,6 +1030,7 @@ public Builder setNationality(String value) {
onChanged();
return this;
}
+
/**
* optional string nationality = 3;
*
@@ -1002,6 +1042,7 @@ public Builder clearNationality() {
onChanged();
return this;
}
+
/**
* optional string nationality = 3;
*
@@ -1020,6 +1061,7 @@ public Builder setNationalityBytes(com.google.protobuf.ByteString value) {
}
private int genre_ = 0;
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -1029,6 +1071,7 @@ public Builder setNationalityBytes(com.google.protobuf.ByteString value) {
public boolean hasGenre() {
return ((bitField0_ & 0x00000008) != 0);
}
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -1038,6 +1081,7 @@ public boolean hasGenre() {
public int getGenreValue() {
return genre_;
}
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -1050,6 +1094,7 @@ public Builder setGenreValue(int value) {
onChanged();
return this;
}
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -1060,6 +1105,7 @@ public Genre getGenre() {
Genre result = Genre.forNumber(genre_);
return result == null ? Genre.UNRECOGNIZED : result;
}
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
@@ -1075,6 +1121,7 @@ public Builder setGenre(Genre value) {
onChanged();
return this;
}
+
/**
* optional .examples.spanner.music.Genre genre = 4;
*
diff --git a/versions.txt b/versions.txt
index caed65942..d2ed8e8c6 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-spanner-jdbc:2.30.1:2.30.1
+google-cloud-spanner-jdbc:2.30.2:2.30.2