diff --git a/google-cloud-spanner/clirr-ignored-differences.xml b/google-cloud-spanner/clirr-ignored-differences.xml index d0763c8918..fd420f4245 100644 --- a/google-cloud-spanner/clirr-ignored-differences.xml +++ b/google-cloud-spanner/clirr-ignored-differences.xml @@ -1057,4 +1057,9 @@ 8001 com/google/cloud/spanner/LatencyTest + + 7012 + com/google/cloud/spanner/connection/Connection + java.lang.Object getConnectionPropertyValue(com.google.cloud.spanner.connection.ConnectionProperty) + diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/Connection.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/Connection.java index 1d3b615206..533be8a047 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/Connection.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/Connection.java @@ -189,6 +189,10 @@ public interface Connection extends AutoCloseable { */ void reset(); + /** Returns the current value of the given connection property. */ + T getConnectionPropertyValue( + com.google.cloud.spanner.connection.ConnectionProperty property); + /** * Sets autocommit on/off for this {@link Connection}. Connections in autocommit mode will apply * any changes to the database directly without waiting for an explicit commit. DDL- and DML diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionImpl.java index ac3341e8f3..cfd63c89d4 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionImpl.java @@ -574,7 +574,8 @@ public boolean isClosed() { return closed; } - private T getConnectionPropertyValue( + @Override + public T getConnectionPropertyValue( com.google.cloud.spanner.connection.ConnectionProperty property) { return this.connectionState.getValue(property).getValue(); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java index b9f495cc32..629fe7c69d 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java @@ -766,6 +766,18 @@ public class ConnectionProperties { DEFAULT_BATCH_DML_UPDATE_COUNT, LongConverter.INSTANCE, Context.USER); + public static final ConnectionProperty UNKNOWN_LENGTH = + create( + "unknownLength", + "Spanner does not return the length of the selected columns in query results. When" + + " returning meta-data about these columns through functions like" + + " ResultSetMetaData.getColumnDisplaySize and ResultSetMetaData.getPrecision, we" + + " must provide a value. Various client tools and applications have different ideas" + + " about what they would like to see. This property specifies the length to return" + + " for types of unknown length.", + /* defaultValue= */ 50, + NonNegativeIntegerConverter.INSTANCE, + Context.USER); static final ImmutableMap> CONNECTION_PROPERTIES = CONNECTION_PROPERTIES_BUILDER.build(); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStateMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStateMockServerTest.java index 8b78fe4d14..2b48c64d2e 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStateMockServerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStateMockServerTest.java @@ -291,4 +291,13 @@ public void testSetLocalInvalidValue() { assertTrue(connection.isRetryAbortsInternally()); } } + + @Test + public void testGetConnectionProperty() { + try (Connection connection = createConnection()) { + ConnectionProperty unknownLength = ConnectionProperties.UNKNOWN_LENGTH; + assertEquals( + unknownLength.getDefaultValue(), connection.getConnectionPropertyValue(unknownLength)); + } + } }