Defaults to zero (initialization is done asynchronously).
+ */
+ public Builder setWaitForMinSessions(Duration waitForMinSessions) {
+ this.waitForMinSessions = waitForMinSessions;
+ return this;
+ }
+
/** Build a SessionPoolOption object */
public SessionPoolOptions build() {
validate();
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java
index b8255f1d65e..721be9cd762 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java
@@ -221,6 +221,7 @@ public DatabaseClient getDatabaseClient(DatabaseId db) {
SessionPool pool =
SessionPool.createPool(
getOptions(), SpannerImpl.this.getSessionClient(db), labelValues);
+ pool.maybeWaitOnMinSessions();
DatabaseClientImpl dbClient = createDatabaseClient(clientId, pool);
dbClients.put(db, dbClient);
return dbClient;
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java
index 84727be3245..af9509761df 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java
@@ -22,6 +22,7 @@
import static com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient.ListDatabaseRolesPagedResponse;
import static com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient.ListDatabasesPagedResponse;
+import com.google.api.HttpRule;
import com.google.api.core.BetaApi;
import com.google.api.core.InternalApi;
import com.google.api.gax.core.BackgroundResource;
@@ -37,6 +38,7 @@
import com.google.api.gax.rpc.ClientContext;
import com.google.api.gax.rpc.OperationCallable;
import com.google.api.gax.rpc.UnaryCallable;
+import com.google.common.collect.ImmutableMap;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
@@ -909,7 +911,84 @@ protected HttpJsonDatabaseAdminStub(
throws IOException {
this.callableFactory = callableFactory;
this.httpJsonOperationsStub =
- HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry);
+ HttpJsonOperationsStub.create(
+ clientContext,
+ callableFactory,
+ typeRegistry,
+ ImmutableMap. The interfaces provided are listed below, along with usage samples.
*
* ======================= InstanceAdminClient =======================
*
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminStub.java
index 3d3ba0e34d4..7266e61881f 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminStub.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminStub.java
@@ -20,6 +20,7 @@
import static com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient.ListInstanceConfigsPagedResponse;
import static com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient.ListInstancesPagedResponse;
+import com.google.api.HttpRule;
import com.google.api.core.BetaApi;
import com.google.api.core.InternalApi;
import com.google.api.gax.core.BackgroundResource;
@@ -35,6 +36,7 @@
import com.google.api.gax.rpc.ClientContext;
import com.google.api.gax.rpc.OperationCallable;
import com.google.api.gax.rpc.UnaryCallable;
+import com.google.common.collect.ImmutableMap;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
@@ -703,7 +705,49 @@ protected HttpJsonInstanceAdminStub(
throws IOException {
this.callableFactory = callableFactory;
this.httpJsonOperationsStub =
- HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry);
+ HttpJsonOperationsStub.create(
+ clientContext,
+ callableFactory,
+ typeRegistry,
+ ImmutableMap. The interfaces provided are listed below, along with usage samples.
*
* ======================= SpannerClient =======================
*
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractReadContextTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractReadContextTest.java
index 66c3609d6f9..31b73581f6b 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractReadContextTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractReadContextTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -188,6 +189,17 @@ public void testGetExecuteSqlRequestBuilderWithPriority() {
assertEquals(Priority.PRIORITY_MEDIUM, request.getRequestOptions().getPriority());
}
+ @Test
+ public void testGetExecuteSqlRequestBuilderWithDataBoost() {
+ ExecuteSqlRequest.Builder request =
+ context.getExecuteSqlRequestBuilder(
+ Statement.of("SELECT * FROM FOO"),
+ QueryMode.NORMAL,
+ Options.fromQueryOptions(Options.dataBoostEnabled(true)),
+ false);
+ assertTrue(request.getDataBoostEnabled());
+ }
+
@Test
public void testGetExecuteBatchDmlRequestBuilderWithPriority() {
ExecuteBatchDmlRequest.Builder request =
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java
index ac0f0a98d29..9885e4f83d5 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java
@@ -21,6 +21,7 @@
import static com.google.cloud.spanner.MockSpannerTestUtil.READ_ONE_KEY_VALUE_STATEMENT;
import static com.google.cloud.spanner.MockSpannerTestUtil.READ_TABLE_NAME;
import static com.google.cloud.spanner.MockSpannerTestUtil.SELECT1;
+import static com.google.cloud.spanner.MockSpannerTestUtil.SELECT1_RESULTSET;
import static com.google.cloud.spanner.SpannerApiFutures.get;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
@@ -2943,6 +2944,24 @@ public void testMetadataUnknownTypes() {
}
}
+ @Test
+ public void testStatementWithBytesArrayParameter() {
+ Statement statement =
+ Statement.newBuilder("select id from test where b=@p1")
+ .bind("p1")
+ .toBytesArray(
+ ImmutableList.of(ByteArray.copyFrom("test1"), ByteArray.copyFrom("test2")))
+ .build();
+ mockSpanner.putStatementResult(StatementResult.query(statement, SELECT1_RESULTSET));
+ DatabaseClient client =
+ spanner.getDatabaseClient(DatabaseId.of(TEST_PROJECT, TEST_INSTANCE, TEST_DATABASE));
+ try (ResultSet resultSet = client.singleUse().executeQuery(statement)) {
+ assertTrue(resultSet.next());
+ assertEquals(1L, resultSet.getLong(0));
+ assertFalse(resultSet.next());
+ }
+ }
+
static void assertAsString(String expected, ResultSet resultSet, int col) {
assertEquals(expected, resultSet.getValue(col).getAsString());
assertEquals(ImmutableList.of(expected), resultSet.getValue(col).getAsStringList());
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MockSpannerServiceImpl.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MockSpannerServiceImpl.java
index 29ab79450b5..567279c511c 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MockSpannerServiceImpl.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MockSpannerServiceImpl.java
@@ -20,6 +20,7 @@
import com.google.cloud.ByteArray;
import com.google.cloud.Date;
import com.google.cloud.spanner.AbstractResultSet.GrpcStruct;
+import com.google.cloud.spanner.AbstractResultSet.LazyByteArray;
import com.google.cloud.spanner.SessionPool.SessionPoolTransactionContext;
import com.google.cloud.spanner.TransactionRunnerImpl.TransactionContextImpl;
import com.google.common.base.Optional;
@@ -1362,9 +1363,11 @@ private Statement buildStatement(
builder
.bind(fieldName)
.toBytesArray(
- (Iterable
+ * Cloud Spanner Database Admin API
+ * The Cloud Spanner Database Admin API can be used to:
+ * * create, drop, and list databases
+ * * update the schema of pre-existing databases
+ * * create, delete and list backups for a database
+ * * restore a database from an existing backup
+ *
+ */
+ public abstract static class DatabaseAdminImplBase
+ implements io.grpc.BindableService, AsyncService {
@java.lang.Override
public final io.grpc.ServerServiceDefinition bindService() {
- return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
- .addMethod(
- getListDatabasesMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.ListDatabasesRequest,
- com.google.spanner.admin.database.v1.ListDatabasesResponse>(
- this, METHODID_LIST_DATABASES)))
- .addMethod(
- getCreateDatabaseMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.CreateDatabaseRequest,
- com.google.longrunning.Operation>(this, METHODID_CREATE_DATABASE)))
- .addMethod(
- getGetDatabaseMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.GetDatabaseRequest,
- com.google.spanner.admin.database.v1.Database>(this, METHODID_GET_DATABASE)))
- .addMethod(
- getUpdateDatabaseDdlMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest,
- com.google.longrunning.Operation>(this, METHODID_UPDATE_DATABASE_DDL)))
- .addMethod(
- getDropDatabaseMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.DropDatabaseRequest,
- com.google.protobuf.Empty>(this, METHODID_DROP_DATABASE)))
- .addMethod(
- getGetDatabaseDdlMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.GetDatabaseDdlRequest,
- com.google.spanner.admin.database.v1.GetDatabaseDdlResponse>(
- this, METHODID_GET_DATABASE_DDL)))
- .addMethod(
- getSetIamPolicyMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.iam.v1.SetIamPolicyRequest, com.google.iam.v1.Policy>(
- this, METHODID_SET_IAM_POLICY)))
- .addMethod(
- getGetIamPolicyMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.iam.v1.GetIamPolicyRequest, com.google.iam.v1.Policy>(
- this, METHODID_GET_IAM_POLICY)))
- .addMethod(
- getTestIamPermissionsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.iam.v1.TestIamPermissionsRequest,
- com.google.iam.v1.TestIamPermissionsResponse>(
- this, METHODID_TEST_IAM_PERMISSIONS)))
- .addMethod(
- getCreateBackupMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.CreateBackupRequest,
- com.google.longrunning.Operation>(this, METHODID_CREATE_BACKUP)))
- .addMethod(
- getCopyBackupMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.CopyBackupRequest,
- com.google.longrunning.Operation>(this, METHODID_COPY_BACKUP)))
- .addMethod(
- getGetBackupMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.GetBackupRequest,
- com.google.spanner.admin.database.v1.Backup>(this, METHODID_GET_BACKUP)))
- .addMethod(
- getUpdateBackupMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.UpdateBackupRequest,
- com.google.spanner.admin.database.v1.Backup>(this, METHODID_UPDATE_BACKUP)))
- .addMethod(
- getDeleteBackupMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.DeleteBackupRequest,
- com.google.protobuf.Empty>(this, METHODID_DELETE_BACKUP)))
- .addMethod(
- getListBackupsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.ListBackupsRequest,
- com.google.spanner.admin.database.v1.ListBackupsResponse>(
- this, METHODID_LIST_BACKUPS)))
- .addMethod(
- getRestoreDatabaseMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.RestoreDatabaseRequest,
- com.google.longrunning.Operation>(this, METHODID_RESTORE_DATABASE)))
- .addMethod(
- getListDatabaseOperationsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.ListDatabaseOperationsRequest,
- com.google.spanner.admin.database.v1.ListDatabaseOperationsResponse>(
- this, METHODID_LIST_DATABASE_OPERATIONS)))
- .addMethod(
- getListBackupOperationsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.ListBackupOperationsRequest,
- com.google.spanner.admin.database.v1.ListBackupOperationsResponse>(
- this, METHODID_LIST_BACKUP_OPERATIONS)))
- .addMethod(
- getListDatabaseRolesMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.database.v1.ListDatabaseRolesRequest,
- com.google.spanner.admin.database.v1.ListDatabaseRolesResponse>(
- this, METHODID_LIST_DATABASE_ROLES)))
- .build();
+ return DatabaseAdminGrpc.bindService(this);
}
}
/**
- *
+ * A stub to allow clients to do asynchronous rpc calls to service DatabaseAdmin.
*
*
* Cloud Spanner Database Admin API
@@ -1876,7 +1770,7 @@ public void listDatabaseRoles(
}
/**
- *
+ * A stub to allow clients to do synchronous rpc calls to service DatabaseAdmin.
*
*
*/
- public void getInstanceConfig(
+ default void getInstanceConfig(
com.google.spanner.admin.instance.v1.GetInstanceConfigRequest request,
io.grpc.stub.StreamObserver
* Cloud Spanner Database Admin API
@@ -2241,7 +2135,7 @@ public com.google.spanner.admin.database.v1.ListDatabaseRolesResponse listDataba
}
/**
- *
+ * A stub to allow clients to do ListenableFuture-style rpc calls to service DatabaseAdmin.
*
*
*/
- public void listInstanceConfigs(
+ default void listInstanceConfigs(
com.google.spanner.admin.instance.v1.ListInstanceConfigsRequest request,
io.grpc.stub.StreamObserver<
com.google.spanner.admin.instance.v1.ListInstanceConfigsResponse>
@@ -783,7 +783,7 @@ public void listInstanceConfigs(
* Gets information about a particular instance configuration.
*
* Cloud Spanner Database Admin API
@@ -2643,10 +2537,10 @@ private static final class MethodHandlers
*/
- public abstract static class InstanceAdminImplBase implements io.grpc.BindableService {
+ public interface AsyncService {
/**
*
@@ -767,7 +767,7 @@ public abstract static class InstanceAdminImplBase implements io.grpc.BindableSe
* Lists the supported instance configurations for a given project.
*
+ * Cloud Spanner Instance Admin API
+ * The Cloud Spanner Instance Admin API can be used to create, delete,
+ * modify and list instances. Instances are dedicated Cloud Spanner serving
+ * and storage resources to be used by Cloud Spanner databases.
+ * Each instance has a "configuration", which dictates where the
+ * serving resources for the Cloud Spanner instance are located (e.g.,
+ * US-central, Europe). Configurations are created by Google based on
+ * resource availability.
+ * Cloud Spanner billing is based on the instances that exist and their
+ * sizes. After an instance exists, there are no additional
+ * per-database or per-operation charges for use of the instance
+ * (though there may be additional network bandwidth charges).
+ * Instances offer isolation: problems with databases in one instance
+ * will not affect other instances. However, within an instance
+ * databases can affect each other. For example, if one database in an
+ * instance receives a lot of requests and consumes most of the
+ * instance resources, fewer resources are available for other
+ * databases in that instance, and their performance may suffer.
+ *
+ */
+ public abstract static class InstanceAdminImplBase
+ implements io.grpc.BindableService, AsyncService {
@java.lang.Override
public final io.grpc.ServerServiceDefinition bindService() {
- return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
- .addMethod(
- getListInstanceConfigsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.ListInstanceConfigsRequest,
- com.google.spanner.admin.instance.v1.ListInstanceConfigsResponse>(
- this, METHODID_LIST_INSTANCE_CONFIGS)))
- .addMethod(
- getGetInstanceConfigMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.GetInstanceConfigRequest,
- com.google.spanner.admin.instance.v1.InstanceConfig>(
- this, METHODID_GET_INSTANCE_CONFIG)))
- .addMethod(
- getCreateInstanceConfigMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.CreateInstanceConfigRequest,
- com.google.longrunning.Operation>(this, METHODID_CREATE_INSTANCE_CONFIG)))
- .addMethod(
- getUpdateInstanceConfigMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.UpdateInstanceConfigRequest,
- com.google.longrunning.Operation>(this, METHODID_UPDATE_INSTANCE_CONFIG)))
- .addMethod(
- getDeleteInstanceConfigMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.DeleteInstanceConfigRequest,
- com.google.protobuf.Empty>(this, METHODID_DELETE_INSTANCE_CONFIG)))
- .addMethod(
- getListInstanceConfigOperationsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest,
- com.google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse>(
- this, METHODID_LIST_INSTANCE_CONFIG_OPERATIONS)))
- .addMethod(
- getListInstancesMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.ListInstancesRequest,
- com.google.spanner.admin.instance.v1.ListInstancesResponse>(
- this, METHODID_LIST_INSTANCES)))
- .addMethod(
- getGetInstanceMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.GetInstanceRequest,
- com.google.spanner.admin.instance.v1.Instance>(this, METHODID_GET_INSTANCE)))
- .addMethod(
- getCreateInstanceMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.CreateInstanceRequest,
- com.google.longrunning.Operation>(this, METHODID_CREATE_INSTANCE)))
- .addMethod(
- getUpdateInstanceMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.UpdateInstanceRequest,
- com.google.longrunning.Operation>(this, METHODID_UPDATE_INSTANCE)))
- .addMethod(
- getDeleteInstanceMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.admin.instance.v1.DeleteInstanceRequest,
- com.google.protobuf.Empty>(this, METHODID_DELETE_INSTANCE)))
- .addMethod(
- getSetIamPolicyMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.iam.v1.SetIamPolicyRequest, com.google.iam.v1.Policy>(
- this, METHODID_SET_IAM_POLICY)))
- .addMethod(
- getGetIamPolicyMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.iam.v1.GetIamPolicyRequest, com.google.iam.v1.Policy>(
- this, METHODID_GET_IAM_POLICY)))
- .addMethod(
- getTestIamPermissionsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.iam.v1.TestIamPermissionsRequest,
- com.google.iam.v1.TestIamPermissionsResponse>(
- this, METHODID_TEST_IAM_PERMISSIONS)))
- .build();
+ return InstanceAdminGrpc.bindService(this);
}
}
/**
- *
+ * A stub to allow clients to do asynchronous rpc calls to service InstanceAdmin.
*
*
* Cloud Spanner Instance Admin API
@@ -1637,7 +1575,7 @@ public void testIamPermissions(
}
/**
- *
+ * A stub to allow clients to do synchronous rpc calls to service InstanceAdmin.
*
*
*/
- public void batchCreateSessions(
+ default void batchCreateSessions(
com.google.spanner.v1.BatchCreateSessionsRequest request,
io.grpc.stub.StreamObserver
* Cloud Spanner Instance Admin API
@@ -2009,7 +1947,7 @@ public com.google.iam.v1.TestIamPermissionsResponse testIamPermissions(
}
/**
- *
+ * A stub to allow clients to do ListenableFuture-style rpc calls to service InstanceAdmin.
*
*
*/
- public void createSession(
+ default void createSession(
com.google.spanner.v1.CreateSessionRequest request,
io.grpc.stub.StreamObserver
* Cloud Spanner Instance Admin API
@@ -2412,10 +2350,10 @@ private static final class MethodHandlers
*/
- public abstract static class SpannerImplBase implements io.grpc.BindableService {
+ public interface AsyncService {
/**
*
@@ -725,7 +725,7 @@ public abstract static class SpannerImplBase implements io.grpc.BindableService
* periodically, e.g., `"SELECT 1"`.
*
+ * Cloud Spanner API
+ * The Cloud Spanner API can be used to manage sessions and execute
+ * transactions on data stored in Cloud Spanner databases.
+ *
+ */
+ public abstract static class SpannerImplBase implements io.grpc.BindableService, AsyncService {
@java.lang.Override
public final io.grpc.ServerServiceDefinition bindService() {
- return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
- .addMethod(
- getCreateSessionMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.CreateSessionRequest, com.google.spanner.v1.Session>(
- this, METHODID_CREATE_SESSION)))
- .addMethod(
- getBatchCreateSessionsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.BatchCreateSessionsRequest,
- com.google.spanner.v1.BatchCreateSessionsResponse>(
- this, METHODID_BATCH_CREATE_SESSIONS)))
- .addMethod(
- getGetSessionMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.GetSessionRequest, com.google.spanner.v1.Session>(
- this, METHODID_GET_SESSION)))
- .addMethod(
- getListSessionsMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.ListSessionsRequest,
- com.google.spanner.v1.ListSessionsResponse>(this, METHODID_LIST_SESSIONS)))
- .addMethod(
- getDeleteSessionMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.DeleteSessionRequest, com.google.protobuf.Empty>(
- this, METHODID_DELETE_SESSION)))
- .addMethod(
- getExecuteSqlMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.ExecuteSqlRequest, com.google.spanner.v1.ResultSet>(
- this, METHODID_EXECUTE_SQL)))
- .addMethod(
- getExecuteStreamingSqlMethod(),
- io.grpc.stub.ServerCalls.asyncServerStreamingCall(
- new MethodHandlers<
- com.google.spanner.v1.ExecuteSqlRequest,
- com.google.spanner.v1.PartialResultSet>(
- this, METHODID_EXECUTE_STREAMING_SQL)))
- .addMethod(
- getExecuteBatchDmlMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.ExecuteBatchDmlRequest,
- com.google.spanner.v1.ExecuteBatchDmlResponse>(
- this, METHODID_EXECUTE_BATCH_DML)))
- .addMethod(
- getReadMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.ReadRequest, com.google.spanner.v1.ResultSet>(
- this, METHODID_READ)))
- .addMethod(
- getStreamingReadMethod(),
- io.grpc.stub.ServerCalls.asyncServerStreamingCall(
- new MethodHandlers<
- com.google.spanner.v1.ReadRequest, com.google.spanner.v1.PartialResultSet>(
- this, METHODID_STREAMING_READ)))
- .addMethod(
- getBeginTransactionMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.BeginTransactionRequest,
- com.google.spanner.v1.Transaction>(this, METHODID_BEGIN_TRANSACTION)))
- .addMethod(
- getCommitMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.CommitRequest, com.google.spanner.v1.CommitResponse>(
- this, METHODID_COMMIT)))
- .addMethod(
- getRollbackMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.RollbackRequest, com.google.protobuf.Empty>(
- this, METHODID_ROLLBACK)))
- .addMethod(
- getPartitionQueryMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.PartitionQueryRequest,
- com.google.spanner.v1.PartitionResponse>(this, METHODID_PARTITION_QUERY)))
- .addMethod(
- getPartitionReadMethod(),
- io.grpc.stub.ServerCalls.asyncUnaryCall(
- new MethodHandlers<
- com.google.spanner.v1.PartitionReadRequest,
- com.google.spanner.v1.PartitionResponse>(this, METHODID_PARTITION_READ)))
- .build();
+ return SpannerGrpc.bindService(this);
}
}
/**
- *
+ * A stub to allow clients to do asynchronous rpc calls to service Spanner.
*
*
* Cloud Spanner API
@@ -1453,7 +1371,7 @@ public void partitionRead(
}
/**
- *
+ * A stub to allow clients to do synchronous rpc calls to service Spanner.
*
*
* Cloud Spanner API
@@ -1762,7 +1680,7 @@ public com.google.spanner.v1.PartitionResponse partitionRead(
}
/**
- *
+ * A stub to allow clients to do ListenableFuture-style rpc calls to service Spanner.
*
*
* Cloud Spanner API
@@ -2064,10 +1982,10 @@ private static final class MethodHandlers
+ * If this is for a partitioned query and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 16;
+ *
+ * @return The dataBoostEnabled.
+ */
+ @java.lang.Override
+ public boolean getDataBoostEnabled() {
+ return dataBoostEnabled_;
+ }
+
private byte memoizedIsInitialized = -1;
@java.lang.Override
@@ -2018,6 +2039,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
if (requestOptions_ != null) {
output.writeMessage(11, getRequestOptions());
}
+ if (dataBoostEnabled_ != false) {
+ output.writeBool(16, dataBoostEnabled_);
+ }
getUnknownFields().writeTo(output);
}
@@ -2067,6 +2091,9 @@ public int getSerializedSize() {
if (requestOptions_ != null) {
size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getRequestOptions());
}
+ if (dataBoostEnabled_ != false) {
+ size += com.google.protobuf.CodedOutputStream.computeBoolSize(16, dataBoostEnabled_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -2105,6 +2132,7 @@ public boolean equals(final java.lang.Object obj) {
if (hasRequestOptions()) {
if (!getRequestOptions().equals(other.getRequestOptions())) return false;
}
+ if (getDataBoostEnabled() != other.getDataBoostEnabled()) return false;
if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true;
}
@@ -2148,6 +2176,8 @@ public int hashCode() {
hash = (37 * hash) + REQUEST_OPTIONS_FIELD_NUMBER;
hash = (53 * hash) + getRequestOptions().hashCode();
}
+ hash = (37 * hash) + DATA_BOOST_ENABLED_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getDataBoostEnabled());
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -2335,6 +2365,7 @@ public Builder clear() {
requestOptionsBuilder_.dispose();
requestOptionsBuilder_ = null;
}
+ dataBoostEnabled_ = false;
return this;
}
@@ -2408,6 +2439,9 @@ private void buildPartial0(com.google.spanner.v1.ExecuteSqlRequest result) {
result.requestOptions_ =
requestOptionsBuilder_ == null ? requestOptions_ : requestOptionsBuilder_.build();
}
+ if (((from_bitField0_ & 0x00000800) != 0)) {
+ result.dataBoostEnabled_ = dataBoostEnabled_;
+ }
}
@java.lang.Override
@@ -2491,6 +2525,9 @@ public Builder mergeFrom(com.google.spanner.v1.ExecuteSqlRequest other) {
if (other.hasRequestOptions()) {
mergeRequestOptions(other.getRequestOptions());
}
+ if (other.getDataBoostEnabled() != false) {
+ setDataBoostEnabled(other.getDataBoostEnabled());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -2590,6 +2627,12 @@ public Builder mergeFrom(
bitField0_ |= 0x00000400;
break;
} // case 90
+ case 128:
+ {
+ dataBoostEnabled_ = input.readBool();
+ bitField0_ |= 0x00000800;
+ break;
+ } // case 128
default:
{
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -4210,6 +4253,68 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(
return requestOptionsBuilder_;
}
+ private boolean dataBoostEnabled_;
+ /**
+ *
+ *
+ * + * If this is for a partitioned query and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 16;
+ *
+ * @return The dataBoostEnabled.
+ */
+ @java.lang.Override
+ public boolean getDataBoostEnabled() {
+ return dataBoostEnabled_;
+ }
+ /**
+ *
+ *
+ * + * If this is for a partitioned query and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 16;
+ *
+ * @param value The dataBoostEnabled to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDataBoostEnabled(boolean value) {
+
+ dataBoostEnabled_ = value;
+ bitField0_ |= 0x00000800;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ *
+ * + * If this is for a partitioned query and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 16;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearDataBoostEnabled() {
+ bitField0_ = (bitField0_ & ~0x00000800);
+ dataBoostEnabled_ = false;
+ onChanged();
+ return this;
+ }
+
@java.lang.Override
public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java
index a0093f23f96..832c2f3c503 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java
@@ -429,4 +429,20 @@ com.google.spanner.v1.Type getParamTypesOrDefault(
* .google.spanner.v1.RequestOptions request_options = 11;
*/
com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder();
+
+ /**
+ *
+ *
+ * + * If this is for a partitioned query and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 16;
+ *
+ * @return The dataBoostEnabled.
+ */
+ boolean getDataBoostEnabled();
}
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeysProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeysProto.java
index b79f3d8169b..c448bd7a673 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeysProto.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeysProto.java
@@ -54,12 +54,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ ".ListValueH\001B\020\n\016start_key_typeB\016\n\014end_ke"
+ "y_type\"l\n\006KeySet\022(\n\004keys\030\001 \003(\0132\032.google."
+ "protobuf.ListValue\022+\n\006ranges\030\002 \003(\0132\033.goo"
- + "gle.spanner.v1.KeyRange\022\013\n\003all\030\003 \001(\010B\257\001\n"
- + "\025com.google.spanner.v1B\tKeysProtoP\001Z8goo"
- + "gle.golang.org/genproto/googleapis/spann"
- + "er/v1;spanner\252\002\027Google.Cloud.Spanner.V1\312"
- + "\002\027Google\\Cloud\\Spanner\\V1\352\002\032Google::Clou"
- + "d::Spanner::V1b\006proto3"
+ + "gle.spanner.v1.KeyRange\022\013\n\003all\030\003 \001(\010B\254\001\n"
+ + "\025com.google.spanner.v1B\tKeysProtoP\001Z5clo"
+ + "ud.google.com/go/spanner/apiv1/spannerpb"
+ + ";spannerpb\252\002\027Google.Cloud.Spanner.V1\312\002\027G"
+ + "oogle\\Cloud\\Spanner\\V1\352\002\032Google::Cloud::"
+ + "Spanner::V1b\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationProto.java
index 1c10bfaa9ca..a1706fc4cd1 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationProto.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationProto.java
@@ -63,12 +63,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "(\t\022*\n\006values\030\003 \003(\0132\032.google.protobuf.Lis"
+ "tValue\032M\n\006Delete\022\022\n\005table\030\001 \001(\tB\003\340A\002\022/\n\007"
+ "key_set\030\002 \001(\0132\031.google.spanner.v1.KeySet"
- + "B\003\340A\002B\013\n\toperationB\263\001\n\025com.google.spanne"
- + "r.v1B\rMutationProtoP\001Z8google.golang.org"
- + "/genproto/googleapis/spanner/v1;spanner\252"
- + "\002\027Google.Cloud.Spanner.V1\312\002\027Google\\Cloud"
- + "\\Spanner\\V1\352\002\032Google::Cloud::Spanner::V1"
- + "b\006proto3"
+ + "B\003\340A\002B\013\n\toperationB\260\001\n\025com.google.spanne"
+ + "r.v1B\rMutationProtoP\001Z5cloud.google.com/"
+ + "go/spanner/apiv1/spannerpb;spannerpb\252\002\027G"
+ + "oogle.Cloud.Spanner.V1\312\002\027Google\\Cloud\\Sp"
+ + "anner\\V1\352\002\032Google::Cloud::Spanner::V1b\006p"
+ + "roto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanProto.java
index 21cc5708fbc..c3bc87108b6 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanProto.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanProto.java
@@ -75,12 +75,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "\001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\"8\n\004Kind\022\024\n\020KIND_U"
+ "NSPECIFIED\020\000\022\016\n\nRELATIONAL\020\001\022\n\n\006SCALAR\020\002"
+ "\"<\n\tQueryPlan\022/\n\nplan_nodes\030\001 \003(\0132\033.goog"
- + "le.spanner.v1.PlanNodeB\264\001\n\025com.google.sp"
- + "anner.v1B\016QueryPlanProtoP\001Z8google.golan"
- + "g.org/genproto/googleapis/spanner/v1;spa"
- + "nner\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\"
- + "Cloud\\Spanner\\V1\352\002\032Google::Cloud::Spanne"
- + "r::V1b\006proto3"
+ + "le.spanner.v1.PlanNodeB\261\001\n\025com.google.sp"
+ + "anner.v1B\016QueryPlanProtoP\001Z5cloud.google"
+ + ".com/go/spanner/apiv1/spannerpb;spannerp"
+ + "b\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\Clo"
+ + "ud\\Spanner\\V1\352\002\032Google::Cloud::Spanner::"
+ + "V1b\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java
index d0dffe37c1c..5b75750eabf 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java
@@ -541,6 +541,27 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(
: requestOptions_;
}
+ public static final int DATA_BOOST_ENABLED_FIELD_NUMBER = 15;
+ private boolean dataBoostEnabled_ = false;
+ /**
+ *
+ *
+ * + * If this is for a partitioned read and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 15;
+ *
+ * @return The dataBoostEnabled.
+ */
+ @java.lang.Override
+ public boolean getDataBoostEnabled() {
+ return dataBoostEnabled_;
+ }
+
private byte memoizedIsInitialized = -1;
@java.lang.Override
@@ -585,6 +606,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
if (requestOptions_ != null) {
output.writeMessage(11, getRequestOptions());
}
+ if (dataBoostEnabled_ != false) {
+ output.writeBool(15, dataBoostEnabled_);
+ }
getUnknownFields().writeTo(output);
}
@@ -629,6 +653,9 @@ public int getSerializedSize() {
if (requestOptions_ != null) {
size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getRequestOptions());
}
+ if (dataBoostEnabled_ != false) {
+ size += com.google.protobuf.CodedOutputStream.computeBoolSize(15, dataBoostEnabled_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -663,6 +690,7 @@ public boolean equals(final java.lang.Object obj) {
if (hasRequestOptions()) {
if (!getRequestOptions().equals(other.getRequestOptions())) return false;
}
+ if (getDataBoostEnabled() != other.getDataBoostEnabled()) return false;
if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true;
}
@@ -702,6 +730,8 @@ public int hashCode() {
hash = (37 * hash) + REQUEST_OPTIONS_FIELD_NUMBER;
hash = (53 * hash) + getRequestOptions().hashCode();
}
+ hash = (37 * hash) + DATA_BOOST_ENABLED_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getDataBoostEnabled());
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -864,6 +894,7 @@ public Builder clear() {
requestOptionsBuilder_.dispose();
requestOptionsBuilder_ = null;
}
+ dataBoostEnabled_ = false;
return this;
}
@@ -937,6 +968,9 @@ private void buildPartial0(com.google.spanner.v1.ReadRequest result) {
result.requestOptions_ =
requestOptionsBuilder_ == null ? requestOptions_ : requestOptionsBuilder_.build();
}
+ if (((from_bitField0_ & 0x00000400) != 0)) {
+ result.dataBoostEnabled_ = dataBoostEnabled_;
+ }
}
@java.lang.Override
@@ -1027,6 +1061,9 @@ public Builder mergeFrom(com.google.spanner.v1.ReadRequest other) {
if (other.hasRequestOptions()) {
mergeRequestOptions(other.getRequestOptions());
}
+ if (other.getDataBoostEnabled() != false) {
+ setDataBoostEnabled(other.getDataBoostEnabled());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -1114,6 +1151,12 @@ public Builder mergeFrom(
bitField0_ |= 0x00000200;
break;
} // case 90
+ case 120:
+ {
+ dataBoostEnabled_ = input.readBool();
+ bitField0_ |= 0x00000400;
+ break;
+ } // case 120
default:
{
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -2477,6 +2520,68 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(
return requestOptionsBuilder_;
}
+ private boolean dataBoostEnabled_;
+ /**
+ *
+ *
+ * + * If this is for a partitioned read and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 15;
+ *
+ * @return The dataBoostEnabled.
+ */
+ @java.lang.Override
+ public boolean getDataBoostEnabled() {
+ return dataBoostEnabled_;
+ }
+ /**
+ *
+ *
+ * + * If this is for a partitioned read and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 15;
+ *
+ * @param value The dataBoostEnabled to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDataBoostEnabled(boolean value) {
+
+ dataBoostEnabled_ = value;
+ bitField0_ |= 0x00000400;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ *
+ * + * If this is for a partitioned read and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 15;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearDataBoostEnabled() {
+ bitField0_ = (bitField0_ & ~0x00000400);
+ dataBoostEnabled_ = false;
+ onChanged();
+ return this;
+ }
+
@java.lang.Override
public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java
index 5988afde18f..fc986d632d4 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java
@@ -344,4 +344,20 @@ public interface ReadRequestOrBuilder
* .google.spanner.v1.RequestOptions request_options = 11;
*/
com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder();
+
+ /**
+ *
+ *
+ * + * If this is for a partitioned read and this field is set to `true`, the + * request will be executed via Spanner independent compute resources. + * If the field is set to `true` but the request does not set + * `partition_token`, the API will return an `INVALID_ARGUMENT` error. + *+ * + *
bool data_boost_enabled = 15;
+ *
+ * @return The dataBoostEnabled.
+ */
+ boolean getDataBoostEnabled();
}
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java
index 3c90e33d825..72abfc21124 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java
@@ -75,12 +75,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "nner.v1.QueryPlan\022,\n\013query_stats\030\002 \001(\0132\027"
+ ".google.protobuf.Struct\022\031\n\017row_count_exa"
+ "ct\030\003 \001(\003H\000\022\037\n\025row_count_lower_bound\030\004 \001("
- + "\003H\000B\013\n\trow_countB\267\001\n\025com.google.spanner."
- + "v1B\016ResultSetProtoP\001Z8google.golang.org/"
- + "genproto/googleapis/spanner/v1;spanner\370\001"
- + "\001\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\Clo"
- + "ud\\Spanner\\V1\352\002\032Google::Cloud::Spanner::"
- + "V1b\006proto3"
+ + "\003H\000B\013\n\trow_countB\264\001\n\025com.google.spanner."
+ + "v1B\016ResultSetProtoP\001Z5cloud.google.com/g"
+ + "o/spanner/apiv1/spannerpb;spannerpb\370\001\001\252\002"
+ + "\027Google.Cloud.Spanner.V1\312\002\027Google\\Cloud\\"
+ + "Spanner\\V1\352\002\032Google::Cloud::Spanner::V1b"
+ + "\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java
index 21c752c5631..4cf68b20170 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java
@@ -191,7 +191,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "\n\017transaction_tag\030\003 \001(\t\"^\n\010Priority\022\030\n\024P"
+ "RIORITY_UNSPECIFIED\020\000\022\020\n\014PRIORITY_LOW\020\001\022"
+ "\023\n\017PRIORITY_MEDIUM\020\002\022\021\n\rPRIORITY_HIGH\020\003\""
- + "\344\005\n\021ExecuteSqlRequest\0227\n\007session\030\001 \001(\tB&"
+ + "\200\006\n\021ExecuteSqlRequest\0227\n\007session\030\001 \001(\tB&"
+ "\340A\002\372A \n\036spanner.googleapis.com/Session\022;"
+ "\n\013transaction\030\002 \001(\0132&.google.spanner.v1."
+ "TransactionSelector\022\020\n\003sql\030\003 \001(\tB\003\340A\002\022\'\n"
@@ -204,157 +204,158 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "\001(\003\022H\n\rquery_options\030\n \001(\01321.google.span"
+ "ner.v1.ExecuteSqlRequest.QueryOptions\022:\n"
+ "\017request_options\030\013 \001(\0132!.google.spanner."
- + "v1.RequestOptions\032O\n\014QueryOptions\022\031\n\021opt"
- + "imizer_version\030\001 \001(\t\022$\n\034optimizer_statis"
- + "tics_package\030\002 \001(\t\032J\n\017ParamTypesEntry\022\013\n"
- + "\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027.google.spann"
- + "er.v1.Type:\0028\001\".\n\tQueryMode\022\n\n\006NORMAL\020\000\022"
- + "\010\n\004PLAN\020\001\022\013\n\007PROFILE\020\002\"\240\004\n\026ExecuteBatchD"
- + "mlRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036span"
- + "ner.googleapis.com/Session\022@\n\013transactio"
- + "n\030\002 \001(\0132&.google.spanner.v1.TransactionS"
- + "electorB\003\340A\002\022L\n\nstatements\030\003 \003(\01323.googl"
- + "e.spanner.v1.ExecuteBatchDmlRequest.Stat"
- + "ementB\003\340A\002\022\022\n\005seqno\030\004 \001(\003B\003\340A\002\022:\n\017reques"
- + "t_options\030\005 \001(\0132!.google.spanner.v1.Requ"
- + "estOptions\032\354\001\n\tStatement\022\020\n\003sql\030\001 \001(\tB\003\340"
- + "A\002\022\'\n\006params\030\002 \001(\0132\027.google.protobuf.Str"
- + "uct\022X\n\013param_types\030\003 \003(\0132C.google.spanne"
- + "r.v1.ExecuteBatchDmlRequest.Statement.Pa"
- + "ramTypesEntry\032J\n\017ParamTypesEntry\022\013\n\003key\030"
- + "\001 \001(\t\022&\n\005value\030\002 \001(\0132\027.google.spanner.v1"
- + ".Type:\0028\001\"p\n\027ExecuteBatchDmlResponse\0221\n\013"
- + "result_sets\030\001 \003(\0132\034.google.spanner.v1.Re"
- + "sultSet\022\"\n\006status\030\002 \001(\0132\022.google.rpc.Sta"
- + "tus\"H\n\020PartitionOptions\022\034\n\024partition_siz"
- + "e_bytes\030\001 \001(\003\022\026\n\016max_partitions\030\002 \001(\003\"\243\003"
- + "\n\025PartitionQueryRequest\0227\n\007session\030\001 \001(\t"
- + "B&\340A\002\372A \n\036spanner.googleapis.com/Session"
- + "\022;\n\013transaction\030\002 \001(\0132&.google.spanner.v"
- + "1.TransactionSelector\022\020\n\003sql\030\003 \001(\tB\003\340A\002\022"
- + "\'\n\006params\030\004 \001(\0132\027.google.protobuf.Struct"
- + "\022M\n\013param_types\030\005 \003(\01328.google.spanner.v"
- + "1.PartitionQueryRequest.ParamTypesEntry\022"
- + ">\n\021partition_options\030\006 \001(\0132#.google.span"
- + "ner.v1.PartitionOptions\032J\n\017ParamTypesEnt"
- + "ry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027.google."
- + "spanner.v1.Type:\0028\001\"\261\002\n\024PartitionReadReq"
- + "uest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.g"
- + "oogleapis.com/Session\022;\n\013transaction\030\002 \001"
- + "(\0132&.google.spanner.v1.TransactionSelect"
- + "or\022\022\n\005table\030\003 \001(\tB\003\340A\002\022\r\n\005index\030\004 \001(\t\022\017\n"
- + "\007columns\030\005 \003(\t\022/\n\007key_set\030\006 \001(\0132\031.google"
- + ".spanner.v1.KeySetB\003\340A\002\022>\n\021partition_opt"
- + "ions\030\t \001(\0132#.google.spanner.v1.Partition"
- + "Options\"$\n\tPartition\022\027\n\017partition_token\030"
- + "\001 \001(\014\"z\n\021PartitionResponse\0220\n\npartitions"
- + "\030\001 \003(\0132\034.google.spanner.v1.Partition\0223\n\013"
- + "transaction\030\002 \001(\0132\036.google.spanner.v1.Tr"
- + "ansaction\"\347\002\n\013ReadRequest\0227\n\007session\030\001 \001"
- + "(\tB&\340A\002\372A \n\036spanner.googleapis.com/Sessi"
- + "on\022;\n\013transaction\030\002 \001(\0132&.google.spanner"
- + ".v1.TransactionSelector\022\022\n\005table\030\003 \001(\tB\003"
- + "\340A\002\022\r\n\005index\030\004 \001(\t\022\024\n\007columns\030\005 \003(\tB\003\340A\002"
- + "\022/\n\007key_set\030\006 \001(\0132\031.google.spanner.v1.Ke"
- + "ySetB\003\340A\002\022\r\n\005limit\030\010 \001(\003\022\024\n\014resume_token"
- + "\030\t \001(\014\022\027\n\017partition_token\030\n \001(\014\022:\n\017reque"
- + "st_options\030\013 \001(\0132!.google.spanner.v1.Req"
- + "uestOptions\"\313\001\n\027BeginTransactionRequest\022"
- + "7\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.google"
- + "apis.com/Session\022;\n\007options\030\002 \001(\0132%.goog"
- + "le.spanner.v1.TransactionOptionsB\003\340A\002\022:\n"
- + "\017request_options\030\003 \001(\0132!.google.spanner."
- + "v1.RequestOptions\"\303\002\n\rCommitRequest\0227\n\007s"
- + "ession\030\001 \001(\tB&\340A\002\372A \n\036spanner.googleapis"
- + ".com/Session\022\030\n\016transaction_id\030\002 \001(\014H\000\022G"
- + "\n\026single_use_transaction\030\003 \001(\0132%.google."
- + "spanner.v1.TransactionOptionsH\000\022.\n\tmutat"
- + "ions\030\004 \003(\0132\033.google.spanner.v1.Mutation\022"
- + "\033\n\023return_commit_stats\030\005 \001(\010\022:\n\017request_"
- + "options\030\006 \001(\0132!.google.spanner.v1.Reques"
- + "tOptionsB\r\n\013transaction\"g\n\017RollbackReque"
- + "st\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.goo"
- + "gleapis.com/Session\022\033\n\016transaction_id\030\002 "
- + "\001(\014B\003\340A\0022\300\026\n\007Spanner\022\246\001\n\rCreateSession\022\'"
- + ".google.spanner.v1.CreateSessionRequest\032"
- + "\032.google.spanner.v1.Session\"P\202\323\344\223\002?\":/v1"
- + "/{database=projects/*/instances/*/databa"
- + "ses/*}/sessions:\001*\332A\010database\022\340\001\n\023BatchC"
- + "reateSessions\022-.google.spanner.v1.BatchC"
- + "reateSessionsRequest\032..google.spanner.v1"
- + ".BatchCreateSessionsResponse\"j\202\323\344\223\002K\"F/v"
- + "1/{database=projects/*/instances/*/datab"
- + "ases/*}/sessions:batchCreate:\001*\332A\026databa"
- + "se,session_count\022\227\001\n\nGetSession\022$.google"
- + ".spanner.v1.GetSessionRequest\032\032.google.s"
- + "panner.v1.Session\"G\202\323\344\223\002:\0228/v1/{name=pro"
- + "jects/*/instances/*/databases/*/sessions"
- + "/*}\332A\004name\022\256\001\n\014ListSessions\022&.google.spa"
- + "nner.v1.ListSessionsRequest\032\'.google.spa"
- + "nner.v1.ListSessionsResponse\"M\202\323\344\223\002<\022:/v"
- + "1/{database=projects/*/instances/*/datab"
- + "ases/*}/sessions\332A\010database\022\231\001\n\rDeleteSe"
- + "ssion\022\'.google.spanner.v1.DeleteSessionR"
- + "equest\032\026.google.protobuf.Empty\"G\202\323\344\223\002:*8"
- + "/v1/{name=projects/*/instances/*/databas"
- + "es/*/sessions/*}\332A\004name\022\243\001\n\nExecuteSql\022$"
- + ".google.spanner.v1.ExecuteSqlRequest\032\034.g"
- + "oogle.spanner.v1.ResultSet\"Q\202\323\344\223\002K\"F/v1/"
- + "{session=projects/*/instances/*/database"
- + "s/*/sessions/*}:executeSql:\001*\022\276\001\n\023Execut"
- + "eStreamingSql\022$.google.spanner.v1.Execut"
- + "eSqlRequest\032#.google.spanner.v1.PartialR"
- + "esultSet\"Z\202\323\344\223\002T\"O/v1/{session=projects/"
- + "*/instances/*/databases/*/sessions/*}:ex"
- + "ecuteStreamingSql:\001*0\001\022\300\001\n\017ExecuteBatchD"
- + "ml\022).google.spanner.v1.ExecuteBatchDmlRe"
- + "quest\032*.google.spanner.v1.ExecuteBatchDm"
- + "lResponse\"V\202\323\344\223\002P\"K/v1/{session=projects"
- + "/*/instances/*/databases/*/sessions/*}:e"
- + "xecuteBatchDml:\001*\022\221\001\n\004Read\022\036.google.span"
- + "ner.v1.ReadRequest\032\034.google.spanner.v1.R"
- + "esultSet\"K\202\323\344\223\002E\"@/v1/{session=projects/"
- + "*/instances/*/databases/*/sessions/*}:re"
- + "ad:\001*\022\254\001\n\rStreamingRead\022\036.google.spanner"
- + ".v1.ReadRequest\032#.google.spanner.v1.Part"
- + "ialResultSet\"T\202\323\344\223\002N\"I/v1/{session=proje"
- + "cts/*/instances/*/databases/*/sessions/*"
- + "}:streamingRead:\001*0\001\022\311\001\n\020BeginTransactio"
- + "n\022*.google.spanner.v1.BeginTransactionRe"
- + "quest\032\036.google.spanner.v1.Transaction\"i\202"
- + "\323\344\223\002Q\"L/v1/{session=projects/*/instances"
- + "/*/databases/*/sessions/*}:beginTransact"
- + "ion:\001*\332A\017session,options\022\353\001\n\006Commit\022 .go"
- + "ogle.spanner.v1.CommitRequest\032!.google.s"
- + "panner.v1.CommitResponse\"\233\001\202\323\344\223\002G\"B/v1/{"
+ + "v1.RequestOptions\022\032\n\022data_boost_enabled\030"
+ + "\020 \001(\010\032O\n\014QueryOptions\022\031\n\021optimizer_versi"
+ + "on\030\001 \001(\t\022$\n\034optimizer_statistics_package"
+ + "\030\002 \001(\t\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&"
+ + "\n\005value\030\002 \001(\0132\027.google.spanner.v1.Type:\002"
+ + "8\001\".\n\tQueryMode\022\n\n\006NORMAL\020\000\022\010\n\004PLAN\020\001\022\013\n"
+ + "\007PROFILE\020\002\"\240\004\n\026ExecuteBatchDmlRequest\0227\n"
+ + "\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.googleap"
+ + "is.com/Session\022@\n\013transaction\030\002 \001(\0132&.go"
+ + "ogle.spanner.v1.TransactionSelectorB\003\340A\002"
+ + "\022L\n\nstatements\030\003 \003(\01323.google.spanner.v1"
+ + ".ExecuteBatchDmlRequest.StatementB\003\340A\002\022\022"
+ + "\n\005seqno\030\004 \001(\003B\003\340A\002\022:\n\017request_options\030\005 "
+ + "\001(\0132!.google.spanner.v1.RequestOptions\032\354"
+ + "\001\n\tStatement\022\020\n\003sql\030\001 \001(\tB\003\340A\002\022\'\n\006params"
+ + "\030\002 \001(\0132\027.google.protobuf.Struct\022X\n\013param"
+ + "_types\030\003 \003(\0132C.google.spanner.v1.Execute"
+ + "BatchDmlRequest.Statement.ParamTypesEntr"
+ + "y\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005val"
+ + "ue\030\002 \001(\0132\027.google.spanner.v1.Type:\0028\001\"p\n"
+ + "\027ExecuteBatchDmlResponse\0221\n\013result_sets\030"
+ + "\001 \003(\0132\034.google.spanner.v1.ResultSet\022\"\n\006s"
+ + "tatus\030\002 \001(\0132\022.google.rpc.Status\"H\n\020Parti"
+ + "tionOptions\022\034\n\024partition_size_bytes\030\001 \001("
+ + "\003\022\026\n\016max_partitions\030\002 \001(\003\"\243\003\n\025PartitionQ"
+ + "ueryRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036sp"
+ + "anner.googleapis.com/Session\022;\n\013transact"
+ + "ion\030\002 \001(\0132&.google.spanner.v1.Transactio"
+ + "nSelector\022\020\n\003sql\030\003 \001(\tB\003\340A\002\022\'\n\006params\030\004 "
+ + "\001(\0132\027.google.protobuf.Struct\022M\n\013param_ty"
+ + "pes\030\005 \003(\01328.google.spanner.v1.PartitionQ"
+ + "ueryRequest.ParamTypesEntry\022>\n\021partition"
+ + "_options\030\006 \001(\0132#.google.spanner.v1.Parti"
+ + "tionOptions\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 "
+ + "\001(\t\022&\n\005value\030\002 \001(\0132\027.google.spanner.v1.T"
+ + "ype:\0028\001\"\261\002\n\024PartitionReadRequest\0227\n\007sess"
+ + "ion\030\001 \001(\tB&\340A\002\372A \n\036spanner.googleapis.co"
+ + "m/Session\022;\n\013transaction\030\002 \001(\0132&.google."
+ + "spanner.v1.TransactionSelector\022\022\n\005table\030"
+ + "\003 \001(\tB\003\340A\002\022\r\n\005index\030\004 \001(\t\022\017\n\007columns\030\005 \003"
+ + "(\t\022/\n\007key_set\030\006 \001(\0132\031.google.spanner.v1."
+ + "KeySetB\003\340A\002\022>\n\021partition_options\030\t \001(\0132#"
+ + ".google.spanner.v1.PartitionOptions\"$\n\tP"
+ + "artition\022\027\n\017partition_token\030\001 \001(\014\"z\n\021Par"
+ + "titionResponse\0220\n\npartitions\030\001 \003(\0132\034.goo"
+ + "gle.spanner.v1.Partition\0223\n\013transaction\030"
+ + "\002 \001(\0132\036.google.spanner.v1.Transaction\"\203\003"
+ + "\n\013ReadRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036"
+ + "spanner.googleapis.com/Session\022;\n\013transa"
+ + "ction\030\002 \001(\0132&.google.spanner.v1.Transact"
+ + "ionSelector\022\022\n\005table\030\003 \001(\tB\003\340A\002\022\r\n\005index"
+ + "\030\004 \001(\t\022\024\n\007columns\030\005 \003(\tB\003\340A\002\022/\n\007key_set\030"
+ + "\006 \001(\0132\031.google.spanner.v1.KeySetB\003\340A\002\022\r\n"
+ + "\005limit\030\010 \001(\003\022\024\n\014resume_token\030\t \001(\014\022\027\n\017pa"
+ + "rtition_token\030\n \001(\014\022:\n\017request_options\030\013"
+ + " \001(\0132!.google.spanner.v1.RequestOptions\022"
+ + "\032\n\022data_boost_enabled\030\017 \001(\010\"\313\001\n\027BeginTra"
+ + "nsactionRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A "
+ + "\n\036spanner.googleapis.com/Session\022;\n\007opti"
+ + "ons\030\002 \001(\0132%.google.spanner.v1.Transactio"
+ + "nOptionsB\003\340A\002\022:\n\017request_options\030\003 \001(\0132!"
+ + ".google.spanner.v1.RequestOptions\"\303\002\n\rCo"
+ + "mmitRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036sp"
+ + "anner.googleapis.com/Session\022\030\n\016transact"
+ + "ion_id\030\002 \001(\014H\000\022G\n\026single_use_transaction"
+ + "\030\003 \001(\0132%.google.spanner.v1.TransactionOp"
+ + "tionsH\000\022.\n\tmutations\030\004 \003(\0132\033.google.span"
+ + "ner.v1.Mutation\022\033\n\023return_commit_stats\030\005"
+ + " \001(\010\022:\n\017request_options\030\006 \001(\0132!.google.s"
+ + "panner.v1.RequestOptionsB\r\n\013transaction\""
+ + "g\n\017RollbackRequest\0227\n\007session\030\001 \001(\tB&\340A\002"
+ + "\372A \n\036spanner.googleapis.com/Session\022\033\n\016t"
+ + "ransaction_id\030\002 \001(\014B\003\340A\0022\300\026\n\007Spanner\022\246\001\n"
+ + "\rCreateSession\022\'.google.spanner.v1.Creat"
+ + "eSessionRequest\032\032.google.spanner.v1.Sess"
+ + "ion\"P\202\323\344\223\002?\":/v1/{database=projects/*/in"
+ + "stances/*/databases/*}/sessions:\001*\332A\010dat"
+ + "abase\022\340\001\n\023BatchCreateSessions\022-.google.s"
+ + "panner.v1.BatchCreateSessionsRequest\032..g"
+ + "oogle.spanner.v1.BatchCreateSessionsResp"
+ + "onse\"j\202\323\344\223\002K\"F/v1/{database=projects/*/i"
+ + "nstances/*/databases/*}/sessions:batchCr"
+ + "eate:\001*\332A\026database,session_count\022\227\001\n\nGet"
+ + "Session\022$.google.spanner.v1.GetSessionRe"
+ + "quest\032\032.google.spanner.v1.Session\"G\202\323\344\223\002"
+ + ":\0228/v1/{name=projects/*/instances/*/data"
+ + "bases/*/sessions/*}\332A\004name\022\256\001\n\014ListSessi"
+ + "ons\022&.google.spanner.v1.ListSessionsRequ"
+ + "est\032\'.google.spanner.v1.ListSessionsResp"
+ + "onse\"M\202\323\344\223\002<\022:/v1/{database=projects/*/i"
+ + "nstances/*/databases/*}/sessions\332A\010datab"
+ + "ase\022\231\001\n\rDeleteSession\022\'.google.spanner.v"
+ + "1.DeleteSessionRequest\032\026.google.protobuf"
+ + ".Empty\"G\202\323\344\223\002:*8/v1/{name=projects/*/ins"
+ + "tances/*/databases/*/sessions/*}\332A\004name\022"
+ + "\243\001\n\nExecuteSql\022$.google.spanner.v1.Execu"
+ + "teSqlRequest\032\034.google.spanner.v1.ResultS"
+ + "et\"Q\202\323\344\223\002K\"F/v1/{session=projects/*/inst"
+ + "ances/*/databases/*/sessions/*}:executeS"
+ + "ql:\001*\022\276\001\n\023ExecuteStreamingSql\022$.google.s"
+ + "panner.v1.ExecuteSqlRequest\032#.google.spa"
+ + "nner.v1.PartialResultSet\"Z\202\323\344\223\002T\"O/v1/{s"
+ + "ession=projects/*/instances/*/databases/"
+ + "*/sessions/*}:executeStreamingSql:\001*0\001\022\300"
+ + "\001\n\017ExecuteBatchDml\022).google.spanner.v1.E"
+ + "xecuteBatchDmlRequest\032*.google.spanner.v"
+ + "1.ExecuteBatchDmlResponse\"V\202\323\344\223\002P\"K/v1/{"
+ "session=projects/*/instances/*/databases"
- + "/*/sessions/*}:commit:\001*\332A session,trans"
- + "action_id,mutations\332A(session,single_use"
- + "_transaction,mutations\022\260\001\n\010Rollback\022\".go"
- + "ogle.spanner.v1.RollbackRequest\032\026.google"
- + ".protobuf.Empty\"h\202\323\344\223\002I\"D/v1/{session=pr"
- + "ojects/*/instances/*/databases/*/session"
- + "s/*}:rollback:\001*\332A\026session,transaction_i"
- + "d\022\267\001\n\016PartitionQuery\022(.google.spanner.v1"
- + ".PartitionQueryRequest\032$.google.spanner."
- + "v1.PartitionResponse\"U\202\323\344\223\002O\"J/v1/{sessi"
+ + "/*/sessions/*}:executeBatchDml:\001*\022\221\001\n\004Re"
+ + "ad\022\036.google.spanner.v1.ReadRequest\032\034.goo"
+ + "gle.spanner.v1.ResultSet\"K\202\323\344\223\002E\"@/v1/{s"
+ + "ession=projects/*/instances/*/databases/"
+ + "*/sessions/*}:read:\001*\022\254\001\n\rStreamingRead\022"
+ + "\036.google.spanner.v1.ReadRequest\032#.google"
+ + ".spanner.v1.PartialResultSet\"T\202\323\344\223\002N\"I/v"
+ + "1/{session=projects/*/instances/*/databa"
+ + "ses/*/sessions/*}:streamingRead:\001*0\001\022\311\001\n"
+ + "\020BeginTransaction\022*.google.spanner.v1.Be"
+ + "ginTransactionRequest\032\036.google.spanner.v"
+ + "1.Transaction\"i\202\323\344\223\002Q\"L/v1/{session=proj"
+ + "ects/*/instances/*/databases/*/sessions/"
+ + "*}:beginTransaction:\001*\332A\017session,options"
+ + "\022\353\001\n\006Commit\022 .google.spanner.v1.CommitRe"
+ + "quest\032!.google.spanner.v1.CommitResponse"
+ + "\"\233\001\202\323\344\223\002G\"B/v1/{session=projects/*/insta"
+ + "nces/*/databases/*/sessions/*}:commit:\001*"
+ + "\332A session,transaction_id,mutations\332A(se"
+ + "ssion,single_use_transaction,mutations\022\260"
+ + "\001\n\010Rollback\022\".google.spanner.v1.Rollback"
+ + "Request\032\026.google.protobuf.Empty\"h\202\323\344\223\002I\""
+ + "D/v1/{session=projects/*/instances/*/dat"
+ + "abases/*/sessions/*}:rollback:\001*\332A\026sessi"
+ + "on,transaction_id\022\267\001\n\016PartitionQuery\022(.g"
+ + "oogle.spanner.v1.PartitionQueryRequest\032$"
+ + ".google.spanner.v1.PartitionResponse\"U\202\323"
+ + "\344\223\002O\"J/v1/{session=projects/*/instances/"
+ + "*/databases/*/sessions/*}:partitionQuery"
+ + ":\001*\022\264\001\n\rPartitionRead\022\'.google.spanner.v"
+ + "1.PartitionReadRequest\032$.google.spanner."
+ + "v1.PartitionResponse\"T\202\323\344\223\002N\"I/v1/{sessi"
+ "on=projects/*/instances/*/databases/*/se"
- + "ssions/*}:partitionQuery:\001*\022\264\001\n\rPartitio"
- + "nRead\022\'.google.spanner.v1.PartitionReadR"
- + "equest\032$.google.spanner.v1.PartitionResp"
- + "onse\"T\202\323\344\223\002N\"I/v1/{session=projects/*/in"
- + "stances/*/databases/*/sessions/*}:partit"
- + "ionRead:\001*\032w\312A\026spanner.googleapis.com\322A["
- + "https://www.googleapis.com/auth/cloud-pl"
- + "atform,https://www.googleapis.com/auth/s"
- + "panner.dataB\224\002\n\025com.google.spanner.v1B\014S"
- + "pannerProtoP\001Z8google.golang.org/genprot"
- + "o/googleapis/spanner/v1;spanner\252\002\027Google"
- + ".Cloud.Spanner.V1\312\002\027Google\\Cloud\\Spanner"
- + "\\V1\352\002\032Google::Cloud::Spanner::V1\352A_\n\037spa"
- + "nner.googleapis.com/Database\022