diff --git a/CHANGELOG.md b/CHANGELOG.md index 092840f17b7..8d41e5d09d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## [6.22.0](https://github.com/googleapis/java-spanner/compare/v6.21.2...v6.22.0) (2022-03-25) + + +### Features + +* Cross Region backup proto changes ([#1754](https://github.com/googleapis/java-spanner/issues/1754)) ([6d64104](https://github.com/googleapis/java-spanner/commit/6d641044fae595acaafd6020359598c0efd4551f)) +* support PG show transaction isolation level ([#1777](https://github.com/googleapis/java-spanner/issues/1777)) ([111f74c](https://github.com/googleapis/java-spanner/commit/111f74c36776a481452ccb9b631a017cab592189)) + + +### Bug Fixes + +* Correct recording values in opencensus measureMap in HeaderInterceptor ([#1726](https://github.com/googleapis/java-spanner/issues/1726)) ([bdb2b89](https://github.com/googleapis/java-spanner/commit/bdb2b89e17fe0957e393aea3a0b2f310158dc1e8)) +* return errors from BatchCreateSession to dialect detection ([#1760](https://github.com/googleapis/java-spanner/issues/1760)) ([6550a9d](https://github.com/googleapis/java-spanner/commit/6550a9d64b3e5525085f26bf1344e4524f8d0ffb)), closes [#1759](https://github.com/googleapis/java-spanner/issues/1759) + + +### Dependencies + +* update dependency com.google.cloud:google-cloud-trace to v2.1.7 ([#1748](https://github.com/googleapis/java-spanner/issues/1748)) ([a794387](https://github.com/googleapis/java-spanner/commit/a7943878ccebb2e48431fb50a0e9f3974e21dcfa)) +* update dependency com.google.cloud:google-cloud-trace to v2.1.8 ([#1757](https://github.com/googleapis/java-spanner/issues/1757)) ([2b54949](https://github.com/googleapis/java-spanner/commit/2b54949ec5082f1aab4b3b5b46bf0bef94f73d9e)) +* update dependency com.google.cloud:google-cloud-trace to v2.1.9 ([#1782](https://github.com/googleapis/java-spanner/issues/1782)) ([d623b7e](https://github.com/googleapis/java-spanner/commit/d623b7e40592fd02e2f08355a002205fbbce14f5)) +* update dependency org.json:json to v20220320 ([#1761](https://github.com/googleapis/java-spanner/issues/1761)) ([6eee5eb](https://github.com/googleapis/java-spanner/commit/6eee5ebf5117d59e001e85546bf046970f367505)) + ### [6.21.2](https://github.com/googleapis/java-spanner/compare/v6.21.1...v6.21.2) (2022-03-10) diff --git a/README.md b/README.md index 50bacba1eb1..00209a3ee31 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file com.google.cloud libraries-bom - 24.4.0 + 25.0.0 pom import @@ -41,7 +41,7 @@ If you are using Maven without BOM, add this to your dependencies: com.google.cloud google-cloud-spanner - 6.20.0 + 6.21.2 ``` @@ -56,13 +56,13 @@ implementation 'com.google.cloud:google-cloud-spanner' If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-spanner:6.21.1' +implementation 'com.google.cloud:google-cloud-spanner:6.21.2' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.21.1" +libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.21.2" ``` ## Authentication diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index f2377a27b70..12627c447cf 100644 --- a/google-cloud-spanner-bom/pom.xml +++ b/google-cloud-spanner-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner-bom - 6.21.2 + 6.22.0 pom com.google.cloud @@ -53,43 +53,43 @@ com.google.cloud google-cloud-spanner - 6.21.2 + 6.22.0 com.google.cloud google-cloud-spanner test-jar - 6.21.2 + 6.22.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.21.2 + 6.22.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.21.2 + 6.22.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.21.2 + 6.22.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.21.2 + 6.22.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.21.2 + 6.22.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.21.2 + 6.22.0 @@ -100,7 +100,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.0 + 3.10.1 1.8 1.8 diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 9609f11eb0b..31beed53788 100644 --- a/google-cloud-spanner/pom.xml +++ b/google-cloud-spanner/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner - 6.21.2 + 6.22.0 jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,7 +11,7 @@ com.google.cloud google-cloud-spanner-parent - 6.21.2 + 6.22.0 google-cloud-spanner @@ -324,7 +324,7 @@ org.json json - 20211205 + 20220320 test diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java index 1d81b1388fa..7e5ffc43d48 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java @@ -2210,6 +2210,9 @@ private void handleCreateSessionsFailure(SpannerException e, int count) { break; } } + if (!dialect.isDone()) { + dialect.setException(e); + } if (isDatabaseOrInstanceNotFound(e)) { setResourceNotFoundException((ResourceNotFoundException) e); poolMaintainer.close(); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java index ac602861ce0..d8110bd947c 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java @@ -40,8 +40,11 @@ import com.google.longrunning.OperationsClient; import com.google.protobuf.Empty; import com.google.protobuf.FieldMask; +import com.google.protobuf.Timestamp; import com.google.spanner.admin.database.v1.Backup; import com.google.spanner.admin.database.v1.BackupName; +import com.google.spanner.admin.database.v1.CopyBackupMetadata; +import com.google.spanner.admin.database.v1.CopyBackupRequest; import com.google.spanner.admin.database.v1.CreateBackupMetadata; import com.google.spanner.admin.database.v1.CreateBackupRequest; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; @@ -1548,6 +1551,327 @@ public final UnaryCallable createBackupCallable( return stub.createBackupCallable(); } + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts copying a Cloud Spanner Backup. The returned backup [long-running + * operation][google.longrunning.Operation] will have a name of the format + * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>` + * and can be used to track copying of the backup. The operation is associated with the + * destination backup. The [metadata][google.longrunning.Operation.metadata] field type is + * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned + * operation will stop the copying and delete the backup. Concurrent CopyBackup requests can run + * on the same source backup. + * + *

Sample code: + * + *

{@code
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
+   *   String backupId = "backupId2121930365";
+   *   BackupName sourceBackup = BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]");
+   *   Timestamp expireTime = Timestamp.newBuilder().build();
+   *   Backup response =
+   *       databaseAdminClient.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get();
+   * }
+   * }
+ * + * @param parent Required. The name of the destination instance that will contain the backup copy. + * Values are of the form: `projects/<project>/instances/<instance>`. + * @param backupId Required. The id of the backup copy. The `backup_id` appended to `parent` forms + * the full backup_uri of the form + * `projects/<project>/instances/<instance>/backups/<backup>`. + * @param sourceBackup Required. The source backup to be copied. The source backup needs to be in + * READY state for it to be copied. Once CopyBackup is in progress, the source backup cannot + * be deleted or cleaned up on expiration until CopyBackup is finished. Values are of the + * form: `projects/<project>/instances/<instance>/backups/<backup>`. + * @param expireTime Required. The expiration time of the backup in microsecond granularity. The + * expiration time must be at least 6 hours and at most 366 days from the `create_time` of the + * source backup. Once the `expire_time` has passed, the backup is eligible to be + * automatically deleted by Cloud Spanner to free the resources used by the backup. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture copyBackupAsync( + InstanceName parent, String backupId, BackupName sourceBackup, Timestamp expireTime) { + CopyBackupRequest request = + CopyBackupRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setBackupId(backupId) + .setSourceBackup(sourceBackup == null ? null : sourceBackup.toString()) + .setExpireTime(expireTime) + .build(); + return copyBackupAsync(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts copying a Cloud Spanner Backup. The returned backup [long-running + * operation][google.longrunning.Operation] will have a name of the format + * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>` + * and can be used to track copying of the backup. The operation is associated with the + * destination backup. The [metadata][google.longrunning.Operation.metadata] field type is + * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned + * operation will stop the copying and delete the backup. Concurrent CopyBackup requests can run + * on the same source backup. + * + *

Sample code: + * + *

{@code
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]");
+   *   String backupId = "backupId2121930365";
+   *   String sourceBackup = BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString();
+   *   Timestamp expireTime = Timestamp.newBuilder().build();
+   *   Backup response =
+   *       databaseAdminClient.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get();
+   * }
+   * }
+ * + * @param parent Required. The name of the destination instance that will contain the backup copy. + * Values are of the form: `projects/<project>/instances/<instance>`. + * @param backupId Required. The id of the backup copy. The `backup_id` appended to `parent` forms + * the full backup_uri of the form + * `projects/<project>/instances/<instance>/backups/<backup>`. + * @param sourceBackup Required. The source backup to be copied. The source backup needs to be in + * READY state for it to be copied. Once CopyBackup is in progress, the source backup cannot + * be deleted or cleaned up on expiration until CopyBackup is finished. Values are of the + * form: `projects/<project>/instances/<instance>/backups/<backup>`. + * @param expireTime Required. The expiration time of the backup in microsecond granularity. The + * expiration time must be at least 6 hours and at most 366 days from the `create_time` of the + * source backup. Once the `expire_time` has passed, the backup is eligible to be + * automatically deleted by Cloud Spanner to free the resources used by the backup. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture copyBackupAsync( + InstanceName parent, String backupId, String sourceBackup, Timestamp expireTime) { + CopyBackupRequest request = + CopyBackupRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setBackupId(backupId) + .setSourceBackup(sourceBackup) + .setExpireTime(expireTime) + .build(); + return copyBackupAsync(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts copying a Cloud Spanner Backup. The returned backup [long-running + * operation][google.longrunning.Operation] will have a name of the format + * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>` + * and can be used to track copying of the backup. The operation is associated with the + * destination backup. The [metadata][google.longrunning.Operation.metadata] field type is + * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned + * operation will stop the copying and delete the backup. Concurrent CopyBackup requests can run + * on the same source backup. + * + *

Sample code: + * + *

{@code
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   String parent = InstanceName.of("[PROJECT]", "[INSTANCE]").toString();
+   *   String backupId = "backupId2121930365";
+   *   BackupName sourceBackup = BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]");
+   *   Timestamp expireTime = Timestamp.newBuilder().build();
+   *   Backup response =
+   *       databaseAdminClient.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get();
+   * }
+   * }
+ * + * @param parent Required. The name of the destination instance that will contain the backup copy. + * Values are of the form: `projects/<project>/instances/<instance>`. + * @param backupId Required. The id of the backup copy. The `backup_id` appended to `parent` forms + * the full backup_uri of the form + * `projects/<project>/instances/<instance>/backups/<backup>`. + * @param sourceBackup Required. The source backup to be copied. The source backup needs to be in + * READY state for it to be copied. Once CopyBackup is in progress, the source backup cannot + * be deleted or cleaned up on expiration until CopyBackup is finished. Values are of the + * form: `projects/<project>/instances/<instance>/backups/<backup>`. + * @param expireTime Required. The expiration time of the backup in microsecond granularity. The + * expiration time must be at least 6 hours and at most 366 days from the `create_time` of the + * source backup. Once the `expire_time` has passed, the backup is eligible to be + * automatically deleted by Cloud Spanner to free the resources used by the backup. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture copyBackupAsync( + String parent, String backupId, BackupName sourceBackup, Timestamp expireTime) { + CopyBackupRequest request = + CopyBackupRequest.newBuilder() + .setParent(parent) + .setBackupId(backupId) + .setSourceBackup(sourceBackup == null ? null : sourceBackup.toString()) + .setExpireTime(expireTime) + .build(); + return copyBackupAsync(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts copying a Cloud Spanner Backup. The returned backup [long-running + * operation][google.longrunning.Operation] will have a name of the format + * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>` + * and can be used to track copying of the backup. The operation is associated with the + * destination backup. The [metadata][google.longrunning.Operation.metadata] field type is + * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned + * operation will stop the copying and delete the backup. Concurrent CopyBackup requests can run + * on the same source backup. + * + *

Sample code: + * + *

{@code
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   String parent = InstanceName.of("[PROJECT]", "[INSTANCE]").toString();
+   *   String backupId = "backupId2121930365";
+   *   String sourceBackup = BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString();
+   *   Timestamp expireTime = Timestamp.newBuilder().build();
+   *   Backup response =
+   *       databaseAdminClient.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get();
+   * }
+   * }
+ * + * @param parent Required. The name of the destination instance that will contain the backup copy. + * Values are of the form: `projects/<project>/instances/<instance>`. + * @param backupId Required. The id of the backup copy. The `backup_id` appended to `parent` forms + * the full backup_uri of the form + * `projects/<project>/instances/<instance>/backups/<backup>`. + * @param sourceBackup Required. The source backup to be copied. The source backup needs to be in + * READY state for it to be copied. Once CopyBackup is in progress, the source backup cannot + * be deleted or cleaned up on expiration until CopyBackup is finished. Values are of the + * form: `projects/<project>/instances/<instance>/backups/<backup>`. + * @param expireTime Required. The expiration time of the backup in microsecond granularity. The + * expiration time must be at least 6 hours and at most 366 days from the `create_time` of the + * source backup. Once the `expire_time` has passed, the backup is eligible to be + * automatically deleted by Cloud Spanner to free the resources used by the backup. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture copyBackupAsync( + String parent, String backupId, String sourceBackup, Timestamp expireTime) { + CopyBackupRequest request = + CopyBackupRequest.newBuilder() + .setParent(parent) + .setBackupId(backupId) + .setSourceBackup(sourceBackup) + .setExpireTime(expireTime) + .build(); + return copyBackupAsync(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts copying a Cloud Spanner Backup. The returned backup [long-running + * operation][google.longrunning.Operation] will have a name of the format + * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>` + * and can be used to track copying of the backup. The operation is associated with the + * destination backup. The [metadata][google.longrunning.Operation.metadata] field type is + * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned + * operation will stop the copying and delete the backup. Concurrent CopyBackup requests can run + * on the same source backup. + * + *

Sample code: + * + *

{@code
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   CopyBackupRequest request =
+   *       CopyBackupRequest.newBuilder()
+   *           .setParent(InstanceName.of("[PROJECT]", "[INSTANCE]").toString())
+   *           .setBackupId("backupId2121930365")
+   *           .setSourceBackup(BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString())
+   *           .setExpireTime(Timestamp.newBuilder().build())
+   *           .setEncryptionConfig(CopyBackupEncryptionConfig.newBuilder().build())
+   *           .build();
+   *   Backup response = databaseAdminClient.copyBackupAsync(request).get();
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture copyBackupAsync( + CopyBackupRequest request) { + return copyBackupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts copying a Cloud Spanner Backup. The returned backup [long-running + * operation][google.longrunning.Operation] will have a name of the format + * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>` + * and can be used to track copying of the backup. The operation is associated with the + * destination backup. The [metadata][google.longrunning.Operation.metadata] field type is + * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned + * operation will stop the copying and delete the backup. Concurrent CopyBackup requests can run + * on the same source backup. + * + *

Sample code: + * + *

{@code
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   CopyBackupRequest request =
+   *       CopyBackupRequest.newBuilder()
+   *           .setParent(InstanceName.of("[PROJECT]", "[INSTANCE]").toString())
+   *           .setBackupId("backupId2121930365")
+   *           .setSourceBackup(BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString())
+   *           .setExpireTime(Timestamp.newBuilder().build())
+   *           .setEncryptionConfig(CopyBackupEncryptionConfig.newBuilder().build())
+   *           .build();
+   *   OperationFuture future =
+   *       databaseAdminClient.copyBackupOperationCallable().futureCall(request);
+   *   // Do something.
+   *   Backup response = future.get();
+   * }
+   * }
+ */ + public final OperationCallable + copyBackupOperationCallable() { + return stub.copyBackupOperationCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts copying a Cloud Spanner Backup. The returned backup [long-running + * operation][google.longrunning.Operation] will have a name of the format + * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>` + * and can be used to track copying of the backup. The operation is associated with the + * destination backup. The [metadata][google.longrunning.Operation.metadata] field type is + * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned + * operation will stop the copying and delete the backup. Concurrent CopyBackup requests can run + * on the same source backup. + * + *

Sample code: + * + *

{@code
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   CopyBackupRequest request =
+   *       CopyBackupRequest.newBuilder()
+   *           .setParent(InstanceName.of("[PROJECT]", "[INSTANCE]").toString())
+   *           .setBackupId("backupId2121930365")
+   *           .setSourceBackup(BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString())
+   *           .setExpireTime(Timestamp.newBuilder().build())
+   *           .setEncryptionConfig(CopyBackupEncryptionConfig.newBuilder().build())
+   *           .build();
+   *   ApiFuture future = databaseAdminClient.copyBackupCallable().futureCall(request);
+   *   // Do something.
+   *   Operation response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable copyBackupCallable() { + return stub.copyBackupCallable(); + } + // AUTO-GENERATED DOCUMENTATION AND METHOD. /** * Gets metadata on a pending or completed [Backup][google.spanner.admin.database.v1.Backup]. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java index 358be3bde42..5d924f60ed6 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java @@ -42,6 +42,8 @@ import com.google.longrunning.Operation; import com.google.protobuf.Empty; import com.google.spanner.admin.database.v1.Backup; +import com.google.spanner.admin.database.v1.CopyBackupMetadata; +import com.google.spanner.admin.database.v1.CopyBackupRequest; import com.google.spanner.admin.database.v1.CreateBackupMetadata; import com.google.spanner.admin.database.v1.CreateBackupRequest; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; @@ -174,6 +176,17 @@ public UnaryCallSettings createBackupSettings() return ((DatabaseAdminStubSettings) getStubSettings()).createBackupOperationSettings(); } + /** Returns the object with the settings used for calls to copyBackup. */ + public UnaryCallSettings copyBackupSettings() { + return ((DatabaseAdminStubSettings) getStubSettings()).copyBackupSettings(); + } + + /** Returns the object with the settings used for calls to copyBackup. */ + public OperationCallSettings + copyBackupOperationSettings() { + return ((DatabaseAdminStubSettings) getStubSettings()).copyBackupOperationSettings(); + } + /** Returns the object with the settings used for calls to getBackup. */ public UnaryCallSettings getBackupSettings() { return ((DatabaseAdminStubSettings) getStubSettings()).getBackupSettings(); @@ -394,6 +407,17 @@ public UnaryCallSettings.Builder createBackupSet return getStubSettingsBuilder().createBackupOperationSettings(); } + /** Returns the builder for the settings used for calls to copyBackup. */ + public UnaryCallSettings.Builder copyBackupSettings() { + return getStubSettingsBuilder().copyBackupSettings(); + } + + /** Returns the builder for the settings used for calls to copyBackup. */ + public OperationCallSettings.Builder + copyBackupOperationSettings() { + return getStubSettingsBuilder().copyBackupOperationSettings(); + } + /** Returns the builder for the settings used for calls to getBackup. */ public UnaryCallSettings.Builder getBackupSettings() { return getStubSettingsBuilder().getBackupSettings(); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/gapic_metadata.json b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/gapic_metadata.json index bb689f4c8d4..db77a349075 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/gapic_metadata.json +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/gapic_metadata.json @@ -10,6 +10,9 @@ "grpc": { "libraryClient": "DatabaseAdminClient", "rpcs": { + "CopyBackup": { + "methods": ["copyBackupAsync", "copyBackupAsync", "copyBackupAsync", "copyBackupAsync", "copyBackupAsync", "copyBackupOperationCallable", "copyBackupCallable"] + }, "CreateBackup": { "methods": ["createBackupAsync", "createBackupAsync", "createBackupAsync", "createBackupOperationCallable", "createBackupCallable"] }, diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java index cf873601ef7..5572033a6ae 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java @@ -33,6 +33,8 @@ import com.google.longrunning.stub.OperationsStub; import com.google.protobuf.Empty; import com.google.spanner.admin.database.v1.Backup; +import com.google.spanner.admin.database.v1.CopyBackupMetadata; +import com.google.spanner.admin.database.v1.CopyBackupRequest; import com.google.spanner.admin.database.v1.CreateBackupMetadata; import com.google.spanner.admin.database.v1.CreateBackupRequest; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; @@ -134,6 +136,15 @@ public UnaryCallable createBackupCallable() { throw new UnsupportedOperationException("Not implemented: createBackupCallable()"); } + public OperationCallable + copyBackupOperationCallable() { + throw new UnsupportedOperationException("Not implemented: copyBackupOperationCallable()"); + } + + public UnaryCallable copyBackupCallable() { + throw new UnsupportedOperationException("Not implemented: copyBackupCallable()"); + } + public UnaryCallable getBackupCallable() { throw new UnsupportedOperationException("Not implemented: getBackupCallable()"); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java index aea9b512a1c..992e5a79d2b 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java @@ -59,6 +59,8 @@ import com.google.longrunning.Operation; import com.google.protobuf.Empty; import com.google.spanner.admin.database.v1.Backup; +import com.google.spanner.admin.database.v1.CopyBackupMetadata; +import com.google.spanner.admin.database.v1.CopyBackupRequest; import com.google.spanner.admin.database.v1.CreateBackupMetadata; import com.google.spanner.admin.database.v1.CreateBackupRequest; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; @@ -149,6 +151,9 @@ public class DatabaseAdminStubSettings extends StubSettings createBackupSettings; private final OperationCallSettings createBackupOperationSettings; + private final UnaryCallSettings copyBackupSettings; + private final OperationCallSettings + copyBackupOperationSettings; private final UnaryCallSettings getBackupSettings; private final UnaryCallSettings updateBackupSettings; private final UnaryCallSettings deleteBackupSettings; @@ -473,6 +478,17 @@ public UnaryCallSettings createBackupSettings() return createBackupOperationSettings; } + /** Returns the object with the settings used for calls to copyBackup. */ + public UnaryCallSettings copyBackupSettings() { + return copyBackupSettings; + } + + /** Returns the object with the settings used for calls to copyBackup. */ + public OperationCallSettings + copyBackupOperationSettings() { + return copyBackupOperationSettings; + } + /** Returns the object with the settings used for calls to getBackup. */ public UnaryCallSettings getBackupSettings() { return getBackupSettings; @@ -613,6 +629,8 @@ protected DatabaseAdminStubSettings(Builder settingsBuilder) throws IOException testIamPermissionsSettings = settingsBuilder.testIamPermissionsSettings().build(); createBackupSettings = settingsBuilder.createBackupSettings().build(); createBackupOperationSettings = settingsBuilder.createBackupOperationSettings().build(); + copyBackupSettings = settingsBuilder.copyBackupSettings().build(); + copyBackupOperationSettings = settingsBuilder.copyBackupOperationSettings().build(); getBackupSettings = settingsBuilder.getBackupSettings().build(); updateBackupSettings = settingsBuilder.updateBackupSettings().build(); deleteBackupSettings = settingsBuilder.deleteBackupSettings().build(); @@ -650,6 +668,9 @@ public static class Builder extends StubSettings.Builder createBackupSettings; private final OperationCallSettings.Builder createBackupOperationSettings; + private final UnaryCallSettings.Builder copyBackupSettings; + private final OperationCallSettings.Builder + copyBackupOperationSettings; private final UnaryCallSettings.Builder getBackupSettings; private final UnaryCallSettings.Builder updateBackupSettings; private final UnaryCallSettings.Builder deleteBackupSettings; @@ -760,6 +781,8 @@ protected Builder(ClientContext clientContext) { testIamPermissionsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); createBackupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); createBackupOperationSettings = OperationCallSettings.newBuilder(); + copyBackupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + copyBackupOperationSettings = OperationCallSettings.newBuilder(); getBackupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); updateBackupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); deleteBackupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); @@ -783,6 +806,7 @@ protected Builder(ClientContext clientContext) { getIamPolicySettings, testIamPermissionsSettings, createBackupSettings, + copyBackupSettings, getBackupSettings, updateBackupSettings, deleteBackupSettings, @@ -809,6 +833,8 @@ protected Builder(DatabaseAdminStubSettings settings) { testIamPermissionsSettings = settings.testIamPermissionsSettings.toBuilder(); createBackupSettings = settings.createBackupSettings.toBuilder(); createBackupOperationSettings = settings.createBackupOperationSettings.toBuilder(); + copyBackupSettings = settings.copyBackupSettings.toBuilder(); + copyBackupOperationSettings = settings.copyBackupOperationSettings.toBuilder(); getBackupSettings = settings.getBackupSettings.toBuilder(); updateBackupSettings = settings.updateBackupSettings.toBuilder(); deleteBackupSettings = settings.deleteBackupSettings.toBuilder(); @@ -830,6 +856,7 @@ protected Builder(DatabaseAdminStubSettings settings) { getIamPolicySettings, testIamPermissionsSettings, createBackupSettings, + copyBackupSettings, getBackupSettings, updateBackupSettings, deleteBackupSettings, @@ -903,6 +930,11 @@ private static Builder initDefaults(Builder builder) { .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_2_codes")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_2_params")); + builder + .copyBackupSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_2_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_2_params")); + builder .getBackupSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) @@ -1011,6 +1043,29 @@ private static Builder initDefaults(Builder builder) { .setTotalTimeout(Duration.ofMillis(172800000L)) .build())); + builder + .copyBackupOperationSettings() + .setInitialCallSettings( + UnaryCallSettings.newUnaryCallSettingsBuilder() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_2_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_2_params")) + .build()) + .setResponseTransformer( + ProtoOperationTransformers.ResponseTransformer.create(Backup.class)) + .setMetadataTransformer( + ProtoOperationTransformers.MetadataTransformer.create(CopyBackupMetadata.class)) + .setPollingAlgorithm( + OperationTimedPollAlgorithm.create( + RetrySettings.newBuilder() + .setInitialRetryDelay(Duration.ofMillis(5000L)) + .setRetryDelayMultiplier(1.5) + .setMaxRetryDelay(Duration.ofMillis(45000L)) + .setInitialRpcTimeout(Duration.ZERO) + .setRpcTimeoutMultiplier(1.0) + .setMaxRpcTimeout(Duration.ZERO) + .setTotalTimeout(Duration.ofMillis(300000L)) + .build())); + builder .restoreDatabaseOperationSettings() .setInitialCallSettings( @@ -1132,6 +1187,19 @@ public UnaryCallSettings.Builder createBackupSet return createBackupOperationSettings; } + /** Returns the builder for the settings used for calls to copyBackup. */ + public UnaryCallSettings.Builder copyBackupSettings() { + return copyBackupSettings; + } + + /** Returns the builder for the settings used for calls to copyBackup. */ + @BetaApi( + "The surface for use by generated code is not stable yet and may change in the future.") + public OperationCallSettings.Builder + copyBackupOperationSettings() { + return copyBackupOperationSettings; + } + /** Returns the builder for the settings used for calls to getBackup. */ public UnaryCallSettings.Builder getBackupSettings() { return getBackupSettings; diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java index 46cdccdbbcc..0df16f344e9 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java @@ -38,6 +38,8 @@ import com.google.longrunning.stub.GrpcOperationsStub; import com.google.protobuf.Empty; import com.google.spanner.admin.database.v1.Backup; +import com.google.spanner.admin.database.v1.CopyBackupMetadata; +import com.google.spanner.admin.database.v1.CopyBackupRequest; import com.google.spanner.admin.database.v1.CreateBackupMetadata; import com.google.spanner.admin.database.v1.CreateBackupRequest; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; @@ -171,6 +173,14 @@ public class GrpcDatabaseAdminStub extends DatabaseAdminStub { .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance())) .build(); + private static final MethodDescriptor copyBackupMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.spanner.admin.database.v1.DatabaseAdmin/CopyBackup") + .setRequestMarshaller(ProtoUtils.marshaller(CopyBackupRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance())) + .build(); + private static final MethodDescriptor getBackupMethodDescriptor = MethodDescriptor.newBuilder() .setType(MethodDescriptor.MethodType.UNARY) @@ -260,6 +270,9 @@ public class GrpcDatabaseAdminStub extends DatabaseAdminStub { private final UnaryCallable createBackupCallable; private final OperationCallable createBackupOperationCallable; + private final UnaryCallable copyBackupCallable; + private final OperationCallable + copyBackupOperationCallable; private final UnaryCallable getBackupCallable; private final UnaryCallable updateBackupCallable; private final UnaryCallable deleteBackupCallable; @@ -422,6 +435,16 @@ protected GrpcDatabaseAdminStub( return params.build(); }) .build(); + GrpcCallSettings copyBackupTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(copyBackupMethodDescriptor) + .setParamsExtractor( + request -> { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + }) + .build(); GrpcCallSettings getBackupTransportSettings = GrpcCallSettings.newBuilder() .setMethodDescriptor(getBackupMethodDescriptor) @@ -551,6 +574,15 @@ protected GrpcDatabaseAdminStub( settings.createBackupOperationSettings(), clientContext, operationsStub); + this.copyBackupCallable = + callableFactory.createUnaryCallable( + copyBackupTransportSettings, settings.copyBackupSettings(), clientContext); + this.copyBackupOperationCallable = + callableFactory.createOperationCallable( + copyBackupTransportSettings, + settings.copyBackupOperationSettings(), + clientContext, + operationsStub); this.getBackupCallable = callableFactory.createUnaryCallable( getBackupTransportSettings, settings.getBackupSettings(), clientContext); @@ -679,6 +711,17 @@ public UnaryCallable createBackupCallable() { return createBackupOperationCallable; } + @Override + public UnaryCallable copyBackupCallable() { + return copyBackupCallable; + } + + @Override + public OperationCallable + copyBackupOperationCallable() { + return copyBackupOperationCallable; + } + @Override public UnaryCallable getBackupCallable() { return getBackupCallable; diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractStatementParser.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractStatementParser.java index ba68a5b513c..c17e4dd7395 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractStatementParser.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractStatementParser.java @@ -22,13 +22,11 @@ import com.google.cloud.spanner.SpannerException; import com.google.cloud.spanner.SpannerExceptionFactory; import com.google.cloud.spanner.Statement; -import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.spanner.v1.ExecuteSqlRequest.QueryOptions; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -322,14 +320,9 @@ ClientSideStatement getClientSideStatement() { private final Dialect dialect; private final Set statements; - AbstractStatementParser(Dialect dialect) { + AbstractStatementParser(Dialect dialect, Set statements) { this.dialect = dialect; - try { - statements = - Collections.unmodifiableSet(ClientSideStatements.INSTANCE.getCompiledStatements()); - } catch (CompileException e) { - throw new RuntimeException(e); - } + this.statements = statements; } /** diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementPgBeginExecutor.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementPgBeginExecutor.java new file mode 100644 index 00000000000..4b548803c11 --- /dev/null +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementPgBeginExecutor.java @@ -0,0 +1,65 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.spanner.connection; + +import com.google.cloud.spanner.ErrorCode; +import com.google.cloud.spanner.SpannerExceptionFactory; +import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; +import com.google.cloud.spanner.connection.ClientSideStatementValueConverters.PgTransactionModeConverter; +import java.lang.reflect.Method; +import java.util.regex.Matcher; + +/** Specific executor for the BEGIN statement for PostgreSQL. */ +class ClientSideStatementPgBeginExecutor implements ClientSideStatementExecutor { + private final ClientSideStatementImpl statement; + private final Method method; + private final PgTransactionModeConverter converter; + + ClientSideStatementPgBeginExecutor(ClientSideStatementImpl statement) throws CompileException { + try { + this.statement = statement; + this.converter = new PgTransactionModeConverter(); + this.method = + ConnectionStatementExecutor.class.getDeclaredMethod( + statement.getMethodName(), converter.getParameterClass()); + } catch (Exception e) { + throw new CompileException(e, statement); + } + } + + @Override + public StatementResult execute(ConnectionStatementExecutor connection, String sql) + throws Exception { + return (StatementResult) method.invoke(connection, getParameterValue(sql)); + } + + PgTransactionMode getParameterValue(String sql) { + Matcher matcher = statement.getPattern().matcher(sql); + if (matcher.find() && matcher.groupCount() >= 1) { + String value = matcher.group(1); + if (value != null) { + PgTransactionMode res = converter.convert(value.trim()); + if (res != null) { + return res; + } + throw SpannerExceptionFactory.newSpannerException( + ErrorCode.INVALID_ARGUMENT, String.format("Unknown transaction mode: %s", value)); + } + } + return null; + } +} diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java index d0ff99de4b0..2e5dab87fba 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java @@ -29,6 +29,7 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -121,6 +122,48 @@ public Duration convert(String value) { } } + /** Converter from string to {@link Duration}. */ + static class PgDurationConverter implements ClientSideStatementValueConverter { + private final Pattern allowedValues; + + public PgDurationConverter(String allowedValues) { + // Remove the parentheses from the beginning and end. + this.allowedValues = + Pattern.compile( + "(?is)\\A" + allowedValues.substring(1, allowedValues.length() - 1) + "\\z"); + } + + @Override + public Class getParameterClass() { + return Duration.class; + } + + @Override + public Duration convert(String value) { + Matcher matcher = allowedValues.matcher(value); + if (matcher.find()) { + Duration duration; + if (matcher.group(0).equalsIgnoreCase("default")) { + return Durations.fromNanos(0L); + } else if (matcher.group(2) == null) { + duration = + ReadOnlyStalenessUtil.createDuration( + Long.parseLong(matcher.group(0)), TimeUnit.MILLISECONDS); + } else { + duration = + ReadOnlyStalenessUtil.createDuration( + Long.parseLong(matcher.group(1)), + ReadOnlyStalenessUtil.parseTimeUnit(matcher.group(2))); + } + if (duration.getSeconds() == 0L && duration.getNanos() == 0) { + return null; + } + return duration; + } + return null; + } + } + /** Converter from string to possible values for read only staleness ({@link TimestampBound}). */ static class ReadOnlyStalenessConverter implements ClientSideStatementValueConverter { @@ -243,6 +286,33 @@ public TransactionMode convert(String value) { } } + /** + * Converter for converting string values to {@link PgTransactionMode} values. Includes no-op + * handling of setting the isolation level of the transaction to default or serializable. + */ + static class PgTransactionModeConverter + implements ClientSideStatementValueConverter { + private final CaseInsensitiveEnumMap values = + new CaseInsensitiveEnumMap<>( + PgTransactionMode.class, PgTransactionMode::getStatementString); + + PgTransactionModeConverter() {} + + public PgTransactionModeConverter(String allowedValues) {} + + @Override + public Class getParameterClass() { + return PgTransactionMode.class; + } + + @Override + public PgTransactionMode convert(String value) { + // Transaction mode may contain multiple spaces. + String valueWithSingleSpaces = value.replaceAll("\\s+", " "); + return values.get(valueWithSingleSpaces); + } + } + /** Converter for converting strings to {@link RpcPriority} values. */ static class RpcPriorityConverter implements ClientSideStatementValueConverter { private final CaseInsensitiveEnumMap values = diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatements.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatements.java index 78ea0f9dbaa..8d4181cfe55 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatements.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatements.java @@ -16,6 +16,9 @@ package com.google.cloud.spanner.connection; +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.ErrorCode; +import com.google.cloud.spanner.SpannerExceptionFactory; import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.gson.Gson; import java.io.InputStreamReader; @@ -23,20 +26,46 @@ /** This class reads and parses the {@link ClientSideStatement}s from the json file. */ class ClientSideStatements { - private static final String STATEMENTS_DEFINITION_FILE = "ClientSideStatements.json"; - static final ClientSideStatements INSTANCE = importStatements(); + private static final String GSQL_STATEMENTS_DEFINITION_FILE = "ClientSideStatements.json"; + private static final String PG_STATEMENTS_DEFINITION_FILE = "PG_ClientSideStatements.json"; + private static final ClientSideStatements GSQL_STATEMENTS = importGsqlStatements(); + private static final ClientSideStatements PG_STATEMENTS = importPgStatements(); + + static ClientSideStatements getInstance(Dialect dialect) { + switch (dialect) { + case GOOGLE_STANDARD_SQL: + return GSQL_STATEMENTS; + case POSTGRESQL: + return PG_STATEMENTS; + default: + throw SpannerExceptionFactory.newSpannerException( + ErrorCode.INVALID_ARGUMENT, "Unknown or unsupported dialect: " + dialect); + } + } /** * Reads statement definitions from ClientSideStatements.json and parses these as Java objects. */ - private static ClientSideStatements importStatements() { + private static ClientSideStatements importGsqlStatements() { + Gson gson = new Gson(); + return gson.fromJson( + new InputStreamReader( + ClientSideStatements.class.getResourceAsStream(GSQL_STATEMENTS_DEFINITION_FILE)), + ClientSideStatements.class); + } + + /** + * Reads statement definitions from PG_ClientSideStatements.json and parses these as Java objects. + */ + private static ClientSideStatements importPgStatements() { Gson gson = new Gson(); return gson.fromJson( new InputStreamReader( - ClientSideStatements.class.getResourceAsStream(STATEMENTS_DEFINITION_FILE)), + ClientSideStatements.class.getResourceAsStream(PG_STATEMENTS_DEFINITION_FILE)), ClientSideStatements.class); } + // This field is set automatically by the importStatements / pgImportStatements methods. private Set statements; private ClientSideStatements() {} diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutor.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutor.java index 032ecfeac60..2d3da27e90e 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutor.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutor.java @@ -85,12 +85,19 @@ interface ConnectionStatementExecutor { StatementResult statementBeginTransaction(); + StatementResult statementBeginPgTransaction(PgTransactionMode transactionMode); + StatementResult statementCommit(); StatementResult statementRollback(); StatementResult statementSetTransactionMode(TransactionMode mode); + StatementResult statementSetPgTransactionMode(PgTransactionMode transactionMode); + + StatementResult statementSetPgSessionCharacteristicsTransactionMode( + PgTransactionMode transactionMode); + StatementResult statementStartBatchDdl(); StatementResult statementStartBatchDml(); @@ -102,4 +109,6 @@ interface ConnectionStatementExecutor { StatementResult statementSetRPCPriority(Priority priority); StatementResult statementShowRPCPriority(); + + StatementResult statementShowTransactionIsolationLevel(); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java index 0b87103be02..15da7d0553a 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.connection; +import static com.google.cloud.spanner.connection.DialectNamespaceMapper.getNamespace; import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.ABORT_BATCH; import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.BEGIN; import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.COMMIT; @@ -48,6 +49,7 @@ import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_RPC_PRIORITY; import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_STATEMENT_TAG; import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_STATEMENT_TIMEOUT; +import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_TRANSACTION_ISOLATION_LEVEL; import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_TRANSACTION_TAG; import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.START_BATCH_DDL; import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.START_BATCH_DML; @@ -56,6 +58,7 @@ import com.google.cloud.spanner.CommitResponse; import com.google.cloud.spanner.CommitStats; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.Options.RpcPriority; import com.google.cloud.spanner.ResultSet; import com.google.cloud.spanner.ResultSets; @@ -70,9 +73,10 @@ import com.google.protobuf.Duration; import com.google.spanner.v1.RequestOptions; import com.google.spanner.v1.RequestOptions.Priority; -import java.util.Arrays; +import java.util.Collections; import java.util.Map; import java.util.concurrent.TimeUnit; +import javax.annotation.Nullable; /** * The methods in this class are called by the different {@link ClientSideStatement}s. These method @@ -139,7 +143,10 @@ public StatementResult statementSetReadOnly(Boolean readOnly) { @Override public StatementResult statementShowReadOnly() { - return StatementResultImpl.resultSet("READONLY", getConnection().isReadOnly(), SHOW_READONLY); + return StatementResultImpl.resultSet( + String.format("%sREADONLY", getNamespace(connection.getDialect())), + getConnection().isReadOnly(), + SHOW_READONLY); } @Override @@ -152,7 +159,7 @@ public StatementResult statementSetRetryAbortsInternally(Boolean retryAbortsInte @Override public StatementResult statementShowRetryAbortsInternally() { return StatementResultImpl.resultSet( - "RETRY_ABORTS_INTERNALLY", + String.format("%sRETRY_ABORTS_INTERNALLY", getNamespace(connection.getDialect())), getConnection().isRetryAbortsInternally(), SHOW_RETRY_ABORTS_INTERNALLY); } @@ -166,7 +173,9 @@ public StatementResult statementSetAutocommitDmlMode(AutocommitDmlMode mode) { @Override public StatementResult statementShowAutocommitDmlMode() { return resultSet( - "AUTOCOMMIT_DML_MODE", getConnection().getAutocommitDmlMode(), SHOW_AUTOCOMMIT_DML_MODE); + String.format("%sAUTOCOMMIT_DML_MODE", getNamespace(connection.getDialect())), + getConnection().getAutocommitDmlMode(), + SHOW_AUTOCOMMIT_DML_MODE); } @Override @@ -189,20 +198,24 @@ public StatementResult statementShowStatementTimeout() { "STATEMENT_TIMEOUT", getConnection().hasStatementTimeout() ? ReadOnlyStalenessUtil.durationToString(new StatementTimeoutGetter(getConnection())) - : null, + : connection.getDialect() == Dialect.POSTGRESQL ? "0" : null, SHOW_STATEMENT_TIMEOUT); } @Override public StatementResult statementShowReadTimestamp() { return resultSet( - "READ_TIMESTAMP", getConnection().getReadTimestampOrNull(), SHOW_READ_TIMESTAMP); + String.format("%sREAD_TIMESTAMP", getNamespace(connection.getDialect())), + getConnection().getReadTimestampOrNull(), + SHOW_READ_TIMESTAMP); } @Override public StatementResult statementShowCommitTimestamp() { return resultSet( - "COMMIT_TIMESTAMP", getConnection().getCommitTimestampOrNull(), SHOW_COMMIT_TIMESTAMP); + String.format("%sCOMMIT_TIMESTAMP", getNamespace(connection.getDialect())), + getConnection().getCommitTimestampOrNull(), + SHOW_COMMIT_TIMESTAMP); } @Override @@ -215,13 +228,17 @@ public StatementResult statementShowCommitResponse() { ResultSet resultSet = ResultSets.forRows( Type.struct( - StructField.of("COMMIT_TIMESTAMP", Type.timestamp()), - StructField.of("MUTATION_COUNT", Type.int64())), - Arrays.asList( + StructField.of( + String.format("%sCOMMIT_TIMESTAMP", getNamespace(connection.getDialect())), + Type.timestamp()), + StructField.of( + String.format("%sMUTATION_COUNT", getNamespace(connection.getDialect())), + Type.int64())), + Collections.singletonList( Struct.newBuilder() - .set("COMMIT_TIMESTAMP") + .set(String.format("%sCOMMIT_TIMESTAMP", getNamespace(connection.getDialect()))) .to(response == null ? null : response.getCommitTimestamp()) - .set("MUTATION_COUNT") + .set(String.format("%sMUTATION_COUNT", getNamespace(connection.getDialect()))) .to(stats == null ? null : stats.getMutationCount()) .build())); return StatementResultImpl.of(resultSet, SHOW_COMMIT_RESPONSE); @@ -237,7 +254,7 @@ public StatementResult statementSetReadOnlyStaleness(TimestampBound staleness) { public StatementResult statementShowReadOnlyStaleness() { TimestampBound staleness = getConnection().getReadOnlyStaleness(); return resultSet( - "READ_ONLY_STALENESS", + String.format("%sREAD_ONLY_STALENESS", getNamespace(connection.getDialect())), ReadOnlyStalenessUtil.timestampBoundToString(staleness), SHOW_READ_ONLY_STALENESS); } @@ -251,7 +268,9 @@ public StatementResult statementSetOptimizerVersion(String optimizerVersion) { @Override public StatementResult statementShowOptimizerVersion() { return resultSet( - "OPTIMIZER_VERSION", getConnection().getOptimizerVersion(), SHOW_OPTIMIZER_VERSION); + String.format("%sOPTIMIZER_VERSION", getNamespace(connection.getDialect())), + getConnection().getOptimizerVersion(), + SHOW_OPTIMIZER_VERSION); } @Override @@ -263,7 +282,7 @@ public StatementResult statementSetOptimizerStatisticsPackage(String optimizerSt @Override public StatementResult statementShowOptimizerStatisticsPackage() { return resultSet( - "OPTIMIZER_STATISTICS_PACKAGE", + String.format("%sOPTIMIZER_STATISTICS_PACKAGE", getNamespace(connection.getDialect())), getConnection().getOptimizerStatisticsPackage(), SHOW_OPTIMIZER_STATISTICS_PACKAGE); } @@ -277,7 +296,9 @@ public StatementResult statementSetReturnCommitStats(Boolean returnCommitStats) @Override public StatementResult statementShowReturnCommitStats() { return resultSet( - "RETURN_COMMIT_STATS", getConnection().isReturnCommitStats(), SHOW_RETURN_COMMIT_STATS); + String.format("%sRETURN_COMMIT_STATS", getNamespace(connection.getDialect())), + getConnection().isReturnCommitStats(), + SHOW_RETURN_COMMIT_STATS); } @Override @@ -289,7 +310,7 @@ public StatementResult statementSetStatementTag(String tag) { @Override public StatementResult statementShowStatementTag() { return resultSet( - "STATEMENT_TAG", + String.format("%sSTATEMENT_TAG", getNamespace(connection.getDialect())), MoreObjects.firstNonNull(getConnection().getStatementTag(), ""), SHOW_STATEMENT_TAG); } @@ -303,7 +324,7 @@ public StatementResult statementSetTransactionTag(String tag) { @Override public StatementResult statementShowTransactionTag() { return resultSet( - "TRANSACTION_TAG", + String.format("%sTRANSACTION_TAG", getNamespace(connection.getDialect())), MoreObjects.firstNonNull(getConnection().getTransactionTag(), ""), SHOW_TRANSACTION_TAG); } @@ -314,6 +335,15 @@ public StatementResult statementBeginTransaction() { return noResult(BEGIN); } + @Override + public StatementResult statementBeginPgTransaction(@Nullable PgTransactionMode transactionMode) { + getConnection().beginTransaction(); + if (transactionMode != null) { + statementSetPgTransactionMode(transactionMode); + } + return noResult(BEGIN); + } + @Override public StatementResult statementCommit() { getConnection().commit(); @@ -332,6 +362,41 @@ public StatementResult statementSetTransactionMode(TransactionMode mode) { return noResult(SET_TRANSACTION_MODE); } + @Override + public StatementResult statementSetPgTransactionMode(PgTransactionMode transactionMode) { + switch (transactionMode) { + case READ_ONLY_TRANSACTION: + getConnection().setTransactionMode(TransactionMode.READ_ONLY_TRANSACTION); + break; + case READ_WRITE_TRANSACTION: + getConnection().setTransactionMode(TransactionMode.READ_WRITE_TRANSACTION); + break; + case ISOLATION_LEVEL_DEFAULT: + case ISOLATION_LEVEL_SERIALIZABLE: + default: + // no-op + } + return noResult(SET_TRANSACTION_MODE); + } + + @Override + public StatementResult statementSetPgSessionCharacteristicsTransactionMode( + PgTransactionMode transactionMode) { + switch (transactionMode) { + case READ_ONLY_TRANSACTION: + getConnection().setReadOnly(true); + break; + case READ_WRITE_TRANSACTION: + getConnection().setReadOnly(false); + break; + case ISOLATION_LEVEL_DEFAULT: + case ISOLATION_LEVEL_SERIALIZABLE: + default: + // no-op + } + return noResult(SET_TRANSACTION_MODE); + } + @Override public StatementResult statementStartBatchDdl() { getConnection().startBatchDdl(); @@ -366,10 +431,15 @@ public StatementResult statementSetRPCPriority(Priority priority) { @Override public StatementResult statementShowRPCPriority() { return resultSet( - "RPC_PRIORITY", + String.format("%sRPC_PRIORITY", getNamespace(connection.getDialect())), getConnection().getRPCPriority() == null ? RequestOptions.Priority.PRIORITY_UNSPECIFIED : getConnection().getRPCPriority(), SHOW_RPC_PRIORITY); } + + @Override + public StatementResult statementShowTransactionIsolationLevel() { + return resultSet("transaction_isolation", "serializable", SHOW_TRANSACTION_ISOLATION_LEVEL); + } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/DialectNamespaceMapper.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/DialectNamespaceMapper.java new file mode 100644 index 00000000000..bb668506075 --- /dev/null +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/DialectNamespaceMapper.java @@ -0,0 +1,31 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.spanner.connection; + +import com.google.cloud.spanner.Dialect; + +class DialectNamespaceMapper { + static String getNamespace(Dialect dialect) { + switch (dialect) { + case POSTGRESQL: + return "SPANNER."; + case GOOGLE_STANDARD_SQL: + default: + return ""; + } + } +} diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/PgTransactionMode.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/PgTransactionMode.java new file mode 100644 index 00000000000..363914ccdfb --- /dev/null +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/PgTransactionMode.java @@ -0,0 +1,51 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.spanner.connection; + +/** + * Enum for the possible PostgreSQL transaction modes. We need a separate class for PG transaction + * modes to handle setting the isolation level. + */ +enum PgTransactionMode { + READ_ONLY_TRANSACTION("READ ONLY"), + READ_WRITE_TRANSACTION("READ WRITE"), + ISOLATION_LEVEL_DEFAULT("ISOLATION LEVEL DEFAULT"), + ISOLATION_LEVEL_SERIALIZABLE("ISOLATION LEVEL SERIALIZABLE"); + + private final String statementString; + + PgTransactionMode(String statement) { + this.statementString = statement; + } + + /** + * Use this method to get the correct format for use in a SQL statement. The SQL statement for + * setting the mode to read-only should for example be without the underscore: + * SET TRANSACTION READ ONLY + * + * @return a string representation of this {@link TransactionMode} that can be used in a SQL + * statement to set the transaction mode. + */ + public String getStatementString() { + return statementString; + } + + @Override + public String toString() { + return statementString; + } +} diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/PostgreSQLStatementParser.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/PostgreSQLStatementParser.java index 19712f78787..60ccb34cf15 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/PostgreSQLStatementParser.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/PostgreSQLStatementParser.java @@ -20,15 +20,20 @@ import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.ErrorCode; import com.google.cloud.spanner.SpannerExceptionFactory; +import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.common.base.Preconditions; +import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.annotation.Nullable; @InternalApi public class PostgreSQLStatementParser extends AbstractStatementParser { - PostgreSQLStatementParser() { - super(Dialect.POSTGRESQL); + PostgreSQLStatementParser() throws CompileException { + super( + Dialect.POSTGRESQL, + Collections.unmodifiableSet( + ClientSideStatements.getInstance(Dialect.POSTGRESQL).getCompiledStatements())); } /** diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerStatementParser.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerStatementParser.java index 156ee2e7f6f..8bfdde42bff 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerStatementParser.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerStatementParser.java @@ -20,15 +20,20 @@ import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.ErrorCode; import com.google.cloud.spanner.SpannerExceptionFactory; +import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.common.base.Preconditions; import com.google.common.collect.Sets; +import java.util.Collections; import java.util.Set; @InternalApi public class SpannerStatementParser extends AbstractStatementParser { - public SpannerStatementParser() { - super(Dialect.GOOGLE_STANDARD_SQL); + public SpannerStatementParser() throws CompileException { + super( + Dialect.GOOGLE_STANDARD_SQL, + Collections.unmodifiableSet( + ClientSideStatements.getInstance(Dialect.GOOGLE_STANDARD_SQL).getCompiledStatements())); } /** diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/StatementResult.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/StatementResult.java index 476ae804435..71a9a88cab2 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/StatementResult.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/StatementResult.java @@ -82,7 +82,8 @@ enum ClientSideStatementType { RUN_BATCH, ABORT_BATCH, SET_RPC_PRIORITY, - SHOW_RPC_PRIORITY + SHOW_RPC_PRIORITY, + SHOW_TRANSACTION_ISOLATION_LEVEL } /** diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java index 3f4372db844..d4725b25427 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java @@ -95,8 +95,9 @@ private void processHeader(Metadata metadata, TagContext tagContext) { if (matcher.find()) { try { long latency = Long.parseLong(matcher.group("dur")); - measureMap.put(SPANNER_GFE_LATENCY, latency).record(tagContext); - measureMap.put(SPANNER_GFE_HEADER_MISSING_COUNT, 0L).record(tagContext); + measureMap.put(SPANNER_GFE_LATENCY, latency); + measureMap.put(SPANNER_GFE_HEADER_MISSING_COUNT, 0L); + measureMap.record(tagContext); } catch (NumberFormatException e) { LOGGER.log(LEVEL, "Invalid server-timing object in header", matcher.group("dur")); } diff --git a/google-cloud-spanner/src/main/resources/com/google/cloud/spanner/connection/PG_ClientSideStatements.json b/google-cloud-spanner/src/main/resources/com/google/cloud/spanner/connection/PG_ClientSideStatements.json new file mode 100644 index 00000000000..31e3a801005 --- /dev/null +++ b/google-cloud-spanner/src/main/resources/com/google/cloud/spanner/connection/PG_ClientSideStatements.json @@ -0,0 +1,488 @@ +{ + "statements": + [ + { + "name": "SHOW [VARIABLE] AUTOCOMMIT", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?autocommit\\s*\\z", + "method": "statementShowAutocommit", + "exampleStatements": ["show autocommit","show variable autocommit"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.READONLY", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.readonly\\s*\\z", + "method": "statementShowReadOnly", + "exampleStatements": ["show spanner.readonly","show variable spanner.readonly"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.RETRY_ABORTS_INTERNALLY", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.retry_aborts_internally\\s*\\z", + "method": "statementShowRetryAbortsInternally", + "exampleStatements": ["show spanner.retry_aborts_internally","show variable spanner.retry_aborts_internally"], + "examplePrerequisiteStatements": ["set spanner.readonly=false", "set autocommit=false"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.AUTOCOMMIT_DML_MODE", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.autocommit_dml_mode\\s*\\z", + "method": "statementShowAutocommitDmlMode", + "exampleStatements": ["show spanner.autocommit_dml_mode","show variable spanner.autocommit_dml_mode"] + }, + { + "name": "SHOW [VARIABLE] STATEMENT_TIMEOUT", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?statement_timeout\\s*\\z", + "method": "statementShowStatementTimeout", + "exampleStatements": ["show statement_timeout","show variable statement_timeout"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.READ_TIMESTAMP", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.read_timestamp\\s*\\z", + "method": "statementShowReadTimestamp", + "exampleStatements": ["show spanner.read_timestamp","show variable spanner.read_timestamp"], + "examplePrerequisiteStatements": ["set spanner.readonly = true", "SELECT 1 AS TEST"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.COMMIT_TIMESTAMP", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.commit_timestamp\\s*\\z", + "method": "statementShowCommitTimestamp", + "exampleStatements": ["show spanner.commit_timestamp","show variable spanner.commit_timestamp"], + "examplePrerequisiteStatements": ["update foo set bar=1"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.READ_ONLY_STALENESS", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.read_only_staleness\\s*\\z", + "method": "statementShowReadOnlyStaleness", + "exampleStatements": ["show spanner.read_only_staleness","show variable spanner.read_only_staleness"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.OPTIMIZER_VERSION", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.optimizer_version\\s*\\z", + "method": "statementShowOptimizerVersion", + "exampleStatements": ["show spanner.optimizer_version","show variable spanner.optimizer_version"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.OPTIMIZER_STATISTICS_PACKAGE", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.optimizer_statistics_package\\s*\\z", + "method": "statementShowOptimizerStatisticsPackage", + "exampleStatements": ["show spanner.optimizer_statistics_package","show variable spanner.optimizer_statistics_package"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.RETURN_COMMIT_STATS", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.return_commit_stats\\s*\\z", + "method": "statementShowReturnCommitStats", + "exampleStatements": ["show spanner.return_commit_stats","show variable spanner.return_commit_stats"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.COMMIT_RESPONSE", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.commit_response\\s*\\z", + "method": "statementShowCommitResponse", + "exampleStatements": ["show spanner.commit_response","show variable spanner.commit_response"], + "examplePrerequisiteStatements": ["update foo set bar=1"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.STATEMENT_TAG", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.statement_tag\\s*\\z", + "method": "statementShowStatementTag", + "exampleStatements": ["show spanner.statement_tag","show variable spanner.statement_tag"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.TRANSACTION_TAG", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.transaction_tag\\s*\\z", + "method": "statementShowTransactionTag", + "exampleStatements": ["show spanner.transaction_tag","show variable spanner.transaction_tag"] + }, + { + "name": "SHOW [VARIABLE] SPANNER.RPC_PRIORITY", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?spanner\\.rpc_priority\\s*\\z", + "method": "statementShowRPCPriority", + "exampleStatements": ["show spanner.rpc_priority","show variable spanner.rpc_priority"] + }, + { + "name": "SHOW [VARIABLE] TRANSACTION ISOLATION LEVEL", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "RESULT_SET", + "regex": "(?is)\\A\\s*show\\s+(?:variable\\s+)?transaction\\s*isolation\\s*level\\s*\\z", + "method": "statementShowTransactionIsolationLevel", + "exampleStatements": ["show transaction isolation level","show variable transaction isolation level"] + }, + { + "name": "{START | BEGIN} [TRANSACTION | WORK] [{ (READ ONLY|READ WRITE) | (ISOLATION LEVEL (DEFAULT|SERIALIZABLE)) }]", + "executorName": "ClientSideStatementPgBeginExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*(?:begin|start)(?:\\s+transaction|\\s+work)?(\\s+read\\s+only|\\s+read\\s+write|\\s+isolation\\s+level\\s+default|\\s+isolation\\s+level\\s+serializable)?\\s*\\z", + "method": "statementBeginPgTransaction", + "exampleStatements": [ + "begin", "start", "begin transaction", "start transaction", "begin work", "start work", + "begin read only", "start read only", "begin transaction read only", "start transaction read only", "begin work read only", "start work read only", + "begin read write", "start read write", "begin transaction read write", "start transaction read write", "begin work read write", "start work read write", + "begin isolation level default", "start isolation level default", "begin transaction isolation level default", "start transaction isolation level default", "begin work isolation level default", "start work isolation level default", + "begin isolation level serializable", "start isolation level serializable", "begin transaction isolation level serializable", "start transaction isolation level serializable", "begin work isolation level serializable", "start work isolation level serializable" + ] + }, + { + "name": "COMMIT [TRANSACTION | WORK] [AND NO CHAIN]", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*(?:commit)(?:\\s+transaction|\\s+work)?(?:\\s+and\\s+no\\s+chain)?\\s*\\z", + "method": "statementCommit", + "exampleStatements": ["commit", "commit transaction", "commit work", "commit and no chain", "commit transaction and no chain", "commit work and no chain"], + "examplePrerequisiteStatements": ["begin transaction"] + }, + { + "name": "ROLLBACK [TRANSACTION | WORK] [AND NO CHAIN]", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*(?:rollback)(?:\\s+transaction|\\s+work)?(?:\\s+and\\s+no\\s+chain)?\\s*\\z", + "method": "statementRollback", + "exampleStatements": ["rollback", "rollback transaction", "rollback work", "rollback and no chain", "rollback transaction and no chain", "rollback work and no chain"], + "examplePrerequisiteStatements": ["begin transaction"] + }, + { + "name": "START BATCH DDL", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*(?:start)(?:\\s+batch)(?:\\s+ddl)\\s*\\z", + "method": "statementStartBatchDdl", + "exampleStatements": ["start batch ddl"] + }, + { + "name": "START BATCH DML", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*(?:start)(?:\\s+batch)(?:\\s+dml)\\s*\\z", + "method": "statementStartBatchDml", + "exampleStatements": ["start batch dml"] + }, + { + "name": "RUN BATCH", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*(?:run)(?:\\s+batch)\\s*\\z", + "method": "statementRunBatch", + "exampleStatements": ["run batch"], + "examplePrerequisiteStatements": ["start batch ddl"] + }, + { + "name": "ABORT BATCH", + "executorName": "ClientSideStatementNoParamExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*(?:abort)(?:\\s+batch)\\s*\\z", + "method": "statementAbortBatch", + "exampleStatements": ["abort batch"], + "examplePrerequisiteStatements": ["start batch ddl"] + }, + { + "name": "SET AUTOCOMMIT =|TO TRUE|FALSE", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+autocommit(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetAutocommit", + "exampleStatements": ["set autocommit = true", "set autocommit = false", "set autocommit to true", "set autocommit to false"], + "setStatement": { + "propertyName": "AUTOCOMMIT", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "(TRUE|FALSE)", + "converterName": "ClientSideStatementValueConverters$BooleanConverter" + } + }, + { + "name": "SET SPANNER.READONLY =|TO TRUE|FALSE", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.readonly(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetReadOnly", + "exampleStatements": ["set spanner.readonly = true", "set spanner.readonly = false", "set spanner.readonly to true", "set spanner.readonly to false"], + "setStatement": { + "propertyName": "SPANNER.READONLY", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "(TRUE|FALSE)", + "converterName": "ClientSideStatementValueConverters$BooleanConverter" + } + }, + { + "name": "SET SPANNER.RETRY_ABORTS_INTERNALLY =|TO TRUE|FALSE", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.retry_aborts_internally(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetRetryAbortsInternally", + "exampleStatements": ["set spanner.retry_aborts_internally = true", "set spanner.retry_aborts_internally = false", "set spanner.retry_aborts_internally to true", "set spanner.retry_aborts_internally to false"], + "examplePrerequisiteStatements": ["set spanner.readonly = false", "set autocommit = false"], + "setStatement": { + "propertyName": "SPANNER.RETRY_ABORTS_INTERNALLY", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "(TRUE|FALSE)", + "converterName": "ClientSideStatementValueConverters$BooleanConverter" + } + }, + { + "name": "SET SPANNER.AUTOCOMMIT_DML_MODE =|TO 'PARTITIONED_NON_ATOMIC'|'TRANSACTIONAL'", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.autocommit_dml_mode(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetAutocommitDmlMode", + "exampleStatements": [ + "set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'", + "set spanner.autocommit_dml_mode='TRANSACTIONAL'", + "set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'", + "set spanner.autocommit_dml_mode to 'TRANSACTIONAL'" + ], + "setStatement": { + "propertyName": "SPANNER.AUTOCOMMIT_DML_MODE", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "'(PARTITIONED_NON_ATOMIC|TRANSACTIONAL)'", + "converterName": "ClientSideStatementValueConverters$AutocommitDmlModeConverter" + } + }, + { + "name": "SET STATEMENT_TIMEOUT =|TO ''|INT8|DEFAULT", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+statement_timeout(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetStatementTimeout", + "exampleStatements": [ + "set statement_timeout=default", + "set statement_timeout='1s'", + "set statement_timeout='100ms'", + "set statement_timeout=100", + "set statement_timeout='10000us'", + "set statement_timeout='9223372036854775807ns'", + "set statement_timeout to default", + "set statement_timeout to '1s'", + "set statement_timeout to '100ms'", + "set statement_timeout to 100", + "set statement_timeout to '10000us'", + "set statement_timeout to '9223372036854775807ns'" + ], + "setStatement": { + "propertyName": "STATEMENT_TIMEOUT", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "(\\d{1,19}|'(\\d{1,19})(s|ms|us|ns)'|DEFAULT)", + "converterName": "ClientSideStatementValueConverters$PgDurationConverter" + } + }, + { + "name": "SET TRANSACTION { (READ ONLY|READ WRITE) | (ISOLATION LEVEL (DEFAULT|SERIALIZABLE)) }", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+transaction\\s*(?:\\s+)\\s*(.*)\\z", + "method": "statementSetPgTransactionMode", + "exampleStatements": ["set transaction read only", "set transaction read write", "set transaction isolation level default", "set transaction isolation level serializable"], + "examplePrerequisiteStatements": ["set autocommit = false"], + "setStatement": { + "propertyName": "TRANSACTION", + "separator": "\\s+", + "allowedValues": "(READ\\s+ONLY|READ\\s+WRITE|ISOLATION\\s+LEVEL\\s+DEFAULT|ISOLATION\\s+LEVEL\\s+SERIALIZABLE)", + "converterName": "ClientSideStatementValueConverters$PgTransactionModeConverter" + } + }, + { + "name": "SET SESSION CHARACTERISTICS AS TRANSACTION { (READ ONLY|READ WRITE) | (ISOLATION LEVEL (DEFAULT|SERIALIZABLE)) }", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+session\\s+characteristics\\s+as\\s+transaction\\s*(?:\\s+)\\s*(.*)\\z", + "method": "statementSetPgSessionCharacteristicsTransactionMode", + "exampleStatements": ["set session characteristics as transaction read only", "set session characteristics as transaction read write", "set session characteristics as transaction isolation level default", "set session characteristics as transaction isolation level serializable"], + "setStatement": { + "propertyName": "SESSION\\s+CHARACTERISTICS\\s+AS\\s+TRANSACTION", + "separator": "\\s+", + "allowedValues": "(READ\\s+ONLY|READ\\s+WRITE|ISOLATION\\s+LEVEL\\s+DEFAULT|ISOLATION\\s+LEVEL\\s+SERIALIZABLE)", + "converterName": "ClientSideStatementValueConverters$PgTransactionModeConverter" + } + }, + { + "name": "SET SPANNER.READ_ONLY_STALENESS =|TO 'STRONG' | 'MIN_READ_TIMESTAMP ' | 'READ_TIMESTAMP ' | 'MAX_STALENESS s|ms|us|ns' | 'EXACT_STALENESS (s|ms|us|ns)'", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.read_only_staleness(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetReadOnlyStaleness", + "exampleStatements": [ + "set spanner.read_only_staleness='STRONG'", + "set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'", + "set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'", + "set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'", + "set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'", + "set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'", + "set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'", + "set spanner.read_only_staleness='MAX_STALENESS 12s'", + "set spanner.read_only_staleness='MAX_STALENESS 100ms'", + "set spanner.read_only_staleness='MAX_STALENESS 99999us'", + "set spanner.read_only_staleness='MAX_STALENESS 10ns'", + "set spanner.read_only_staleness='EXACT_STALENESS 15s'", + "set spanner.read_only_staleness='EXACT_STALENESS 1500ms'", + "set spanner.read_only_staleness='EXACT_STALENESS 15000000us'", + "set spanner.read_only_staleness='EXACT_STALENESS 9999ns'", + "set spanner.read_only_staleness to 'STRONG'", + "set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'", + "set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'", + "set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'", + "set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'", + "set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'", + "set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'", + "set spanner.read_only_staleness to 'MAX_STALENESS 12s'", + "set spanner.read_only_staleness to 'MAX_STALENESS 100ms'", + "set spanner.read_only_staleness to 'MAX_STALENESS 99999us'", + "set spanner.read_only_staleness to 'MAX_STALENESS 10ns'", + "set spanner.read_only_staleness to 'EXACT_STALENESS 15s'", + "set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'", + "set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'", + "set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'" + ], + "setStatement": { + "propertyName": "SPANNER.READ_ONLY_STALENESS", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "'((STRONG)|(MIN_READ_TIMESTAMP)[\\t ]+((\\d{4})-(\\d{2})-(\\d{2})([Tt](\\d{2}):(\\d{2}):(\\d{2})(\\.\\d{1,9})?)([Zz]|([+-])(\\d{2}):(\\d{2})))|(READ_TIMESTAMP)[\\t ]+((\\d{4})-(\\d{2})-(\\d{2})([Tt](\\d{2}):(\\d{2}):(\\d{2})(\\.\\d{1,9})?)([Zz]|([+-])(\\d{2}):(\\d{2})))|(MAX_STALENESS)[\\t ]+((\\d{1,19})(s|ms|us|ns))|(EXACT_STALENESS)[\\t ]+((\\d{1,19})(s|ms|us|ns)))'", + "converterName": "ClientSideStatementValueConverters$ReadOnlyStalenessConverter" + } + }, + { + "name": "SET SPANNER.OPTIMIZER_VERSION =|TO ''|'LATEST'|''", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.optimizer_version(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetOptimizerVersion", + "exampleStatements": [ + "set spanner.optimizer_version='1'", + "set spanner.optimizer_version='200'", + "set spanner.optimizer_version='LATEST'", + "set spanner.optimizer_version=''", + "set spanner.optimizer_version to '1'", + "set spanner.optimizer_version to '200'", + "set spanner.optimizer_version to 'LATEST'", + "set spanner.optimizer_version to ''" + ], + "setStatement": { + "propertyName": "SPANNER.OPTIMIZER_VERSION", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "'((\\d{1,20})|(LATEST)|())'", + "converterName": "ClientSideStatementValueConverters$StringValueConverter" + } + }, + { + "name": "SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE =|TO ''|''", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.optimizer_statistics_package(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetOptimizerStatisticsPackage", + "exampleStatements": [ + "set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'", + "set spanner.optimizer_statistics_package=''", + "set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'", + "set spanner.optimizer_statistics_package to ''" + ], + "setStatement": { + "propertyName": "SPANNER.OPTIMIZER_STATISTICS_PACKAGE", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "'((\\S+)|())'", + "converterName": "ClientSideStatementValueConverters$StringValueConverter" + } + }, + { + "name": "SET SPANNER.RETURN_COMMIT_STATS =|TO TRUE|FALSE", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.return_commit_stats(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetReturnCommitStats", + "exampleStatements": ["set spanner.return_commit_stats = true", "set spanner.return_commit_stats = false", "set spanner.return_commit_stats to true", "set spanner.return_commit_stats to false"], + "setStatement": { + "propertyName": "SPANNER.RETURN_COMMIT_STATS", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "(TRUE|FALSE)", + "converterName": "ClientSideStatementValueConverters$BooleanConverter" + } + }, + { + "name": "SET SPANNER.STATEMENT_TAG =|TO ''", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.statement_tag(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetStatementTag", + "exampleStatements": [ + "set spanner.statement_tag='tag1'", + "set spanner.statement_tag='tag2'", + "set spanner.statement_tag=''", + "set spanner.statement_tag to 'tag1'", + "set spanner.statement_tag to 'tag2'", + "set spanner.statement_tag to ''" + ], + "setStatement": { + "propertyName": "SPANNER.STATEMENT_TAG", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "'(([a-zA-Z][a-zA-Z0-9_\\-]{1,63})|())'", + "converterName": "ClientSideStatementValueConverters$StringValueConverter" + } + }, + { + "name": "SET SPANNER.TRANSACTION_TAG =|TO ''", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.transaction_tag(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetTransactionTag", + "exampleStatements": [ + "set spanner.transaction_tag='tag1'", + "set spanner.transaction_tag='tag2'", + "set spanner.transaction_tag=''", + "set spanner.transaction_tag to 'tag1'", + "set spanner.transaction_tag to 'tag2'", + "set spanner.transaction_tag to ''" + ], + "examplePrerequisiteStatements": ["set autocommit = false"], + "setStatement": { + "propertyName": "SPANNER.TRANSACTION_TAG", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "'(([a-zA-Z][a-zA-Z0-9_\\-]{1,63})|())'", + "converterName": "ClientSideStatementValueConverters$StringValueConverter" + } + }, + { + "name": "SET SPANNER.RPC_PRIORITY =|TO 'HIGH'|'MEDIUM'|'LOW'|'NULL'", + "executorName": "ClientSideStatementSetExecutor", + "resultType": "NO_RESULT", + "regex": "(?is)\\A\\s*set\\s+spanner\\.rpc_priority(?:\\s*=\\s*|\\s+to\\s+)(.*)\\z", + "method": "statementSetRPCPriority", + "exampleStatements": [ + "set spanner.rpc_priority='HIGH'", + "set spanner.rpc_priority='MEDIUM'", + "set spanner.rpc_priority='LOW'", + "set spanner.rpc_priority='NULL'", + "set spanner.rpc_priority to 'HIGH'", + "set spanner.rpc_priority to 'MEDIUM'", + "set spanner.rpc_priority to 'LOW'", + "set spanner.rpc_priority to 'NULL'" + ], + "setStatement": { + "propertyName": "SPANNER.RPC_PRIORITY", + "separator": "(?:=|\\s+TO\\s+)", + "allowedValues": "'(HIGH|MEDIUM|LOW|NULL)'", + "converterName": "ClientSideStatementValueConverters$RpcPriorityConverter" + } + } + ] +} 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 407815983e2..456d9197848 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 @@ -2261,6 +2261,46 @@ public void testGetDialectPostgreSQLPreloaded() { } } + @Test + public void testGetDialect_FailsDirectlyIfDatabaseNotFound() { + mockSpanner.setBatchCreateSessionsExecutionTime( + SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database")); + DatabaseClient client = + spanner.getDatabaseClient(DatabaseId.of(TEST_PROJECT, TEST_INSTANCE, TEST_DATABASE)); + + SpannerException exception = assertThrows(SpannerException.class, client::getDialect); + assertEquals(ErrorCode.NOT_FOUND, exception.getErrorCode()); + assertTrue( + exception + .getMessage() + .contains( + "NOT_FOUND: Database not found: Database with id invalid-database not found")); + } + + @Test + public void testGetDialectDefaultPreloaded_FailsDirectlyIfDatabaseNotFound() { + mockSpanner.setBatchCreateSessionsExecutionTime( + SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database")); + try (Spanner spanner = + this.spanner + .getOptions() + .toBuilder() + .setSessionPoolOption( + SessionPoolOptions.newBuilder().setAutoDetectDialect(true).build()) + .build() + .getService()) { + DatabaseClient client = + spanner.getDatabaseClient(DatabaseId.of(TEST_PROJECT, TEST_INSTANCE, TEST_DATABASE)); + SpannerException exception = assertThrows(SpannerException.class, client::getDialect); + assertEquals(ErrorCode.NOT_FOUND, exception.getErrorCode()); + assertTrue( + exception + .getMessage() + .contains( + "NOT_FOUND: Database not found: Database with id invalid-database not found")); + } + } + @Test public void testUntypedNullParameters() { Statement statement = diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java index ef43a4b44c2..4f6d204035f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java @@ -46,6 +46,7 @@ import com.google.protobuf.Timestamp; import com.google.spanner.admin.database.v1.Backup; import com.google.spanner.admin.database.v1.BackupName; +import com.google.spanner.admin.database.v1.CopyBackupRequest; import com.google.spanner.admin.database.v1.CreateBackupRequest; import com.google.spanner.admin.database.v1.CreateDatabaseRequest; import com.google.spanner.admin.database.v1.Database; @@ -906,6 +907,8 @@ public void createBackupTest() throws Exception { .addAllReferencingDatabases(new ArrayList()) .setEncryptionInfo(EncryptionInfo.newBuilder().build()) .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) .build(); Operation resultOperation = Operation.newBuilder() @@ -966,6 +969,8 @@ public void createBackupTest2() throws Exception { .addAllReferencingDatabases(new ArrayList()) .setEncryptionInfo(EncryptionInfo.newBuilder().build()) .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) .build(); Operation resultOperation = Operation.newBuilder() @@ -1013,6 +1018,270 @@ public void createBackupExceptionTest2() throws Exception { } } + @Test + public void copyBackupTest() throws Exception { + Backup expectedResponse = + Backup.newBuilder() + .setDatabase(DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]").toString()) + .setVersionTime(Timestamp.newBuilder().build()) + .setExpireTime(Timestamp.newBuilder().build()) + .setName(BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .setSizeBytes(-1796325715) + .addAllReferencingDatabases(new ArrayList()) + .setEncryptionInfo(EncryptionInfo.newBuilder().build()) + .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("copyBackupTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockDatabaseAdmin.addResponse(resultOperation); + + InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); + String backupId = "backupId2121930365"; + BackupName sourceBackup = BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]"); + Timestamp expireTime = Timestamp.newBuilder().build(); + + Backup actualResponse = + client.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatabaseAdmin.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CopyBackupRequest actualRequest = ((CopyBackupRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertEquals(backupId, actualRequest.getBackupId()); + Assert.assertEquals(sourceBackup.toString(), actualRequest.getSourceBackup()); + Assert.assertEquals(expireTime, actualRequest.getExpireTime()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void copyBackupExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatabaseAdmin.addException(exception); + + try { + InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); + String backupId = "backupId2121930365"; + BackupName sourceBackup = BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]"); + Timestamp expireTime = Timestamp.newBuilder().build(); + client.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + + @Test + public void copyBackupTest2() throws Exception { + Backup expectedResponse = + Backup.newBuilder() + .setDatabase(DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]").toString()) + .setVersionTime(Timestamp.newBuilder().build()) + .setExpireTime(Timestamp.newBuilder().build()) + .setName(BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .setSizeBytes(-1796325715) + .addAllReferencingDatabases(new ArrayList()) + .setEncryptionInfo(EncryptionInfo.newBuilder().build()) + .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("copyBackupTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockDatabaseAdmin.addResponse(resultOperation); + + InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); + String backupId = "backupId2121930365"; + String sourceBackup = "sourceBackup823134653"; + Timestamp expireTime = Timestamp.newBuilder().build(); + + Backup actualResponse = + client.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatabaseAdmin.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CopyBackupRequest actualRequest = ((CopyBackupRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertEquals(backupId, actualRequest.getBackupId()); + Assert.assertEquals(sourceBackup, actualRequest.getSourceBackup()); + Assert.assertEquals(expireTime, actualRequest.getExpireTime()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void copyBackupExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatabaseAdmin.addException(exception); + + try { + InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); + String backupId = "backupId2121930365"; + String sourceBackup = "sourceBackup823134653"; + Timestamp expireTime = Timestamp.newBuilder().build(); + client.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + + @Test + public void copyBackupTest3() throws Exception { + Backup expectedResponse = + Backup.newBuilder() + .setDatabase(DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]").toString()) + .setVersionTime(Timestamp.newBuilder().build()) + .setExpireTime(Timestamp.newBuilder().build()) + .setName(BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .setSizeBytes(-1796325715) + .addAllReferencingDatabases(new ArrayList()) + .setEncryptionInfo(EncryptionInfo.newBuilder().build()) + .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("copyBackupTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockDatabaseAdmin.addResponse(resultOperation); + + String parent = "parent-995424086"; + String backupId = "backupId2121930365"; + BackupName sourceBackup = BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]"); + Timestamp expireTime = Timestamp.newBuilder().build(); + + Backup actualResponse = + client.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatabaseAdmin.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CopyBackupRequest actualRequest = ((CopyBackupRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertEquals(backupId, actualRequest.getBackupId()); + Assert.assertEquals(sourceBackup.toString(), actualRequest.getSourceBackup()); + Assert.assertEquals(expireTime, actualRequest.getExpireTime()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void copyBackupExceptionTest3() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatabaseAdmin.addException(exception); + + try { + String parent = "parent-995424086"; + String backupId = "backupId2121930365"; + BackupName sourceBackup = BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]"); + Timestamp expireTime = Timestamp.newBuilder().build(); + client.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + + @Test + public void copyBackupTest4() throws Exception { + Backup expectedResponse = + Backup.newBuilder() + .setDatabase(DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]").toString()) + .setVersionTime(Timestamp.newBuilder().build()) + .setExpireTime(Timestamp.newBuilder().build()) + .setName(BackupName.of("[PROJECT]", "[INSTANCE]", "[BACKUP]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .setSizeBytes(-1796325715) + .addAllReferencingDatabases(new ArrayList()) + .setEncryptionInfo(EncryptionInfo.newBuilder().build()) + .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("copyBackupTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockDatabaseAdmin.addResponse(resultOperation); + + String parent = "parent-995424086"; + String backupId = "backupId2121930365"; + String sourceBackup = "sourceBackup823134653"; + Timestamp expireTime = Timestamp.newBuilder().build(); + + Backup actualResponse = + client.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatabaseAdmin.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CopyBackupRequest actualRequest = ((CopyBackupRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertEquals(backupId, actualRequest.getBackupId()); + Assert.assertEquals(sourceBackup, actualRequest.getSourceBackup()); + Assert.assertEquals(expireTime, actualRequest.getExpireTime()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void copyBackupExceptionTest4() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatabaseAdmin.addException(exception); + + try { + String parent = "parent-995424086"; + String backupId = "backupId2121930365"; + String sourceBackup = "sourceBackup823134653"; + Timestamp expireTime = Timestamp.newBuilder().build(); + client.copyBackupAsync(parent, backupId, sourceBackup, expireTime).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + @Test public void getBackupTest() throws Exception { Backup expectedResponse = @@ -1026,6 +1295,8 @@ public void getBackupTest() throws Exception { .addAllReferencingDatabases(new ArrayList()) .setEncryptionInfo(EncryptionInfo.newBuilder().build()) .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) .build(); mockDatabaseAdmin.addResponse(expectedResponse); @@ -1072,6 +1343,8 @@ public void getBackupTest2() throws Exception { .addAllReferencingDatabases(new ArrayList()) .setEncryptionInfo(EncryptionInfo.newBuilder().build()) .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) .build(); mockDatabaseAdmin.addResponse(expectedResponse); @@ -1118,6 +1391,8 @@ public void updateBackupTest() throws Exception { .addAllReferencingDatabases(new ArrayList()) .setEncryptionInfo(EncryptionInfo.newBuilder().build()) .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .addAllReferencingBackups(new ArrayList()) + .setMaxExpireTime(Timestamp.newBuilder().build()) .build(); mockDatabaseAdmin.addResponse(expectedResponse); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java index a0b87516293..ce169fef29f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java @@ -26,6 +26,7 @@ import com.google.protobuf.AbstractMessage; import com.google.protobuf.Empty; import com.google.spanner.admin.database.v1.Backup; +import com.google.spanner.admin.database.v1.CopyBackupRequest; import com.google.spanner.admin.database.v1.CreateBackupRequest; import com.google.spanner.admin.database.v1.CreateDatabaseRequest; import com.google.spanner.admin.database.v1.Database; @@ -293,6 +294,26 @@ public void createBackup( } } + @Override + public void copyBackup(CopyBackupRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof Operation) { + requests.add(request); + responseObserver.onNext(((Operation) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method CopyBackup, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Operation.class.getName(), + Exception.class.getName()))); + } + } + @Override public void getBackup(GetBackupRequest request, StreamObserver responseObserver) { Object response = responses.poll(); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java index 06b2c0cf891..cb959200425 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.connection; +import static com.google.cloud.spanner.connection.DialectNamespaceMapper.getNamespace; import static com.google.cloud.spanner.connection.ReadOnlyStalenessUtil.getTimeUnitAbbreviation; import static com.google.cloud.spanner.connection.SpannerExceptionMatcher.matchCode; import static org.hamcrest.CoreMatchers.equalTo; @@ -26,11 +27,13 @@ import static org.junit.Assert.assertEquals; import com.google.cloud.Timestamp; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.ErrorCode; import com.google.cloud.spanner.Mutation; import com.google.cloud.spanner.ReadContext.QueryAnalyzeMode; import com.google.cloud.spanner.ResultSet; import com.google.cloud.spanner.SpannerException; +import com.google.cloud.spanner.SpannerExceptionFactory; import com.google.cloud.spanner.Statement; import com.google.cloud.spanner.TimestampBound; import com.google.cloud.spanner.connection.AbstractStatementParser.StatementType; @@ -43,25 +46,34 @@ import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; -import org.junit.AfterClass; -import org.junit.BeforeClass; +import org.junit.After; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; /** * This test class and all its subclasses are used to generate the file * ConnectionImplGeneratedSqlScriptTest.sql. */ -@RunWith(JUnit4.class) +@RunWith(Parameterized.class) public abstract class AbstractConnectionImplTest { public static final String UPDATE = "UPDATE foo SET bar=1"; public static final String SELECT = "SELECT 1 AS TEST"; public static final String DDL = "CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id)"; + @Parameter public Dialect dialect; + + @Parameters(name = "dialect = {0}") + public static Object[] data() { + return Dialect.values(); + } + interface ConnectionConsumer { void accept(Connection connection); } @@ -77,9 +89,24 @@ interface ConnectionConsumer { private static final String LOG_FILE = "src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql"; + private static final String PG_LOG_FILE = + "src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql"; + + private static String getLogFile(Dialect dialect) { + switch (dialect) { + case GOOGLE_STANDARD_SQL: + return LOG_FILE; + case POSTGRESQL: + return PG_LOG_FILE; + default: + throw SpannerExceptionFactory.newSpannerException( + ErrorCode.INVALID_ARGUMENT, "Unknown or unsupported dialect: " + dialect); + } + } + private static final String DO_LOG_PROPERTY = "do_log_statements"; - private static boolean doLog; - private static PrintWriter writer; + private boolean doLog; + private PrintWriter writer; abstract Connection getConnection(); @@ -103,8 +130,8 @@ static void expectSpannerException( AbstractConnectionImplTest() {} /** Makes an empty test script. Can be called before a new script is to be generated. */ - static void emptyScript() { - openLog(false); + void emptyScript(Dialect dialect) { + openLog(false, dialect); closeLog(); } @@ -114,32 +141,42 @@ void log(String statement) { } } - @BeforeClass - public static void openLog() { + void logWithNamespace(String statement) { + if (doLog) { + writer.printf(statement, getNamespace(dialect)); + writer.println(); + } + } + + @Before + public void openLog() { doLog = Boolean.parseBoolean(System.getProperty(DO_LOG_PROPERTY, "false")); if (doLog) { - openLog(true); + if (writer == null) { + openLog(true, this.dialect); + } } else { writer = null; } } - private static void openLog(boolean append) { + private void openLog(boolean append, Dialect dialect) { try { writer = new PrintWriter( new OutputStreamWriter( - new FileOutputStream(LOG_FILE, append), StandardCharsets.UTF_8), + new FileOutputStream(getLogFile(dialect), append), StandardCharsets.UTF_8), true); } catch (IOException e) { throw new RuntimeException(e); } } - @AfterClass - public static void closeLog() { + @After + public void closeLog() { if (writer != null) { writer.close(); + writer = null; } } @@ -190,22 +227,22 @@ public void testSetAutocommit() { public void testSetReadOnly() { try (Connection connection = getConnection()) { if (isSetReadOnlyAllowed()) { - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); - log("@EXPECT RESULT_SET 'READONLY',FALSE"); - log("SHOW VARIABLE READONLY;"); + logWithNamespace("@EXPECT RESULT_SET '%sREADONLY',FALSE"); + logWithNamespace("SHOW VARIABLE %sREADONLY;"); assertThat(connection.isReadOnly(), is(false)); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); - log("@EXPECT RESULT_SET 'READONLY',TRUE"); - log("SHOW VARIABLE READONLY;"); + logWithNamespace("@EXPECT RESULT_SET '%sREADONLY',TRUE"); + logWithNamespace("SHOW VARIABLE %sREADONLY;"); assertThat(connection.isReadOnly(), is(true)); } else { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log("SET READONLY=" + (connection.isAutocommit() ? "FALSE;" : "TRUE;")); + logWithNamespace("SET %sREADONLY=" + (connection.isAutocommit() ? "FALSE;" : "TRUE;")); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.setReadOnly(!connection.isReadOnly()); } @@ -225,10 +262,15 @@ public void testSetStatementTimeout() { log("SHOW VARIABLE STATEMENT_TIMEOUT;"); assertThat(connection.getStatementTimeout(unit), is(equalTo(1L))); - log("SET STATEMENT_TIMEOUT=null;"); + log( + String.format( + "SET STATEMENT_TIMEOUT=%s;", dialect == Dialect.POSTGRESQL ? "DEFAULT" : "null")); connection.clearStatementTimeout(); - log("@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null"); + log( + String.format( + "@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',%s", + dialect == Dialect.POSTGRESQL ? "'0'" : "null")); log("SHOW VARIABLE STATEMENT_TIMEOUT;"); assertThat(connection.getStatementTimeout(unit), is(equalTo(0L))); assertThat(connection.hasStatementTimeout(), is(false)); @@ -241,7 +283,10 @@ public void testSetStatementTimeout() { gotException = true; } assertThat(gotException, is(true)); - log("@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null"); + log( + String.format( + "@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',%s", + dialect == Dialect.POSTGRESQL ? "'0'" : "null")); log("SHOW VARIABLE STATEMENT_TIMEOUT;"); assertThat(connection.getStatementTimeout(unit), is(equalTo(0L))); assertThat(connection.hasStatementTimeout(), is(false)); @@ -439,7 +484,10 @@ public void testSetTransactionTag() { try (Connection connection = getConnection()) { String tag = "some-tag"; if (isSetTransactionTagAllowed()) { - log(String.format("SET TRANSACTION_TAG = '%s';", tag)); + log( + String.format( + "SET %sTRANSACTION_TAG = '%s';", + DialectNamespaceMapper.getNamespace(dialect), tag)); connection.setTransactionTag(tag); assertEquals(tag, connection.getTransactionTag()); } else { @@ -449,7 +497,10 @@ public void testSetTransactionTag() { @Override public void accept(Connection t) { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log(String.format("SET TRANSACTION_TAG = '%s';", tag)); + log( + String.format( + "SET %sTRANSACTION_TAG = '%s';", + DialectNamespaceMapper.getNamespace(dialect), tag)); t.setTransactionTag(tag); } }, @@ -507,17 +558,17 @@ public void testSetAutocommitDmlMode() { try (Connection connection = getConnection()) { if (isSetAutocommitDmlModeAllowed()) { for (AutocommitDmlMode mode : AutocommitDmlMode.values()) { - log("SET AUTOCOMMIT_DML_MODE='" + mode.toString() + "';"); + logWithNamespace("SET %sAUTOCOMMIT_DML_MODE='" + mode.toString() + "';"); connection.setAutocommitDmlMode(mode); - log("@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','" + mode.toString() + "'"); - log("SHOW VARIABLE AUTOCOMMIT_DML_MODE;"); + logWithNamespace("@EXPECT RESULT_SET '%sAUTOCOMMIT_DML_MODE','" + mode.toString() + "'"); + logWithNamespace("SHOW VARIABLE %sAUTOCOMMIT_DML_MODE;"); assertThat(connection.getAutocommitDmlMode(), is(equalTo(mode))); } } else { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log( - "SET AUTOCOMMIT_DML_MODE='" + logWithNamespace( + "SET %sAUTOCOMMIT_DML_MODE='" + AutocommitDmlMode.PARTITIONED_NON_ATOMIC.toString() + "';"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); @@ -532,12 +583,12 @@ public void testSetAutocommitDmlMode() { public void testGetAutocommitDmlMode() { try (Connection connection = getConnection()) { if (isGetAutocommitDmlModeAllowed()) { - log("@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE'"); - log("SHOW VARIABLE AUTOCOMMIT_DML_MODE;"); + logWithNamespace("@EXPECT RESULT_SET '%sAUTOCOMMIT_DML_MODE'"); + logWithNamespace("SHOW VARIABLE %sAUTOCOMMIT_DML_MODE;"); assertThat(connection.getAutocommitDmlMode(), is(notNullValue())); } else { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log("SHOW VARIABLE AUTOCOMMIT_DML_MODE;"); + logWithNamespace("SHOW VARIABLE %sAUTOCOMMIT_DML_MODE;"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.getAutocommitDmlMode(); } @@ -566,25 +617,25 @@ private List getTestTimestampBounds() { private void testSetReadOnlyStaleness(final TimestampBound staleness) { try (Connection connection = getConnection()) { if (isSetReadOnlyStalenessAllowed(staleness.getMode())) { - log( - "SET READ_ONLY_STALENESS='" + logWithNamespace( + "SET %sREAD_ONLY_STALENESS='" + ReadOnlyStalenessUtil.timestampBoundToString(staleness) + "';"); connection.setReadOnlyStaleness(staleness); - log( - "@EXPECT RESULT_SET 'READ_ONLY_STALENESS','" + logWithNamespace( + "@EXPECT RESULT_SET '%sREAD_ONLY_STALENESS','" + ReadOnlyStalenessUtil.timestampBoundToString(staleness) + "'"); - log("SHOW VARIABLE READ_ONLY_STALENESS;"); + logWithNamespace("SHOW VARIABLE %sREAD_ONLY_STALENESS;"); assertThat(connection.getReadOnlyStaleness(), is(equalTo(staleness))); } else { expectSpannerException( staleness.getMode() + " should not be allowed", t -> { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log( - "SET READ_ONLY_STALENESS='" + logWithNamespace( + "SET %sREAD_ONLY_STALENESS='" + ReadOnlyStalenessUtil.timestampBoundToString(staleness) + "';"); t.setReadOnlyStaleness(staleness); @@ -600,12 +651,12 @@ private void testSetReadOnlyStaleness(final TimestampBound staleness) { public void testGetReadOnlyStaleness() { try (Connection connection = getConnection()) { if (isGetReadOnlyStalenessAllowed()) { - log("@EXPECT RESULT_SET 'READ_ONLY_STALENESS'"); - log("SHOW VARIABLE READ_ONLY_STALENESS;"); + logWithNamespace("@EXPECT RESULT_SET '%sREAD_ONLY_STALENESS'"); + logWithNamespace("SHOW VARIABLE %sREAD_ONLY_STALENESS;"); assertThat(connection.getReadOnlyStaleness(), is(notNullValue())); } else { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log("SHOW VARIABLE READ_ONLY_STALENESS;"); + logWithNamespace("SHOW VARIABLE %sREAD_ONLY_STALENESS;"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.getReadOnlyStaleness(); } @@ -621,16 +672,16 @@ public void testSetOptimizerVersion() { try (Connection connection = getConnection()) { if (isSetOptimizerVersionAllowed()) { for (String version : new String[] {"1", "2", "latest", ""}) { - log("SET OPTIMIZER_VERSION='" + version + "';"); + logWithNamespace("SET %sOPTIMIZER_VERSION='" + version + "';"); connection.setOptimizerVersion(version); - log("@EXPECT RESULT_SET 'OPTIMIZER_VERSION','" + version + "'"); - log("SHOW VARIABLE OPTIMIZER_VERSION;"); + logWithNamespace("@EXPECT RESULT_SET '%sOPTIMIZER_VERSION','" + version + "'"); + logWithNamespace("SHOW VARIABLE %sOPTIMIZER_VERSION;"); assertThat(connection.getOptimizerVersion(), is(equalTo(version))); } } else { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log("SET OPTIMIZER_VERSION='1';"); + logWithNamespace("SET %sOPTIMIZER_VERSION='1';"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.setOptimizerVersion("1"); } @@ -645,12 +696,12 @@ boolean isGetOptimizerVersionAllowed() { public void testGetOptimizerVersion() { try (Connection connection = getConnection()) { if (isGetOptimizerVersionAllowed()) { - log("@EXPECT RESULT_SET 'OPTIMIZER_VERSION'"); - log("SHOW VARIABLE OPTIMIZER_VERSION;"); + logWithNamespace("@EXPECT RESULT_SET '%sOPTIMIZER_VERSION'"); + logWithNamespace("SHOW VARIABLE %sOPTIMIZER_VERSION;"); assertThat(connection.getOptimizerVersion(), is(notNullValue())); } else { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log("SHOW VARIABLE OPTIMIZER_VERSION;"); + logWithNamespace("SHOW VARIABLE %sOPTIMIZER_VERSION;"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.getOptimizerVersion(); } @@ -666,16 +717,17 @@ public void testSetOptimizerStatisticsPackage() { try (Connection connection = getConnection()) { if (isSetOptimizerStatisticsPackageAllowed()) { for (String statisticsPackage : new String[] {"custom-package", ""}) { - log("SET OPTIMIZER_STATISTICS_PACKAGE='" + statisticsPackage + "';"); + logWithNamespace("SET %sOPTIMIZER_STATISTICS_PACKAGE='" + statisticsPackage + "';"); connection.setOptimizerStatisticsPackage(statisticsPackage); - log("@EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','" + statisticsPackage + "'"); - log("SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE;"); + logWithNamespace( + "@EXPECT RESULT_SET '%sOPTIMIZER_STATISTICS_PACKAGE','" + statisticsPackage + "'"); + logWithNamespace("SHOW VARIABLE %sOPTIMIZER_STATISTICS_PACKAGE;"); assertThat(connection.getOptimizerStatisticsPackage(), is(equalTo(statisticsPackage))); } } else { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log("SET OPTIMIZER_STATISTICS_PACKAGE='custom-package';"); + logWithNamespace("SET %sOPTIMIZER_STATISTICS_PACKAGE='custom-package';"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.setOptimizerStatisticsPackage("custom-package"); } @@ -690,12 +742,12 @@ boolean isGetOptimizerStatisticsPackageAllowed() { public void testGetOptimizerStatisticsPackage() { try (Connection connection = getConnection()) { if (isGetOptimizerStatisticsPackageAllowed()) { - log("@EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE'"); - log("SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE;"); + logWithNamespace("@EXPECT RESULT_SET '%sOPTIMIZER_STATISTICS_PACKAGE'"); + logWithNamespace("SHOW VARIABLE %sOPTIMIZER_STATISTICS_PACKAGE;"); assertThat(connection.getOptimizerStatisticsPackage(), is(notNullValue())); } else { log("@EXPECT EXCEPTION FAILED_PRECONDITION"); - log("SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE;"); + logWithNamespace("SHOW VARIABLE %sOPTIMIZER_STATISTICS_PACKAGE;"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.getOptimizerStatisticsPackage(); } @@ -754,12 +806,12 @@ public void testIsTransactionStarted() { public void testGetReadTimestamp() { try (Connection connection = getConnection()) { if (isGetReadTimestampAllowed()) { - log("@EXPECT RESULT_SET 'READ_TIMESTAMP'"); - log("SHOW VARIABLE READ_TIMESTAMP;"); + logWithNamespace("@EXPECT RESULT_SET '%sREAD_TIMESTAMP'"); + logWithNamespace("SHOW VARIABLE %sREAD_TIMESTAMP;"); assertThat(connection.getReadTimestamp(), is(notNullValue())); } else { - log("@EXPECT RESULT_SET 'READ_TIMESTAMP',null"); - log("SHOW VARIABLE READ_TIMESTAMP;"); + logWithNamespace("@EXPECT RESULT_SET '%sREAD_TIMESTAMP',null"); + logWithNamespace("SHOW VARIABLE %sREAD_TIMESTAMP;"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.getReadTimestamp(); } @@ -772,12 +824,12 @@ public void testGetReadTimestamp() { public void testGetCommitTimestamp() { try (Connection connection = getConnection()) { if (isGetCommitTimestampAllowed()) { - log("@EXPECT RESULT_SET 'COMMIT_TIMESTAMP'"); - log("SHOW VARIABLE COMMIT_TIMESTAMP;"); + logWithNamespace("@EXPECT RESULT_SET '%sCOMMIT_TIMESTAMP'"); + logWithNamespace("SHOW VARIABLE %sCOMMIT_TIMESTAMP;"); assertThat(connection.getCommitTimestamp(), is(notNullValue())); } else { - log("@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null"); - log("SHOW VARIABLE COMMIT_TIMESTAMP;"); + logWithNamespace("@EXPECT RESULT_SET '%sCOMMIT_TIMESTAMP',null"); + logWithNamespace("SHOW VARIABLE %sCOMMIT_TIMESTAMP;"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.getCommitTimestamp(); } @@ -788,12 +840,12 @@ public void testGetCommitTimestamp() { public void testGetCommitResponse() { try (Connection connection = getConnection()) { if (isGetCommitTimestampAllowed()) { - log("@EXPECT RESULT_SET 'COMMIT_TIMESTAMP'"); - log("SHOW VARIABLE COMMIT_RESPONSE;"); + logWithNamespace("@EXPECT RESULT_SET '%sCOMMIT_TIMESTAMP'"); + logWithNamespace("SHOW VARIABLE %sCOMMIT_RESPONSE;"); assertThat(connection.getCommitResponse(), is(notNullValue())); } else { - log("@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null"); - log("SHOW VARIABLE COMMIT_RESPONSE;"); + logWithNamespace("@EXPECT RESULT_SET '%sCOMMIT_TIMESTAMP',null"); + logWithNamespace("SHOW VARIABLE %sCOMMIT_RESPONSE;"); exception.expect(matchCode(ErrorCode.FAILED_PRECONDITION)); connection.getCommitResponse(); } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractSqlScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractSqlScriptTest.java index 11e27802214..f508f7c44c4 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractSqlScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractSqlScriptTest.java @@ -50,8 +50,9 @@ public GenericConnection getConnection() { ConnectionImplTest.createConnection( ConnectionOptions.newBuilder() .setCredentials(NoCredentials.getInstance()) - .setUri(ConnectionImplTest.URI + ";dialect=" + dialect.name()) - .build())); + .setUri(ConnectionImplTest.URI) + .build(), + dialect)); } } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AutocommitDmlModeConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AutocommitDmlModeConverterTest.java index c05e17a3b9d..dcfeb139c32 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AutocommitDmlModeConverterTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AutocommitDmlModeConverterTest.java @@ -22,19 +22,28 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.cloud.spanner.connection.ClientSideStatementValueConverters.AutocommitDmlModeConverter; import org.junit.Test; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; -@RunWith(JUnit4.class) +@RunWith(Parameterized.class) public class AutocommitDmlModeConverterTest { + @Parameter public Dialect dialect; + + @Parameters(name = "dialect = {0}") + public static Object[] data() { + return Dialect.values(); + } @Test public void testConvert() throws CompileException { String allowedValues = - ReadOnlyStalenessConverterTest.getAllowedValues(AutocommitDmlModeConverter.class); + ReadOnlyStalenessConverterTest.getAllowedValues(AutocommitDmlModeConverter.class, dialect); assertThat(allowedValues, is(notNullValue())); AutocommitDmlModeConverter converter = new AutocommitDmlModeConverter(allowedValues); assertThat(converter.convert("transactional"), is(equalTo(AutocommitDmlMode.TRANSACTIONAL))); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/BeginPgTransactionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/BeginPgTransactionTest.java new file mode 100644 index 00000000000..3f36043f164 --- /dev/null +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/BeginPgTransactionTest.java @@ -0,0 +1,125 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.spanner.connection; + +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.Statement; +import com.google.cloud.spanner.connection.AbstractStatementParser.ParsedStatement; +import com.google.cloud.spanner.connection.AbstractStatementParser.StatementType; +import com.google.common.collect.ImmutableList; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class BeginPgTransactionTest { + private final AbstractStatementParser parser = + AbstractStatementParser.getInstance(Dialect.POSTGRESQL); + + @Test + public void testBeginWithNoOption() { + ConnectionImpl connection = mock(ConnectionImpl.class); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); + + int index = 1; + for (String sql : + ImmutableList.of( + "begin", + "begin transaction", + "begin work", + "start", + "start transaction", + "start work", + "begin isolation level default", + "begin transaction isolation level default", + "begin work isolation level default", + "start isolation level default", + "start transaction isolation level default", + "start work isolation level default", + "begin isolation level serializable", + "begin transaction isolation level serializable", + "begin work isolation level serializable", + "start isolation level serializable", + "start transaction isolation level serializable", + "start work isolation level serializable")) { + ParsedStatement statement = parser.parse(Statement.of(sql)); + assertEquals(sql, StatementType.CLIENT_SIDE, statement.getType()); + statement.getClientSideStatement().execute(executor, sql); + + verify(connection, times(index)).beginTransaction(); + verify(connection, never()).setTransactionMode(any()); + index++; + } + } + + @Test + public void testBeginReadOnly() { + ConnectionImpl connection = mock(ConnectionImpl.class); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); + + int index = 1; + for (String sql : + ImmutableList.of( + "begin read only", + "begin transaction read only", + "begin work read only", + "start read only", + "start transaction read only", + "start work read only")) { + ParsedStatement statement = parser.parse(Statement.of(sql)); + assertEquals(sql, StatementType.CLIENT_SIDE, statement.getType()); + statement.getClientSideStatement().execute(executor, sql); + + verify(connection, times(index)).beginTransaction(); + verify(connection, times(index)).setTransactionMode(TransactionMode.READ_ONLY_TRANSACTION); + verify(connection, never()).setTransactionMode(TransactionMode.READ_WRITE_TRANSACTION); + index++; + } + } + + @Test + public void testBeginReadWrite() { + ConnectionImpl connection = mock(ConnectionImpl.class); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); + + int index = 1; + for (String sql : + ImmutableList.of( + "begin read write", + "begin transaction read write", + "begin work read write", + "start read write", + "start transaction read write", + "start work read write")) { + ParsedStatement statement = parser.parse(Statement.of(sql)); + assertEquals(sql, StatementType.CLIENT_SIDE, statement.getType()); + statement.getClientSideStatement().execute(executor, sql); + + verify(connection, times(index)).beginTransaction(); + verify(connection, times(index)).setTransactionMode(TransactionMode.READ_WRITE_TRANSACTION); + verify(connection, never()).setTransactionMode(TransactionMode.READ_ONLY_TRANSACTION); + index++; + } + } +} diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/BooleanConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/BooleanConverterTest.java index 98bd1ec1c7c..551848dea9b 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/BooleanConverterTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/BooleanConverterTest.java @@ -22,18 +22,28 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.cloud.spanner.connection.ClientSideStatementValueConverters.BooleanConverter; import org.junit.Test; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; -@RunWith(JUnit4.class) +@RunWith(Parameterized.class) public class BooleanConverterTest { + @Parameter public Dialect dialect; + + @Parameters(name = "dialect = {0}") + public static Object[] data() { + return Dialect.values(); + } @Test public void testConvert() throws CompileException { - String allowedValues = ReadOnlyStalenessConverterTest.getAllowedValues(BooleanConverter.class); + String allowedValues = + ReadOnlyStalenessConverterTest.getAllowedValues(BooleanConverter.class, dialect); assertThat(allowedValues, is(notNullValue())); BooleanConverter converter = new BooleanConverter(allowedValues); assertThat(converter.convert("true"), is(equalTo(Boolean.TRUE))); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ClientSideStatementsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ClientSideStatementsTest.java index 629d8bbc6c7..caf73f02271 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ClientSideStatementsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ClientSideStatementsTest.java @@ -16,7 +16,9 @@ package com.google.cloud.spanner.connection; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.ErrorCode; +import com.google.cloud.spanner.SpannerExceptionFactory; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; @@ -30,32 +32,44 @@ /** * Test that runs a pre-generated sql script for {@link ClientSideStatement}s. The sql script can be - * generated by running mvn -P generate-test-sql-scripts compile It is only necessary - * to generate a new test script if a new {@link ClientSideStatement} has been added, or the - * behavior of an existing {@link ClientSideStatement} has changed. + * generated by running + * mvn -Ddo_log_statements=true exec:java -Dexec.mainClass=com.google.cloud.spanner.connection.SqlTestScriptsGenerator -Dexec.classpathScope="test" + * It is only necessary to generate a new test script if a new {@link ClientSideStatement} + * has been added, or the behavior of an existing {@link ClientSideStatement} has changed. * *

This class does not need to be implemented for the client libraries of other programming * languages. All test cases are covered by the sql file ClientSideStatementsTest.sql. */ public class ClientSideStatementsTest extends AbstractSqlScriptTest { + private static String getScriptFile(Dialect dialect) { + switch (dialect) { + case GOOGLE_STANDARD_SQL: + return "ClientSideStatementsTest.sql"; + case POSTGRESQL: + return "postgresql/ClientSideStatementsTest.sql"; + default: + throw SpannerExceptionFactory.newSpannerException( + ErrorCode.INVALID_ARGUMENT, "Unknown or unsupported dialect: " + dialect); + } + } + @Test public void testExecuteClientSideStatementsScript() throws Exception { SqlScriptVerifier verifier = new SqlScriptVerifier(new TestConnectionProvider(dialect)); - verifier.verifyStatementsInFile("ClientSideStatementsTest.sql", getClass(), true); + verifier.verifyStatementsInFile(getScriptFile(dialect), getClass(), true); } - private static final String SCRIPT_FILE = - "src/test/resources/com/google/cloud/spanner/connection/ClientSideStatementsTest.sql"; private static PrintWriter writer; /** Generates the test script file */ - static void generateTestScript() throws Exception { + static void generateTestScript(Dialect dialect) throws Exception { + AbstractStatementParser parser = AbstractStatementParser.getInstance(dialect); try { - openLog(); - ClientSideStatements statements = ClientSideStatements.INSTANCE; + openLog(dialect); + ClientSideStatements statements = ClientSideStatements.getInstance(dialect); for (ClientSideStatementImpl statement : statements.getCompiledStatements()) { - generateTestStatements(statement); + generateTestStatements(parser, statement); } } finally { closeLog(); @@ -84,12 +98,16 @@ private static void writeLog(String statement) { writer.println(statement + ";"); } - private static void openLog() { + private static void openLog(Dialect dialect) { try { writer = new PrintWriter( new OutputStreamWriter( - new FileOutputStream(SCRIPT_FILE, false), StandardCharsets.UTF_8), + new FileOutputStream( + "src/test/resources/com/google/cloud/spanner/connection/" + + getScriptFile(dialect), + false), + StandardCharsets.UTF_8), true); } catch (IOException e) { throw new RuntimeException(e); @@ -104,7 +122,8 @@ public static void closeLog() { } /** Generates test statements for all {@link ClientSideStatement}s */ - private static void generateTestStatements(ClientSideStatementImpl statement) { + private static void generateTestStatements( + AbstractStatementParser parser, ClientSideStatementImpl statement) { for (String sql : statement.getExampleStatements()) { log(statement.getExamplePrerequisiteStatements(), sql); log(statement.getExamplePrerequisiteStatements(), upper(sql)); @@ -126,7 +145,9 @@ private static void generateTestStatements(ClientSideStatementImpl statement) { log( statement.getExamplePrerequisiteStatements(), withInvalidSuffix(sql), - statement.isQuery() ? ErrorCode.UNIMPLEMENTED : ErrorCode.INVALID_ARGUMENT); + parser.isQuery(withInvalidSuffix(sql)) + ? ErrorCode.UNIMPLEMENTED + : ErrorCode.INVALID_ARGUMENT); final String[] replacements = { "%", "_", "&", "$", "@", "!", "*", "(", ")", "-", "+", "-#", "/", "\\", "?", "-/", "/#", @@ -140,11 +161,15 @@ private static void generateTestStatements(ClientSideStatementImpl statement) { log( statement.getExamplePrerequisiteStatements(), withSuffix(replacement, sql), - statement.isQuery() ? ErrorCode.UNIMPLEMENTED : ErrorCode.INVALID_ARGUMENT); + parser.isQuery(withSuffix(replacement, sql)) + ? ErrorCode.UNIMPLEMENTED + : ErrorCode.INVALID_ARGUMENT); log( statement.getExamplePrerequisiteStatements(), replaceLastSpaceWith(replacement, sql), - statement.isQuery() ? ErrorCode.UNIMPLEMENTED : ErrorCode.INVALID_ARGUMENT); + parser.isQuery(replaceLastSpaceWith(replacement, sql)) + ? ErrorCode.UNIMPLEMENTED + : ErrorCode.INVALID_ARGUMENT); } } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplAutocommitReadOnlyTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplAutocommitReadOnlyTest.java index 246dc03bb12..58e2c6f3e77 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplAutocommitReadOnlyTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplAutocommitReadOnlyTest.java @@ -43,7 +43,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -190,7 +190,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -341,7 +341,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -490,7 +490,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -640,7 +640,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -794,13 +794,13 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); TimestampBound staleness = TimestampBound.ofMaxStaleness(10L, TimeUnit.SECONDS); - log( - "SET READ_ONLY_STALENESS='" + logWithNamespace( + "SET %sREAD_ONLY_STALENESS='" + ReadOnlyStalenessUtil.timestampBoundToString(staleness) + "';"); connection.setReadOnlyStaleness(staleness); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplAutocommitReadWriteTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplAutocommitReadWriteTest.java index 48eeb5a96d0..7edfe704c75 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplAutocommitReadWriteTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplAutocommitReadWriteTest.java @@ -42,7 +42,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -187,7 +187,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -336,7 +336,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -485,7 +485,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -631,7 +631,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -777,7 +777,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -926,7 +926,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -1075,7 +1075,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); @@ -1225,7 +1225,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=TRUE;"); connection.setAutocommit(true); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.java index 61ba525efdb..b9cfac15080 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.java @@ -16,6 +16,8 @@ package com.google.cloud.spanner.connection; +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.connection.ConnectionImplAutocommitReadOnlyTest.ConnectionImplAutocommitReadOnlyNoActionsTest; import com.google.common.collect.ImmutableSet; import com.google.common.reflect.ClassPath; import com.google.common.reflect.ClassPath.ClassInfo; @@ -33,18 +35,29 @@ * connection reacts correctly in all possible states (i.e. DML statements should not be allowed * when the connection is in read-only mode, or when a read-only transaction has started etc.) * - *

A new test script can be generated by running: mvn -P generate-test-sql-scripts compile + *

A new test script can be generated by running: + * mvn -Ddo_log_statements=true exec:java -Dexec.mainClass=com.google.cloud.spanner.connection.SqlTestScriptsGenerator -Dexec.classpathScope="test" * It is only necessary to generate a new test script if the behavior of {@link - * com.google.cloud.spanner.jdbc.Connection} has changed (for example calling COMMIT is currently - * not allowed in AUTOCOMMIT mode, but this has changed to be a no-op). A new test script must also - * be generated if additional test cases have been added to {@link AbstractConnectionImplTest}. + * com.google.cloud.spanner.connection.Connection} has changed (for example calling COMMIT is + * currently not allowed in AUTOCOMMIT mode, but this has changed to be a no-op). A new test script + * must also be generated if additional test cases have been added to {@link + * AbstractConnectionImplTest}. */ public class ConnectionImplGeneratedSqlScriptTest extends AbstractSqlScriptTest { + private String getFileName() { + switch (dialect) { + case POSTGRESQL: + return "postgresql/ConnectionImplGeneratedSqlScriptTest.sql"; + case GOOGLE_STANDARD_SQL: + default: + return "ConnectionImplGeneratedSqlScriptTest.sql"; + } + } @Test public void testGeneratedScript() throws Exception { SqlScriptVerifier verifier = new SqlScriptVerifier(new TestConnectionProvider(dialect)); - verifier.verifyStatementsInFile("ConnectionImplGeneratedSqlScriptTest.sql", getClass(), true); + verifier.verifyStatementsInFile(getFileName(), getClass(), true); } /** @@ -54,16 +67,20 @@ public void testGeneratedScript() throws Exception { * these test cases are run is non-deterministic. That means that the generated sql script will * still contain exactly the same test cases after each generation, but the order of the test * cases in the script file is equal to the order in which the test cases were run the last time - * the script was generated. It is therefore also not recommended to include this generation in an + * the script was generated. It is therefore also not recommended including this generation in an * automatic build, but to generate the script only when there has been some fundamental change in * the code. * *

The sql test scripts can be generated by running - * mvn -P generate-test-sql-scripts compile + * mvn -Ddo_log_statements=true exec:java -Dexec.mainClass=com.google.cloud.spanner.connection.SqlTestScriptsGenerator -Dexec.classpathScope="test" + * */ static void generateTestScript() throws ClassNotFoundException, IOException { // first make the current script file empty - AbstractConnectionImplTest.emptyScript(); + AbstractConnectionImplTest test = new ConnectionImplAutocommitReadOnlyNoActionsTest(); + for (Dialect dialect : Dialect.values()) { + test.emptyScript(dialect); + } JUnitCore junit = new JUnitCore(); Class[] testClasses = getAbstractConnectionImplTestSubclasses(); Result result = junit.run(testClasses); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTest.java index 6d04caa8c26..59780aed0f6 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTest.java @@ -220,14 +220,18 @@ private static DdlClient createDefaultMockDdlClient() { } } - public static ConnectionImpl createConnection(final ConnectionOptions options) { + static ConnectionImpl createConnection(final ConnectionOptions options) { + return createConnection(options, Dialect.GOOGLE_STANDARD_SQL); + } + + public static ConnectionImpl createConnection(final ConnectionOptions options, Dialect dialect) { Spanner spanner = mock(Spanner.class); SpannerPool spannerPool = mock(SpannerPool.class); when(spannerPool.getSpanner(any(ConnectionOptions.class), any(ConnectionImpl.class))) .thenReturn(spanner); DdlClient ddlClient = createDefaultMockDdlClient(); DatabaseClient dbClient = mock(DatabaseClient.class); - when(dbClient.getDialect()).thenReturn(Dialect.GOOGLE_STANDARD_SQL); + when(dbClient.getDialect()).thenReturn(dialect); ReadOnlyTransaction singleUseReadOnlyTx = mock(ReadOnlyTransaction.class); ResultSet mockResultSetWithStats = createSelect1MockResultSet(); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTransactionalReadOnlyTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTransactionalReadOnlyTest.java index d98861d0d1b..627fadd79eb 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTransactionalReadOnlyTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTransactionalReadOnlyTest.java @@ -43,7 +43,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -189,7 +189,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -340,7 +340,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -491,7 +491,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -641,7 +641,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -794,7 +794,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -947,13 +947,13 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); TimestampBound staleness = TimestampBound.ofExactStaleness(10L, TimeUnit.SECONDS); - log( - "SET READ_ONLY_STALENESS='" + logWithNamespace( + "SET %sREAD_ONLY_STALENESS='" + ReadOnlyStalenessUtil.timestampBoundToString(staleness) + "';"); connection.setReadOnlyStaleness(staleness); @@ -1098,7 +1098,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=TRUE;"); + logWithNamespace("SET %sREADONLY=TRUE;"); connection.setReadOnly(true); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTransactionalReadWriteTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTransactionalReadWriteTest.java index 1fa01abaf16..aac7497d074 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTransactionalReadWriteTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionImplTransactionalReadWriteTest.java @@ -43,7 +43,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -192,7 +192,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -345,7 +345,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -499,7 +499,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -651,7 +651,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -806,7 +806,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -961,13 +961,13 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); TimestampBound staleness = TimestampBound.ofExactStaleness(10L, TimeUnit.SECONDS); - log( - "SET READ_ONLY_STALENESS='" + logWithNamespace( + "SET %sREAD_ONLY_STALENESS='" + ReadOnlyStalenessUtil.timestampBoundToString(staleness) + "';"); connection.setReadOnlyStaleness(staleness); @@ -1115,7 +1115,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -1263,7 +1263,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -1419,7 +1419,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -1567,7 +1567,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -1716,7 +1716,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); @@ -1869,7 +1869,7 @@ Connection getConnection() { .setCredentials(NoCredentials.getInstance()) .setUri(ConnectionImplTest.URI) .build()); - log("SET READONLY=FALSE;"); + logWithNamespace("SET %sREADONLY=FALSE;"); connection.setReadOnly(false); log("SET AUTOCOMMIT=FALSE;"); connection.setAutocommit(false); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorTest.java index a9b3a06b537..acb2e76f7ce 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorTest.java @@ -22,20 +22,30 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import com.google.cloud.Timestamp; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.TimestampBound; import com.google.protobuf.Duration; import java.util.concurrent.TimeUnit; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; -@RunWith(JUnit4.class) +@RunWith(Parameterized.class) public class ConnectionStatementExecutorTest { + @Parameter public Dialect dialect; + + @Parameters(name = "dialect = {0}") + public static Object[] data() { + return Dialect.values(); + } private ConnectionImpl connection; private ConnectionStatementExecutorImpl subject; @@ -45,6 +55,7 @@ public void createSubject() { connection = mock(ConnectionImpl.class); when(connection.getAutocommitDmlMode()).thenReturn(AutocommitDmlMode.TRANSACTIONAL); when(connection.getReadOnlyStaleness()).thenReturn(TimestampBound.strong()); + when(connection.getDialect()).thenReturn(dialect); subject = new ConnectionStatementExecutorImpl(connection); } @@ -210,4 +221,20 @@ public void testStatementSetTransactionMode() { subject.statementSetTransactionMode(TransactionMode.READ_WRITE_TRANSACTION); verify(connection).setTransactionMode(TransactionMode.READ_WRITE_TRANSACTION); } + + @Test + public void testStatementSetPgTransactionMode() { + subject.statementSetPgTransactionMode(PgTransactionMode.READ_ONLY_TRANSACTION); + verify(connection).setTransactionMode(TransactionMode.READ_ONLY_TRANSACTION); + subject.statementSetPgTransactionMode(PgTransactionMode.READ_WRITE_TRANSACTION); + verify(connection).setTransactionMode(TransactionMode.READ_WRITE_TRANSACTION); + } + + @Test + public void testStatementSetPgTransactionModeNoOp() { + subject.statementSetPgTransactionMode(PgTransactionMode.ISOLATION_LEVEL_DEFAULT); + subject.statementSetPgTransactionMode(PgTransactionMode.ISOLATION_LEVEL_SERIALIZABLE); + verify(connection, never()).setTransactionMode(TransactionMode.READ_ONLY_TRANSACTION); + verify(connection, never()).setTransactionMode(TransactionMode.READ_WRITE_TRANSACTION); + } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementWithNoParametersTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementWithNoParametersTest.java index 2f2b538d073..6140825f57b 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementWithNoParametersTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementWithNoParametersTest.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner.connection; +import static com.google.cloud.spanner.connection.DialectNamespaceMapper.getNamespace; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -63,24 +64,32 @@ public void testExecuteGetAutocommit() { @Test public void testExecuteGetReadOnly() { - ParsedStatement statement = parser.parse(Statement.of("show variable readonly")); + ParsedStatement statement = + parser.parse( + Statement.of(String.format("show variable %sreadonly", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementShowReadOnly()).thenCallRealMethod(); - statement.getClientSideStatement().execute(executor, "show variable readonly"); + when(connection.getDialect()).thenReturn(dialect); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); + statement + .getClientSideStatement() + .execute(executor, String.format("show variable %sreadonly", getNamespace(dialect))); verify(connection, times(1)).isReadOnly(); } @Test public void testExecuteGetAutocommitDmlMode() { - ParsedStatement statement = parser.parse(Statement.of("show variable autocommit_dml_mode")); + ParsedStatement statement = + parser.parse( + Statement.of( + String.format("show variable %sautocommit_dml_mode", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementShowAutocommitDmlMode()).thenCallRealMethod(); + when(connection.getDialect()).thenReturn(dialect); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); when(connection.getAutocommitDmlMode()).thenReturn(AutocommitDmlMode.TRANSACTIONAL); - statement.getClientSideStatement().execute(executor, "show variable autocommit_dml_mode"); + statement + .getClientSideStatement() + .execute( + executor, String.format("show variable %sautocommit_dml_mode", getNamespace(dialect))); verify(connection, times(1)).getAutocommitDmlMode(); } @@ -99,64 +108,85 @@ public void testExecuteGetStatementTimeout() { @Test public void testExecuteGetReadTimestamp() { - ParsedStatement statement = parser.parse(Statement.of("show variable read_timestamp")); + ParsedStatement statement = + parser.parse( + Statement.of(String.format("show variable %sread_timestamp", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementShowReadTimestamp()).thenCallRealMethod(); + when(connection.getDialect()).thenReturn(dialect); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); when(connection.getReadTimestampOrNull()).thenReturn(Timestamp.now()); - statement.getClientSideStatement().execute(executor, "show variable read_timestamp"); + statement + .getClientSideStatement() + .execute(executor, String.format("show variable %sread_timestamp", getNamespace(dialect))); verify(connection, times(1)).getReadTimestampOrNull(); } @Test public void testExecuteGetCommitTimestamp() { - ParsedStatement statement = parser.parse(Statement.of("show variable commit_timestamp")); + ParsedStatement statement = + parser.parse( + Statement.of(String.format("show variable %scommit_timestamp", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementShowCommitTimestamp()).thenCallRealMethod(); + when(connection.getDialect()).thenReturn(dialect); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); when(connection.getCommitTimestampOrNull()).thenReturn(Timestamp.now()); - statement.getClientSideStatement().execute(executor, "show variable commit_timestamp"); + statement + .getClientSideStatement() + .execute( + executor, String.format("show variable %scommit_timestamp", getNamespace(dialect))); verify(connection, times(1)).getCommitTimestampOrNull(); } @Test public void testExecuteGetReadOnlyStaleness() { - ParsedStatement statement = parser.parse(Statement.of("show variable read_only_staleness")); + ParsedStatement statement = + parser.parse( + Statement.of( + String.format("show variable %sread_only_staleness", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementShowReadOnlyStaleness()).thenCallRealMethod(); + when(connection.getDialect()).thenReturn(dialect); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); when(connection.getReadOnlyStaleness()).thenReturn(TimestampBound.strong()); - statement.getClientSideStatement().execute(executor, "show variable read_only_staleness"); + statement + .getClientSideStatement() + .execute( + executor, String.format("show variable %sread_only_staleness", getNamespace(dialect))); verify(connection, times(1)).getReadOnlyStaleness(); } @Test public void testExecuteGetOptimizerVersion() { - ParsedStatement statement = parser.parse(Statement.of("show variable optimizer_version")); + ParsedStatement statement = + parser.parse( + Statement.of( + String.format("show variable %soptimizer_version", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementShowOptimizerVersion()).thenCallRealMethod(); + when(connection.getDialect()).thenReturn(dialect); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); when(connection.getOptimizerVersion()).thenReturn("1"); - statement.getClientSideStatement().execute(executor, "show variable optimizer_version"); + statement + .getClientSideStatement() + .execute( + executor, String.format("show variable %soptimizer_version", getNamespace(dialect))); verify(connection, times(1)).getOptimizerVersion(); } @Test public void testExecuteGetOptimizerStatisticsPackage() { ParsedStatement statement = - parser.parse(Statement.of("show variable optimizer_statistics_package")); + parser.parse( + Statement.of( + String.format( + "show variable %soptimizer_statistics_package", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementShowOptimizerStatisticsPackage()).thenCallRealMethod(); + when(connection.getDialect()).thenReturn(dialect); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); when(connection.getOptimizerStatisticsPackage()).thenReturn("custom-package"); statement .getClientSideStatement() - .execute(executor, "show variable optimizer_statistics_package"); + .execute( + executor, + String.format("show variable %soptimizer_statistics_package", getNamespace(dialect))); verify(connection, times(1)).getOptimizerStatisticsPackage(); } @@ -165,9 +195,7 @@ public void testExecuteBegin() { ParsedStatement subject = parser.parse(Statement.of("begin")); for (String statement : subject.getClientSideStatement().getExampleStatements()) { ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementBeginTransaction()).thenCallRealMethod(); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); subject.getClientSideStatement().execute(executor, statement); verify(connection, times(1)).beginTransaction(); } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementWithOneParameterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementWithOneParameterTest.java index 645d2f3b566..b68f78908b0 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementWithOneParameterTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionStatementWithOneParameterTest.java @@ -16,6 +16,8 @@ package com.google.cloud.spanner.connection; +import static com.google.cloud.spanner.connection.DialectNamespaceMapper.getNamespace; +import static org.junit.Assume.assumeTrue; import static org.mockito.Mockito.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; @@ -35,6 +37,7 @@ import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameter; import org.junit.runners.Parameterized.Parameters; +import org.mockito.Mockito; @RunWith(Parameterized.class) public class ConnectionStatementWithOneParameterTest { @@ -69,20 +72,42 @@ public void testExecuteSetAutocommit() { @Test public void testExecuteSetReadOnly() { - ParsedStatement subject = parser.parse(Statement.of("set readonly = true")); + ParsedStatement subject = + parser.parse(Statement.of(String.format("set %sreadonly = true", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); when(executor.getConnection()).thenReturn(connection); when(executor.statementSetReadOnly(any(Boolean.class))).thenCallRealMethod(); for (Boolean mode : new Boolean[] {Boolean.FALSE, Boolean.TRUE}) { - subject.getClientSideStatement().execute(executor, String.format("set readonly = %s", mode)); + subject + .getClientSideStatement() + .execute(executor, String.format("set %sreadonly = %s", getNamespace(dialect), mode)); + verify(connection, times(1)).setReadOnly(mode); + } + } + + @Test + public void testExecuteSetReadOnlyTo() { + assumeTrue("TO is only supported in PostgreSQL dialect", dialect == Dialect.POSTGRESQL); + ParsedStatement subject = + parser.parse(Statement.of(String.format("set %sreadonly to true", getNamespace(dialect)))); + ConnectionImpl connection = mock(ConnectionImpl.class); + ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); + when(executor.getConnection()).thenReturn(connection); + when(executor.statementSetReadOnly(any(Boolean.class))).thenCallRealMethod(); + for (Boolean mode : new Boolean[] {Boolean.FALSE, Boolean.TRUE}) { + subject + .getClientSideStatement() + .execute(executor, String.format("set %sreadonly to %s", getNamespace(dialect), mode)); verify(connection, times(1)).setReadOnly(mode); } } @Test public void testExecuteSetAutocommitDmlMode() { - ParsedStatement subject = parser.parse(Statement.of("set autocommit_dml_mode='foo'")); + ParsedStatement subject = + parser.parse( + Statement.of(String.format("set %sautocommit_dml_mode='foo'", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); when(executor.getConnection()).thenReturn(connection); @@ -90,7 +115,9 @@ public void testExecuteSetAutocommitDmlMode() { for (AutocommitDmlMode mode : AutocommitDmlMode.values()) { subject .getClientSideStatement() - .execute(executor, String.format("set autocommit_dml_mode='%s'", mode.name())); + .execute( + executor, + String.format("set %sautocommit_dml_mode='%s'", getNamespace(dialect), mode.name())); verify(connection, times(1)).setAutocommitDmlMode(mode); } } @@ -119,14 +146,31 @@ public void testExecuteSetStatementTimeout() { verify(connection, times(1)).setStatementTimeout(val, unit); } } - ParsedStatement subject = parser.parse(Statement.of("set statement_timeout=null")); - subject.getClientSideStatement().execute(executor, "set statement_timeout=null"); + if (dialect == Dialect.POSTGRESQL) { + for (Long val : new Long[] {1L, 100L, 999L}) { + Mockito.clearInvocations(connection); + ParsedStatement subject = + parser.parse(Statement.of(String.format("set statement_timeout=%d", val))); + subject + .getClientSideStatement() + .execute(executor, String.format("set statement_timeout=%d", val)); + verify(connection, times(1)).setStatementTimeout(val, TimeUnit.MILLISECONDS); + } + + ParsedStatement subject = parser.parse(Statement.of("set statement_timeout=default")); + subject.getClientSideStatement().execute(executor, "set statement_timeout=default"); + } else { + ParsedStatement subject = parser.parse(Statement.of("set statement_timeout=null")); + subject.getClientSideStatement().execute(executor, "set statement_timeout=null"); + } verify(connection, times(1)).clearStatementTimeout(); } @Test public void testExecuteSetReadOnlyStaleness() { - ParsedStatement subject = parser.parse(Statement.of("set read_only_staleness='foo'")); + ParsedStatement subject = + parser.parse( + Statement.of(String.format("set %sread_only_staleness='foo'", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); when(executor.getConnection()).thenReturn(connection); @@ -142,7 +186,10 @@ public void testExecuteSetReadOnlyStaleness() { subject .getClientSideStatement() .execute( - executor, String.format("set read_only_staleness='%s'", timestampBoundToString(val))); + executor, + String.format( + "set %sread_only_staleness='%s'", + getNamespace(dialect), timestampBoundToString(val))); verify(connection, times(1)).setReadOnlyStaleness(val); } } @@ -166,7 +213,9 @@ private String timestampBoundToString(TimestampBound staleness) { @Test public void testExecuteSetOptimizerVersion() { - ParsedStatement subject = parser.parse(Statement.of("set optimizer_version='foo'")); + ParsedStatement subject = + parser.parse( + Statement.of(String.format("set %soptimizer_version='foo'", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); when(executor.getConnection()).thenReturn(connection); @@ -174,14 +223,19 @@ public void testExecuteSetOptimizerVersion() { for (String version : new String[] {"1", "200", "", "LATEST"}) { subject .getClientSideStatement() - .execute(executor, String.format("set optimizer_version='%s'", version)); + .execute( + executor, + String.format("set %soptimizer_version='%s'", getNamespace(dialect), version)); verify(connection, times(1)).setOptimizerVersion(version); } } @Test public void testExecuteSetOptimizerStatisticsPackage() { - ParsedStatement subject = parser.parse(Statement.of("set optimizer_statistics_package='foo'")); + ParsedStatement subject = + parser.parse( + Statement.of( + String.format("set %soptimizer_statistics_package='foo'", getNamespace(dialect)))); ConnectionImpl connection = mock(ConnectionImpl.class); ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); when(executor.getConnection()).thenReturn(connection); @@ -190,7 +244,10 @@ public void testExecuteSetOptimizerStatisticsPackage() { subject .getClientSideStatement() .execute( - executor, String.format("set optimizer_statistics_package='%s'", statisticsPackage)); + executor, + String.format( + "set %soptimizer_statistics_package='%s'", + getNamespace(dialect), statisticsPackage)); verify(connection, times(1)).setOptimizerStatisticsPackage(statisticsPackage); } } @@ -199,9 +256,7 @@ public void testExecuteSetOptimizerStatisticsPackage() { public void testExecuteSetTransaction() { ParsedStatement subject = parser.parse(Statement.of("set transaction read_only")); ConnectionImpl connection = mock(ConnectionImpl.class); - ConnectionStatementExecutorImpl executor = mock(ConnectionStatementExecutorImpl.class); - when(executor.getConnection()).thenReturn(connection); - when(executor.statementSetTransactionMode(any(TransactionMode.class))).thenCallRealMethod(); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); for (TransactionMode mode : TransactionMode.values()) { subject .getClientSideStatement() diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionTest.java index 00f62138700..85025ad91bc 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionTest.java @@ -19,13 +19,17 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import com.google.api.core.ApiFuture; import com.google.api.core.ApiFutures; import com.google.cloud.spanner.AbortedException; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.ErrorCode; +import com.google.cloud.spanner.MockSpannerServiceImpl; +import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime; import com.google.cloud.spanner.ResultSet; import com.google.cloud.spanner.SpannerException; import com.google.cloud.spanner.SpannerOptions; @@ -43,6 +47,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import javax.annotation.Nonnull; +import org.junit.After; import org.junit.AfterClass; import org.junit.Test; import org.junit.experimental.runners.Enclosed; @@ -465,4 +470,48 @@ public void testShowSetRPCPriority() { } } } + + public static class DialectDetectionTest extends AbstractMockServerTest { + protected String getBaseUrl() { + return super.getBaseUrl() + ";minSessions=1"; + } + + @After + public void reset() { + // Reset dialect to default. + mockSpanner.putStatementResult( + MockSpannerServiceImpl.StatementResult.detectDialectResult(Dialect.GOOGLE_STANDARD_SQL)); + mockSpanner.reset(); + mockSpanner.removeAllExecutionTimes(); + // Close all open Spanner instances to ensure that each test run gets a fresh instance. + SpannerPool.closeSpannerPool(); + } + + @Test + public void testDefaultGetDialect() { + try (Connection connection = createConnection()) { + assertEquals(Dialect.GOOGLE_STANDARD_SQL, connection.getDialect()); + } + } + + @Test + public void testPostgreSQLGetDialect() { + mockSpanner.putStatementResult( + MockSpannerServiceImpl.StatementResult.detectDialectResult(Dialect.POSTGRESQL)); + try (Connection connection = createConnection()) { + assertEquals(Dialect.POSTGRESQL, connection.getDialect()); + } + } + + @Test + public void testGetDialect_DatabaseNotFound() throws Exception { + mockSpanner.setBatchCreateSessionsExecutionTime( + SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database")); + try (Connection connection = createConnection()) { + SpannerException exception = assertThrows(SpannerException.class, connection::getDialect); + assertEquals(ErrorCode.NOT_FOUND, exception.getErrorCode()); + assertTrue(exception.getMessage().contains("Database with id invalid-database not found")); + } + } + } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java index 2d0a9f8cb87..0c26f5b3b76 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java @@ -22,6 +22,7 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.cloud.spanner.connection.ClientSideStatementValueConverters.DurationConverter; import com.google.protobuf.Duration; @@ -32,10 +33,11 @@ @RunWith(JUnit4.class) public class DurationConverterTest { - @Test public void testConvert() throws CompileException { - String allowedValues = ReadOnlyStalenessConverterTest.getAllowedValues(DurationConverter.class); + String allowedValues = + ReadOnlyStalenessConverterTest.getAllowedValues( + DurationConverter.class, Dialect.GOOGLE_STANDARD_SQL); assertThat(allowedValues, is(notNullValue())); DurationConverter converter = new DurationConverter(allowedValues); assertThat( diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java new file mode 100644 index 00000000000..b3b0ff1fff5 --- /dev/null +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java @@ -0,0 +1,81 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.spanner.connection; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; +import com.google.cloud.spanner.connection.ClientSideStatementValueConverters.PgDurationConverter; +import com.google.protobuf.Duration; +import java.util.concurrent.TimeUnit; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class PgDurationConverterTest { + @Test + public void testConvert() throws CompileException { + String allowedValues = + ReadOnlyStalenessConverterTest.getAllowedValues( + PgDurationConverter.class, Dialect.POSTGRESQL); + assertNotNull(allowedValues); + PgDurationConverter converter = new PgDurationConverter(allowedValues); + + assertEquals(Duration.newBuilder().setNanos(1000000).build(), converter.convert("1")); + assertEquals(Duration.newBuilder().setSeconds(1L).build(), converter.convert("1000")); + assertEquals( + Duration.newBuilder().setSeconds(1L).setNanos(1000000).build(), converter.convert("1001")); + + assertEquals( + Duration.newBuilder().setNanos((int) TimeUnit.MILLISECONDS.toNanos(100L)).build(), + converter.convert("'100ms'")); + assertNull(converter.convert("'0ms'")); + assertNull(converter.convert("'-100ms'")); + assertEquals( + Duration.newBuilder().setSeconds(315576000000L).build(), + converter.convert("'315576000000000ms'")); + assertEquals(Duration.newBuilder().setSeconds(1L).build(), converter.convert("'1s'")); + assertEquals( + Duration.newBuilder() + .setSeconds(1L) + .setNanos((int) TimeUnit.MILLISECONDS.toNanos(1L)) + .build(), + converter.convert("'1001ms'")); + + assertEquals(Duration.newBuilder().setNanos(1).build(), converter.convert("'1ns'")); + assertEquals(Duration.newBuilder().setNanos(1000).build(), converter.convert("'1us'")); + assertEquals(Duration.newBuilder().setNanos(1000000).build(), converter.convert("'1ms'")); + assertEquals( + Duration.newBuilder().setNanos(999999999).build(), converter.convert("'999999999ns'")); + assertEquals(Duration.newBuilder().setSeconds(1L).build(), converter.convert("'1s'")); + + assertNull(converter.convert("''")); + assertNull(converter.convert("' '")); + assertNull(converter.convert("'random string'")); + + assertEquals(Duration.getDefaultInstance(), converter.convert("default")); + assertEquals(Duration.getDefaultInstance(), converter.convert("DEFAULT")); + assertEquals(Duration.getDefaultInstance(), converter.convert("Default")); + assertNull(converter.convert("'default'")); + assertNull(converter.convert("'DEFAULT'")); + assertNull(converter.convert("'Default'")); + } +} diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgTransactionModeConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgTransactionModeConverterTest.java new file mode 100644 index 00000000000..c8a2a97e709 --- /dev/null +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgTransactionModeConverterTest.java @@ -0,0 +1,103 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.spanner.connection; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; +import com.google.cloud.spanner.connection.ClientSideStatementValueConverters.PgTransactionModeConverter; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class PgTransactionModeConverterTest { + @Test + public void testConvert() throws CompileException { + String allowedValues = + ReadOnlyStalenessConverterTest.getAllowedValues( + PgTransactionModeConverter.class, Dialect.POSTGRESQL); + + assertNotNull(allowedValues); + PgTransactionModeConverter converter = new PgTransactionModeConverter(allowedValues); + + assertEquals(PgTransactionMode.READ_WRITE_TRANSACTION, converter.convert("read write")); + assertEquals(PgTransactionMode.READ_WRITE_TRANSACTION, converter.convert("READ WRITE")); + assertEquals(PgTransactionMode.READ_WRITE_TRANSACTION, converter.convert("Read Write")); + assertEquals(PgTransactionMode.READ_WRITE_TRANSACTION, converter.convert("read write")); + assertEquals(PgTransactionMode.READ_WRITE_TRANSACTION, converter.convert("READ\nWRITE")); + assertEquals(PgTransactionMode.READ_WRITE_TRANSACTION, converter.convert("Read\tWrite")); + + assertEquals(PgTransactionMode.READ_ONLY_TRANSACTION, converter.convert("read only")); + assertEquals(PgTransactionMode.READ_ONLY_TRANSACTION, converter.convert("READ ONLY")); + assertEquals(PgTransactionMode.READ_ONLY_TRANSACTION, converter.convert("Read Only")); + assertEquals(PgTransactionMode.READ_ONLY_TRANSACTION, converter.convert("read only")); + assertEquals(PgTransactionMode.READ_ONLY_TRANSACTION, converter.convert("READ\nONLY")); + assertEquals(PgTransactionMode.READ_ONLY_TRANSACTION, converter.convert("Read\tOnly")); + + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_DEFAULT, converter.convert("isolation level default")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_DEFAULT, converter.convert("ISOLATION LEVEL DEFAULT")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_DEFAULT, converter.convert("Isolation Level Default")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_DEFAULT, + converter.convert("isolation level default")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_DEFAULT, converter.convert("ISOLATION\nLEVEL\nDEFAULT")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_DEFAULT, converter.convert("Isolation\tLevel\tDefault")); + + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_SERIALIZABLE, + converter.convert("isolation level serializable")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_SERIALIZABLE, + converter.convert("ISOLATION LEVEL SERIALIZABLE")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_SERIALIZABLE, + converter.convert("Isolation Level Serializable")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_SERIALIZABLE, + converter.convert("isolation level serializable")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_SERIALIZABLE, + converter.convert("ISOLATION\nLEVEL\nSERIALIZABLE")); + assertEquals( + PgTransactionMode.ISOLATION_LEVEL_SERIALIZABLE, + converter.convert("Isolation\tLevel\tSerializable")); + + assertNull(converter.convert("")); + assertNull(converter.convert(" ")); + assertNull(converter.convert("random string")); + assertNull(converter.convert("read_write")); + assertNull(converter.convert("READ_WRITE")); + assertNull(converter.convert("read_only")); + assertNull(converter.convert("Read_Only")); + assertNull(converter.convert("READ_ONLY")); + + assertNull(converter.convert("isolation_level default")); + assertNull(converter.convert("isolationlevel default")); + assertNull(converter.convert("isolation level read committed")); + assertNull(converter.convert("isolation level ")); + assertNull(converter.convert("isolation level_default")); + } +} diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ReadOnlyStalenessConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ReadOnlyStalenessConverterTest.java index 419226155f4..5c62765466d 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ReadOnlyStalenessConverterTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ReadOnlyStalenessConverterTest.java @@ -23,6 +23,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import com.google.cloud.Timestamp; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.TimestampBound; import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.cloud.spanner.connection.ClientSideStatementValueConverters.ReadOnlyStalenessConverter; @@ -30,15 +31,24 @@ import java.util.concurrent.TimeUnit; import org.junit.Test; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; -@RunWith(JUnit4.class) +@RunWith(Parameterized.class) public class ReadOnlyStalenessConverterTest { + @Parameter public Dialect dialect; + + @Parameters(name = "dialect = {0}") + public static Object[] data() { + return Dialect.values(); + } static String getAllowedValues( - Class> converterClass) + Class> converterClass, Dialect dialect) throws CompileException { - Set statements = ClientSideStatements.INSTANCE.getCompiledStatements(); + Set statements = + ClientSideStatements.getInstance(dialect).getCompiledStatements(); for (ClientSideStatementImpl statement : statements) { if (statement.getSetStatement() != null && converterClass.getName().endsWith(statement.getSetStatement().getConverterName())) { @@ -50,7 +60,7 @@ static String getAllowedValues( @Test public void testConvert() throws CompileException { - String allowedValues = getAllowedValues(ReadOnlyStalenessConverter.class); + String allowedValues = getAllowedValues(ReadOnlyStalenessConverter.class, dialect); assertThat(allowedValues, is(notNullValue())); ReadOnlyStalenessConverter converter = new ReadOnlyStalenessConverter(allowedValues); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetPgSessionCharacteristicsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetPgSessionCharacteristicsTest.java new file mode 100644 index 00000000000..019aa745df5 --- /dev/null +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetPgSessionCharacteristicsTest.java @@ -0,0 +1,91 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.spanner.connection; + +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.Statement; +import com.google.cloud.spanner.connection.AbstractStatementParser.ParsedStatement; +import com.google.cloud.spanner.connection.AbstractStatementParser.StatementType; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class SetPgSessionCharacteristicsTest { + private final AbstractStatementParser parser = + AbstractStatementParser.getInstance(Dialect.POSTGRESQL); + + @Test + public void testSetIsolationLevelDefault() { + ConnectionImpl connection = mock(ConnectionImpl.class); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); + + String sql = "set session characteristics as transaction isolation level default"; + ParsedStatement statement = parser.parse(Statement.of(sql)); + assertEquals(sql, StatementType.CLIENT_SIDE, statement.getType()); + statement.getClientSideStatement().execute(executor, sql); + + verify(connection, never()).setReadOnly(anyBoolean()); + } + + @Test + public void testSetIsolationLevelSerializable() { + ConnectionImpl connection = mock(ConnectionImpl.class); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); + + String sql = "set session characteristics as transaction isolation level serializable"; + ParsedStatement statement = parser.parse(Statement.of(sql)); + assertEquals(sql, StatementType.CLIENT_SIDE, statement.getType()); + statement.getClientSideStatement().execute(executor, sql); + + verify(connection, never()).setReadOnly(anyBoolean()); + } + + @Test + public void testSetIsolationLevelReadOnly() { + ConnectionImpl connection = mock(ConnectionImpl.class); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); + + String sql = "set\tsession\ncharacteristics as transaction read only"; + ParsedStatement statement = parser.parse(Statement.of(sql)); + assertEquals(sql, StatementType.CLIENT_SIDE, statement.getType()); + statement.getClientSideStatement().execute(executor, sql); + + verify(connection).setReadOnly(true); + verify(connection, never()).setReadOnly(false); + } + + @Test + public void testSetIsolationLevelReadWrite() { + ConnectionImpl connection = mock(ConnectionImpl.class); + ConnectionStatementExecutorImpl executor = new ConnectionStatementExecutorImpl(connection); + + String sql = "set session characteristics as transaction read write"; + ParsedStatement statement = parser.parse(Statement.of(sql)); + assertEquals(sql, StatementType.CLIENT_SIDE, statement.getType()); + statement.getClientSideStatement().execute(executor, sql); + + verify(connection).setReadOnly(false); + verify(connection, never()).setReadOnly(true); + } +} diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetReadOnlyStalenessSqlScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetReadOnlyStalenessSqlScriptTest.java index ce3f5b99d48..ec0f225bf9c 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetReadOnlyStalenessSqlScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetReadOnlyStalenessSqlScriptTest.java @@ -19,10 +19,19 @@ import org.junit.Test; public class SetReadOnlyStalenessSqlScriptTest extends AbstractSqlScriptTest { + private String getFileName() { + switch (dialect) { + case POSTGRESQL: + return "postgresql/SetReadOnlyStalenessTest.sql"; + case GOOGLE_STANDARD_SQL: + default: + return "SetReadOnlyStalenessTest.sql"; + } + } @Test public void testSetReadOnlyStalenessScript() throws Exception { SqlScriptVerifier verifier = new SqlScriptVerifier(new TestConnectionProvider(dialect)); - verifier.verifyStatementsInFile("SetReadOnlyStalenessTest.sql", getClass(), true); + verifier.verifyStatementsInFile(getFileName(), getClass(), true); } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetStatementTimeoutSqlScriptTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetStatementTimeoutSqlScriptTest.java index 5ec209dac3f..1a55618787d 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetStatementTimeoutSqlScriptTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SetStatementTimeoutSqlScriptTest.java @@ -16,13 +16,24 @@ package com.google.cloud.spanner.connection; +import com.google.cloud.spanner.Dialect; import org.junit.Test; public class SetStatementTimeoutSqlScriptTest extends AbstractSqlScriptTest { + private String getFile(Dialect dialect) { + switch (dialect) { + case POSTGRESQL: + return "postgresql/SetStatementTimeoutTest.sql"; + case GOOGLE_STANDARD_SQL: + default: + return "SetStatementTimeoutTest.sql"; + } + } + @Test public void testSetStatementTimeoutScript() throws Exception { SqlScriptVerifier verifier = new SqlScriptVerifier(new TestConnectionProvider(dialect)); - verifier.verifyStatementsInFile("SetStatementTimeoutTest.sql", getClass(), true); + verifier.verifyStatementsInFile(getFile(dialect), getClass(), true); } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SqlTestScriptsGenerator.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SqlTestScriptsGenerator.java index b06968b9cdc..654ffb9dc15 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SqlTestScriptsGenerator.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SqlTestScriptsGenerator.java @@ -16,12 +16,24 @@ package com.google.cloud.spanner.connection; -/** Class that runs all generators of SQL test scripts for the Connection API */ +import com.google.cloud.spanner.Dialect; + +/** + * Class that runs all generators of SQL test scripts for the Connection API. + * + *

Run this generator if new client side statements have been added, or if any existing client + * side statements have been modified. The generator can be executed from the command line in the + * google-cloud-spanner directory like this: + * mvn -Ddo_log_statements=true exec:java -Dexec.mainClass=com.google.cloud.spanner.connection.SqlTestScriptsGenerator -Dexec.classpathScope="test" + * + */ public class SqlTestScriptsGenerator { /** Main method for generating the test script */ public static void main(String[] args) throws Exception { - ClientSideStatementsTest.generateTestScript(); + for (Dialect dialect : Dialect.values()) { + ClientSideStatementsTest.generateTestScript(dialect); + } ConnectionImplGeneratedSqlScriptTest.generateTestScript(); } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/StatementParserTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/StatementParserTest.java index 96d4b7e3aef..65b769b9d60 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/StatementParserTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/StatementParserTest.java @@ -90,7 +90,7 @@ public void setupParser() { Dialect.GOOGLE_STANDARD_SQL, "CommentsTest.sql", Dialect.POSTGRESQL, - "PostgreSQLCommentsTest.sql"); + "postgresql/CommentsTest.sql"); @Test public void testRemoveCommentsInScript() { @@ -350,11 +350,19 @@ public void testShowStatements() { .isEqualTo(StatementType.QUERY); assertThat(parser.parse(Statement.of("show variable autocommit")).getType()) .isEqualTo(StatementType.CLIENT_SIDE); - assertThat(parser.parse(Statement.of("show autocommit")).getType()) - .isEqualTo(StatementType.QUERY); + if (dialect == Dialect.POSTGRESQL) { + assertThat(parser.parse(Statement.of("show autocommit")).getType()) + .isEqualTo(StatementType.CLIENT_SIDE); + assertThat( + parser.parse(Statement.of("show variable spanner.retry_aborts_internally")).getType()) + .isEqualTo(StatementType.CLIENT_SIDE); + } else { + assertThat(parser.parse(Statement.of("show autocommit")).getType()) + .isEqualTo(StatementType.QUERY); + assertThat(parser.parse(Statement.of("show variable retry_aborts_internally")).getType()) + .isEqualTo(StatementType.CLIENT_SIDE); + } - assertThat(parser.parse(Statement.of("show variable retry_aborts_internally")).getType()) - .isEqualTo(StatementType.CLIENT_SIDE); assertThat(parser.parse(Statement.of("show variable retry_aborts_internally bar")).getType()) .isEqualTo(StatementType.QUERY); } @@ -903,7 +911,7 @@ public void testParseStatementsWithOneParameterAtTheEnd() throws CompileExceptio } private Set getAllStatements() throws CompileException { - return ClientSideStatements.INSTANCE.getCompiledStatements(); + return ClientSideStatements.getInstance(dialect).getCompiledStatements(); } private void assertParsing( diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/TransactionModeConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/TransactionModeConverterTest.java index a646425b124..f19b4b2eea1 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/TransactionModeConverterTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/TransactionModeConverterTest.java @@ -22,6 +22,7 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; +import com.google.cloud.spanner.Dialect; import com.google.cloud.spanner.connection.ClientSideStatementImpl.CompileException; import com.google.cloud.spanner.connection.ClientSideStatementValueConverters.TransactionModeConverter; import org.junit.Test; @@ -34,7 +35,8 @@ public class TransactionModeConverterTest { @Test public void testConvert() throws CompileException { String allowedValues = - ReadOnlyStalenessConverterTest.getAllowedValues(TransactionModeConverter.class); + ReadOnlyStalenessConverterTest.getAllowedValues( + TransactionModeConverter.class, Dialect.GOOGLE_STANDARD_SQL); assertThat(allowedValues, is(notNullValue())); TransactionModeConverter converter = new TransactionModeConverter(allowedValues); assertThat( diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql index d1eabfeaec3..be5a1671ae0 100644 --- a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql +++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql @@ -162,15 +162,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SET READ_ONLY_STALENESS='MAX_STALENESS 10s'; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:09.176000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:09.176000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:27.061000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:27.061000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SET READ_ONLY_STALENESS='MAX_STALENESS 10s'; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:09.176000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:09.176000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:27.061000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:27.061000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -577,8 +577,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:09.407000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:09.407000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:27.474000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:27.474000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -586,8 +586,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:09.407000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:09.407000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:27.474000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:27.474000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -970,15 +970,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:09.583000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:09.583000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:27.868000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:27.868000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:09.583000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:27.868000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; @@ -1316,15 +1316,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:09.731000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:09.731000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:28.152000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:28.152000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:09.731000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:09.731000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:28.152000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:28.152000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -1671,15 +1671,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:09.897000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:09.897000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:28.470000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:28.470000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:09.897000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:09.897000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:28.470000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:28.470000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -1996,14 +1996,14 @@ SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:10.078000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:10.078000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:28.774000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:28.774000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:10.078000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:10.078000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:28.774000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:28.774000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -2164,199 +2164,210 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; -NEW_CONNECTION; -SET READONLY=FALSE; +COMMIT; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; ROLLBACK; NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READONLY=FALSE; +@EXPECT RESULT_SET 'READONLY',FALSE +SHOW VARIABLE READONLY; +SET READONLY=TRUE; +@EXPECT RESULT_SET 'READONLY',TRUE +SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SET READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:10.239000000Z'; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:29.031000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:29.031000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:10.239000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:29.031000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -2370,35 +2381,35 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -2406,9 +2417,9 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2450,285 +2461,263 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -START BATCH DDL; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; -NEW_CONNECTION; -SET READONLY=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; ROLLBACK; NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READONLY=FALSE; +@EXPECT RESULT_SET 'READONLY',FALSE +SHOW VARIABLE READONLY; +SET READONLY=TRUE; +@EXPECT RESULT_SET 'READONLY',TRUE +SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:10.386000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:10.386000000Z' +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:29.261000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:29.261000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:10.386000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:29.261000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -2742,42 +2731,35 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -2785,10 +2767,9 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2830,89 +2811,90 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SET TRANSACTION READ ONLY; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'AUTOCOMMIT',FALSE SHOW VARIABLE AUTOCOMMIT; @@ -2920,188 +2902,196 @@ SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'AUTOCOMMIT',TRUE SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -@EXPECT UPDATE_COUNT 1 +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -UPDATE foo SET bar=1; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -START BATCH DML; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -UPDATE foo SET bar=1; +ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION -ROLLBACK; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET READONLY=FALSE; @EXPECT RESULT_SET 'READONLY',FALSE SHOW VARIABLE READONLY; @@ -3109,79 +3099,86 @@ SET READONLY=TRUE; @EXPECT RESULT_SET 'READONLY',TRUE SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:10.614000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:10.614000000Z' +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:29.514000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:29.514000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:10.614000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:10.614000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:29.514000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -@EXPECT RESULT_SET 'COMMIT_TIMESTAMP' +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -3195,49 +3192,56 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -@EXPECT RESULT_SET 'COMMIT_TIMESTAMP' +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -3245,11 +3249,12 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3291,277 +3296,401 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; BEGIN TRANSACTION; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -UPDATE foo SET bar=1; -COMMIT; -NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET AUTOCOMMIT=FALSE; -NEW_CONNECTION; -SET READONLY=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -@EXPECT UPDATE_COUNT 1 +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'READ_TIMESTAMP',null +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'READ_TIMESTAMP' SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -START BATCH DML; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -UPDATE foo SET bar=1; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET READONLY=FALSE; +@EXPECT RESULT_SET 'READONLY',FALSE +SHOW VARIABLE READONLY; +SET READONLY=TRUE; +@EXPECT RESULT_SET 'READONLY',TRUE +SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:10.809000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:10.809000000Z' +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:29.790000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:29.790000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:10.809000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:29.790000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -3575,35 +3704,56 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -3611,9 +3761,12 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3655,274 +3808,282 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; -@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE -SHOW VARIABLE AUTOCOMMIT; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE -SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -@EXPECT UPDATE_COUNT 1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -UPDATE foo SET bar=1; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -START BATCH DML; -@EXPECT EXCEPTION FAILED_PRECONDITION -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -SET READONLY=FALSE; -@EXPECT RESULT_SET 'READONLY',FALSE -SHOW VARIABLE READONLY; SET READONLY=TRUE; -@EXPECT RESULT_SET 'READONLY',TRUE -SHOW VARIABLE READONLY; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:10.941000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:10.941000000Z' +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.050000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:30.050000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:10.941000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:10.941000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.050000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -3936,35 +4097,35 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -3972,9 +4133,9 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4016,281 +4177,283 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -SELECT 1 AS TEST; -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; -@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE -SHOW VARIABLE AUTOCOMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE -SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -@EXPECT UPDATE_COUNT 1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -@EXPECT RESULT_SET 'READ_TIMESTAMP',null +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'READ_TIMESTAMP' SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -UPDATE foo SET bar=1; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -@EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -START BATCH DML; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -SET READONLY=FALSE; -@EXPECT RESULT_SET 'READONLY',FALSE -SHOW VARIABLE READONLY; SET READONLY=TRUE; -@EXPECT RESULT_SET 'READONLY',TRUE -SHOW VARIABLE READONLY; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='STRONG'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:11.120000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:11.120000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.238000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:11.120000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:11.120000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.238000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -@EXPECT RESULT_SET 'COMMIT_TIMESTAMP' +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -4304,35 +4467,42 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -@EXPECT RESULT_SET 'COMMIT_TIMESTAMP' +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -4340,9 +4510,10 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4384,317 +4555,254 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -BEGIN TRANSACTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -UPDATE foo SET bar=1; -NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; +SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; -@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE -SHOW VARIABLE AUTOCOMMIT; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE -SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; -@EXPECT UPDATE_COUNT 1 +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; -SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; -NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +NEW_CONNECTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'READ_TIMESTAMP' SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -UPDATE foo SET bar=1; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -@EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -START BATCH DML; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; -SET READONLY=FALSE; -@EXPECT RESULT_SET 'READONLY',FALSE -SHOW VARIABLE READONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READONLY=TRUE; -@EXPECT RESULT_SET 'READONLY',TRUE -SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='STRONG'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:11.271000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:11.271000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.477000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:11.271000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:11.271000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.477000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' @@ -4709,41 +4817,34 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' @@ -4752,9 +4853,8 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' @@ -4797,87 +4897,68 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -BEGIN TRANSACTION; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'AUTOCOMMIT',FALSE SHOW VARIABLE AUTOCOMMIT; @@ -4885,140 +4966,100 @@ SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'AUTOCOMMIT',TRUE SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -@EXPECT UPDATE_COUNT 1 +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -@EXPECT RESULT_SET 'READ_TIMESTAMP' +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -START BATCH DDL; -@EXPECT EXCEPTION FAILED_PRECONDITION -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -UPDATE foo SET bar=1; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -START BATCH DML; -@EXPECT EXCEPTION FAILED_PRECONDITION -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -UPDATE foo SET bar=1; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; ROLLBACK; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET READONLY=FALSE; @EXPECT RESULT_SET 'READONLY',FALSE SHOW VARIABLE READONLY; @@ -5026,61 +5067,50 @@ SET READONLY=TRUE; @EXPECT RESULT_SET 'READONLY',TRUE SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:11.432000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:11.432000000Z' +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.698000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:30.698000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:11.432000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:11.432000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.698000000Z'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -5094,35 +5124,28 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -5130,9 +5153,8 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5174,159 +5196,167 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; COMMIT; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=FALSE; -SET AUTOCOMMIT=TRUE; -SELECT 1 AS TEST; +SET READONLY=TRUE; +SET AUTOCOMMIT=FALSE; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; ABORT BATCH; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT=FALSE; -@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE -SHOW VARIABLE AUTOCOMMIT; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE -SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SELECT 1 AS TEST; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -@EXPECT UPDATE_COUNT 1 +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' -SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'TEST',1 +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SELECT 1 AS TEST; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; @@ -5334,84 +5364,75 @@ SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -UPDATE foo SET bar=1; -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -@EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -START BATCH DML; -@EXPECT EXCEPTION FAILED_PRECONDITION -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -UPDATE foo SET bar=1; +START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION ROLLBACK; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READONLY=FALSE; -@EXPECT RESULT_SET 'READONLY',FALSE -SHOW VARIABLE READONLY; -SET READONLY=TRUE; -@EXPECT RESULT_SET 'READONLY',TRUE -SHOW VARIABLE READONLY; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='STRONG'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:11.577000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:11.577000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.897000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:11.577000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-02-08T09:47:11.577000000Z' -SHOW VARIABLE READ_ONLY_STALENESS; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.897000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' -SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -5427,26 +5448,33 @@ SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -5456,6 +5484,7 @@ SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5499,252 +5528,283 @@ SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS' +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION COMMIT; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; RUN BATCH; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -BEGIN TRANSACTION; -SELECT 1 AS TEST; -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; +START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; -SET AUTOCOMMIT=FALSE; -@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE -SHOW VARIABLE AUTOCOMMIT; +SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE -SHOW VARIABLE AUTOCOMMIT; -NEW_CONNECTION; -SET READONLY=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT=FALSE; -COMMIT; +NEW_CONNECTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; SET READONLY=FALSE; -@EXPECT RESULT_SET 'READONLY',FALSE -SHOW VARIABLE READONLY; -SET READONLY=TRUE; -@EXPECT RESULT_SET 'READONLY',TRUE -SHOW VARIABLE READONLY; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:11.702000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:11.702000000Z' +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:31.065000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:31.065000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:11.702000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:31.065000000Z'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -5758,35 +5818,42 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -5794,9 +5861,10 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5838,78 +5906,89 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'AUTOCOMMIT',FALSE SHOW VARIABLE AUTOCOMMIT; @@ -5917,124 +5996,188 @@ SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'AUTOCOMMIT',TRUE SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT UPDATE_COUNT 1 UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET READONLY=FALSE; @EXPECT RESULT_SET 'READONLY',FALSE SHOW VARIABLE READONLY; @@ -6042,59 +6185,79 @@ SET READONLY=TRUE; @EXPECT RESULT_SET 'READONLY',TRUE SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:11.804000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:11.804000000Z' +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:31.341000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:31.341000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:11.804000000Z'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:31.341000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:31.341000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'COMMIT_TIMESTAMP' SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -6108,35 +6271,49 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'COMMIT_TIMESTAMP' SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -6144,9 +6321,11 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6188,374 +6367,277 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; BEGIN TRANSACTION; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT=FALSE; -@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE -SHOW VARIABLE AUTOCOMMIT; -SET AUTOCOMMIT=TRUE; -@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE -SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; -@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT UPDATE_COUNT 1 UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -ROLLBACK; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; -@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION SELECT 1 AS TEST; -ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION SET READONLY=FALSE; -@EXPECT RESULT_SET 'READONLY',FALSE -SHOW VARIABLE READONLY; -SET READONLY=TRUE; -@EXPECT RESULT_SET 'READONLY',TRUE -SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:11.962000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:11.962000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:31.608000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:31.608000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:11.962000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:31.608000000Z'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -6569,56 +6651,35 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; -NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -6626,12 +6687,9 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6673,117 +6731,71 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; -@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -UPDATE foo SET bar=1; -@EXPECT EXCEPTION FAILED_PRECONDITION -CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'AUTOCOMMIT',FALSE SHOW VARIABLE AUTOCOMMIT; @@ -6791,196 +6803,140 @@ SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'AUTOCOMMIT',TRUE SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT UPDATE_COUNT 1 UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -@EXPECT RESULT_SET 'READ_TIMESTAMP' +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION SELECT 1 AS TEST; -COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION SELECT 1 AS TEST; -COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET READONLY=FALSE; @EXPECT RESULT_SET 'READONLY',FALSE SHOW VARIABLE READONLY; @@ -6988,86 +6944,61 @@ SET READONLY=TRUE; @EXPECT RESULT_SET 'READONLY',TRUE SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:12.213000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:12.213000000Z' +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:31.834000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:31.834000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:12.213000000Z'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:31.834000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:31.834000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -7081,56 +7012,35 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; -NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -7138,12 +7048,9 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7185,282 +7092,281 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); BEGIN TRANSACTION; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'TEST',1 -SELECT 1 AS TEST; -COMMIT; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=TRUE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT UPDATE_COUNT 1 UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION ROLLBACK; NEW_CONNECTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET READONLY=FALSE; +@EXPECT RESULT_SET 'READONLY',FALSE +SHOW VARIABLE READONLY; SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READONLY=TRUE; +@EXPECT RESULT_SET 'READONLY',TRUE +SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:12.372000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:12.372000000Z' +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:32.161000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:32.161000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:12.372000000Z'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:32.161000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:32.161000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'COMMIT_TIMESTAMP' SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -7474,35 +7380,35 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; -@EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'COMMIT_TIMESTAMP' SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -7510,9 +7416,9 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7554,281 +7460,316 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -BEGIN TRANSACTION; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT UPDATE_COUNT 1 UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT RESULT_SET 'READ_TIMESTAMP' SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +@EXPECT RESULT_SET 'READONLY',FALSE +SHOW VARIABLE READONLY; SET READONLY=TRUE; +@EXPECT RESULT_SET 'READONLY',TRUE +SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:12.493000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:32.402000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:32.402000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:12.493000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:32.402000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:32.402000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; SET OPTIMIZER_VERSION='1'; @@ -7844,40 +7785,40 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @@ -7887,8 +7828,8 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; SET STATEMENT_TIMEOUT='1s'; @@ -7932,254 +7873,289 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +@EXPECT UPDATE_COUNT 1 UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'READ_TIMESTAMP' SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +@EXPECT RESULT_SET 'READONLY',FALSE +SHOW VARIABLE READONLY; SET READONLY=TRUE; +@EXPECT RESULT_SET 'READONLY',TRUE +SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:12.629000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:32.626000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:32.626000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:12.629000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:32.626000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:32.626000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' @@ -8194,34 +8170,34 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' @@ -8230,8 +8206,8 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' @@ -8274,68 +8250,74 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'OPTIMIZER_VERSION' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT EXCEPTION FAILED_PRECONDITION ABORT BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'AUTOCOMMIT',FALSE SHOW VARIABLE AUTOCOMMIT; @@ -8343,100 +8325,116 @@ SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'AUTOCOMMIT',TRUE SHOW VARIABLE AUTOCOMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT UPDATE_COUNT 1 UPDATE foo SET bar=1; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; SET AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'AUTOCOMMIT_DML_MODE' SHOW VARIABLE AUTOCOMMIT_DML_MODE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ ONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION READ WRITE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'READ_TIMESTAMP',null SHOW VARIABLE READ_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DDL; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION START BATCH DML; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION ROLLBACK; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET READONLY=FALSE; @EXPECT RESULT_SET 'READONLY',FALSE SHOW VARIABLE READONLY; @@ -8444,50 +8442,52 @@ SET READONLY=TRUE; @EXPECT RESULT_SET 'READONLY',TRUE SHOW VARIABLE READONLY; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET READ_ONLY_STALENESS='STRONG'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','STRONG' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:12.745000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:12.745000000Z' +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:32.905000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:32.905000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -@EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:12.745000000Z'; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:32.905000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:32.905000000Z' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET READ_ONLY_STALENESS='EXACT_STALENESS 1s'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 1s' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; -@EXPECT EXCEPTION FAILED_PRECONDITION +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET READ_ONLY_STALENESS='EXACT_STALENESS 100us'; @EXPECT RESULT_SET 'READ_ONLY_STALENESS','EXACT_STALENESS 100us' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_RESPONSE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET OPTIMIZER_VERSION='1'; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','1' SHOW VARIABLE OPTIMIZER_VERSION; @@ -8501,28 +8501,28 @@ SET OPTIMIZER_VERSION=''; @EXPECT RESULT_SET 'OPTIMIZER_VERSION','' SHOW VARIABLE OPTIMIZER_VERSION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'COMMIT_TIMESTAMP',null SHOW VARIABLE COMMIT_TIMESTAMP; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET OPTIMIZER_STATISTICS_PACKAGE='custom-package'; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','custom-package' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; @@ -8530,8 +8530,8 @@ SET OPTIMIZER_STATISTICS_PACKAGE=''; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE','' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; SET STATEMENT_TIMEOUT='1s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8573,49 +8573,49 @@ SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'READ_ONLY_STALENESS' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION COMMIT; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'OPTIMIZER_STATISTICS_PACKAGE' SHOW VARIABLE OPTIMIZER_STATISTICS_PACKAGE; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT EXCEPTION FAILED_PRECONDITION RUN BATCH; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; @EXPECT EXCEPTION FAILED_PRECONDITION SET TRANSACTION_TAG = 'some-tag'; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SELECT 1 AS TEST; -@EXPECT EXCEPTION FAILED_PRECONDITION UPDATE foo SET bar=1; @EXPECT EXCEPTION FAILED_PRECONDITION CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION BEGIN TRANSACTION; NEW_CONNECTION; -SET READONLY=TRUE; -SET AUTOCOMMIT=FALSE; +SET READONLY=FALSE; +SET AUTOCOMMIT=TRUE; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -8788,15 +8788,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:12.848000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:12.848000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.118000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:33.118000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:12.848000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.118000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -9206,8 +9206,8 @@ SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); RUN BATCH; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:12.981000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:12.981000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.313000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:33.313000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -9216,7 +9216,7 @@ START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); RUN BATCH; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:12.981000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.313000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -9625,14 +9625,14 @@ SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:13.109000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.570000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:13.109000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.570000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -9982,13 +9982,13 @@ SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:13.229000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.779000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:13.229000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.779000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -10422,8 +10422,8 @@ SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:13.350000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:13.350000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.015000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.015000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -10433,7 +10433,7 @@ SET TRANSACTION READ ONLY; SELECT 1 AS TEST; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:13.350000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.015000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -10833,15 +10833,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET TRANSACTION READ ONLY; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:13.472000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:13.472000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.249000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.249000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:13.472000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.249000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -11187,15 +11187,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:13.568000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:13.568000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.423000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.423000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:13.568000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.423000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -11635,8 +11635,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; ROLLBACK; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:13.700000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:13.700000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.634000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.634000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -11646,7 +11646,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:13.700000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.634000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -12155,8 +12155,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:13.931000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:13.931000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.943000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.943000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -12166,7 +12166,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:13.931000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.943000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -12571,15 +12571,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:14.114000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:14.114000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.194000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:35.194000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:14.114000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.194000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -12942,14 +12942,14 @@ SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:14.244000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.388000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:14.244000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.388000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -13304,13 +13304,13 @@ SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:14.384000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.635000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:14.384000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.635000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -13624,14 +13624,14 @@ SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-02-08T09:47:14.507000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-02-08T09:47:14.507000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.872000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:35.872000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-02-08T09:47:14.507000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.872000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ClientSideStatementsTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ClientSideStatementsTest.sql new file mode 100644 index 00000000000..2d07102d907 --- /dev/null +++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ClientSideStatementsTest.sql @@ -0,0 +1,38459 @@ +NEW_CONNECTION; +show autocommit; +NEW_CONNECTION; +SHOW AUTOCOMMIT; +NEW_CONNECTION; +show autocommit; +NEW_CONNECTION; + show autocommit; +NEW_CONNECTION; + show autocommit; +NEW_CONNECTION; + + + +show autocommit; +NEW_CONNECTION; +show autocommit ; +NEW_CONNECTION; +show autocommit ; +NEW_CONNECTION; +show autocommit + +; +NEW_CONNECTION; +show autocommit; +NEW_CONNECTION; +show autocommit; +NEW_CONNECTION; +show +autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show autocommit/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-autocommit; +NEW_CONNECTION; +show variable autocommit; +NEW_CONNECTION; +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +show variable autocommit; +NEW_CONNECTION; + show variable autocommit; +NEW_CONNECTION; + show variable autocommit; +NEW_CONNECTION; + + + +show variable autocommit; +NEW_CONNECTION; +show variable autocommit ; +NEW_CONNECTION; +show variable autocommit ; +NEW_CONNECTION; +show variable autocommit + +; +NEW_CONNECTION; +show variable autocommit; +NEW_CONNECTION; +show variable autocommit; +NEW_CONNECTION; +show +variable +autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable autocommit; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable autocommit/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-autocommit; +NEW_CONNECTION; +show spanner.readonly; +NEW_CONNECTION; +SHOW SPANNER.READONLY; +NEW_CONNECTION; +show spanner.readonly; +NEW_CONNECTION; + show spanner.readonly; +NEW_CONNECTION; + show spanner.readonly; +NEW_CONNECTION; + + + +show spanner.readonly; +NEW_CONNECTION; +show spanner.readonly ; +NEW_CONNECTION; +show spanner.readonly ; +NEW_CONNECTION; +show spanner.readonly + +; +NEW_CONNECTION; +show spanner.readonly; +NEW_CONNECTION; +show spanner.readonly; +NEW_CONNECTION; +show +spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.readonly/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.readonly; +NEW_CONNECTION; +show variable spanner.readonly; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +show variable spanner.readonly; +NEW_CONNECTION; + show variable spanner.readonly; +NEW_CONNECTION; + show variable spanner.readonly; +NEW_CONNECTION; + + + +show variable spanner.readonly; +NEW_CONNECTION; +show variable spanner.readonly ; +NEW_CONNECTION; +show variable spanner.readonly ; +NEW_CONNECTION; +show variable spanner.readonly + +; +NEW_CONNECTION; +show variable spanner.readonly; +NEW_CONNECTION; +show variable spanner.readonly; +NEW_CONNECTION; +show +variable +spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.readonly; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.readonly/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.readonly; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +SHOW SPANNER.RETRY_ABORTS_INTERNALLY; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; + show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; + show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; + + + +show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show spanner.retry_aborts_internally ; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show spanner.retry_aborts_internally ; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show spanner.retry_aborts_internally + +; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show +spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally bar; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally%; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally_; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally&; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally$; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally@; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally!; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally*; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally(; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally); +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally-; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally+; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally-#; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally/; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally\; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally?; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally-/; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally/#; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.retry_aborts_internally/-; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +SHOW VARIABLE SPANNER.RETRY_ABORTS_INTERNALLY; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; + show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; + show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; + + + +show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show variable spanner.retry_aborts_internally ; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show variable spanner.retry_aborts_internally ; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show variable spanner.retry_aborts_internally + +; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +show +variable +spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally bar; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally%; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally_; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally&; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally$; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally@; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally!; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally*; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally(; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally); +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally-; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally+; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally-#; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally/; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally\; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally?; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally-/; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally/#; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.retry_aborts_internally; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.retry_aborts_internally/-; +NEW_CONNECTION; +set spanner.readonly=false; +set autocommit=false; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.retry_aborts_internally; +NEW_CONNECTION; +show spanner.autocommit_dml_mode; +NEW_CONNECTION; +SHOW SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +show spanner.autocommit_dml_mode; +NEW_CONNECTION; + show spanner.autocommit_dml_mode; +NEW_CONNECTION; + show spanner.autocommit_dml_mode; +NEW_CONNECTION; + + + +show spanner.autocommit_dml_mode; +NEW_CONNECTION; +show spanner.autocommit_dml_mode ; +NEW_CONNECTION; +show spanner.autocommit_dml_mode ; +NEW_CONNECTION; +show spanner.autocommit_dml_mode + +; +NEW_CONNECTION; +show spanner.autocommit_dml_mode; +NEW_CONNECTION; +show spanner.autocommit_dml_mode; +NEW_CONNECTION; +show +spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.autocommit_dml_mode/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.autocommit_dml_mode; +NEW_CONNECTION; +show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; + show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; + show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; + + + +show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +show variable spanner.autocommit_dml_mode ; +NEW_CONNECTION; +show variable spanner.autocommit_dml_mode ; +NEW_CONNECTION; +show variable spanner.autocommit_dml_mode + +; +NEW_CONNECTION; +show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +show +variable +spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.autocommit_dml_mode; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.autocommit_dml_mode/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.autocommit_dml_mode; +NEW_CONNECTION; +show statement_timeout; +NEW_CONNECTION; +SHOW STATEMENT_TIMEOUT; +NEW_CONNECTION; +show statement_timeout; +NEW_CONNECTION; + show statement_timeout; +NEW_CONNECTION; + show statement_timeout; +NEW_CONNECTION; + + + +show statement_timeout; +NEW_CONNECTION; +show statement_timeout ; +NEW_CONNECTION; +show statement_timeout ; +NEW_CONNECTION; +show statement_timeout + +; +NEW_CONNECTION; +show statement_timeout; +NEW_CONNECTION; +show statement_timeout; +NEW_CONNECTION; +show +statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show statement_timeout/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-statement_timeout; +NEW_CONNECTION; +show variable statement_timeout; +NEW_CONNECTION; +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +show variable statement_timeout; +NEW_CONNECTION; + show variable statement_timeout; +NEW_CONNECTION; + show variable statement_timeout; +NEW_CONNECTION; + + + +show variable statement_timeout; +NEW_CONNECTION; +show variable statement_timeout ; +NEW_CONNECTION; +show variable statement_timeout ; +NEW_CONNECTION; +show variable statement_timeout + +; +NEW_CONNECTION; +show variable statement_timeout; +NEW_CONNECTION; +show variable statement_timeout; +NEW_CONNECTION; +show +variable +statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable statement_timeout; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable statement_timeout/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-statement_timeout; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +SHOW SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; + show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; + show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; + + + +show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show spanner.read_timestamp ; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show spanner.read_timestamp ; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show spanner.read_timestamp + +; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show +spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp bar; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp%; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp_; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp&; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp$; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp@; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp!; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp*; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp(; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp); +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp-; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp+; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp-#; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp/; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp\; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp?; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp-/; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp/#; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_timestamp/-; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; + show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; + show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; + + + +show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show variable spanner.read_timestamp ; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show variable spanner.read_timestamp ; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show variable spanner.read_timestamp + +; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +show +variable +spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp bar; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp%; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp_; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp&; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp$; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp@; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp!; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp*; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp(; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp); +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp-; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp+; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp-#; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp/; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp\; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp?; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp-/; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp/#; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.read_timestamp; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_timestamp/-; +NEW_CONNECTION; +set spanner.readonly = true; +SELECT 1 AS TEST; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.read_timestamp; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +SHOW SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; + show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; + show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; + + + +show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_timestamp ; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_timestamp ; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_timestamp + +; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +show +spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp bar; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp%; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp_; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp&; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp$; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp@; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp!; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp*; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp(; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp); +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp-; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp+; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp-#; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp/; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp\; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp?; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp-/; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp/#; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_timestamp/-; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; + show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; + show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; + + + +show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_timestamp ; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_timestamp ; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_timestamp + +; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +show +variable +spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp bar; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp%; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp_; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp&; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp$; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp@; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp!; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp*; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp(; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp); +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp-; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp+; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp-#; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp/; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp\; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp?; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp-/; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp/#; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.commit_timestamp; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_timestamp/-; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.commit_timestamp; +NEW_CONNECTION; +show spanner.read_only_staleness; +NEW_CONNECTION; +SHOW SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +show spanner.read_only_staleness; +NEW_CONNECTION; + show spanner.read_only_staleness; +NEW_CONNECTION; + show spanner.read_only_staleness; +NEW_CONNECTION; + + + +show spanner.read_only_staleness; +NEW_CONNECTION; +show spanner.read_only_staleness ; +NEW_CONNECTION; +show spanner.read_only_staleness ; +NEW_CONNECTION; +show spanner.read_only_staleness + +; +NEW_CONNECTION; +show spanner.read_only_staleness; +NEW_CONNECTION; +show spanner.read_only_staleness; +NEW_CONNECTION; +show +spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.read_only_staleness/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.read_only_staleness; +NEW_CONNECTION; +show variable spanner.read_only_staleness; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +show variable spanner.read_only_staleness; +NEW_CONNECTION; + show variable spanner.read_only_staleness; +NEW_CONNECTION; + show variable spanner.read_only_staleness; +NEW_CONNECTION; + + + +show variable spanner.read_only_staleness; +NEW_CONNECTION; +show variable spanner.read_only_staleness ; +NEW_CONNECTION; +show variable spanner.read_only_staleness ; +NEW_CONNECTION; +show variable spanner.read_only_staleness + +; +NEW_CONNECTION; +show variable spanner.read_only_staleness; +NEW_CONNECTION; +show variable spanner.read_only_staleness; +NEW_CONNECTION; +show +variable +spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.read_only_staleness; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.read_only_staleness/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.read_only_staleness; +NEW_CONNECTION; +show spanner.optimizer_version; +NEW_CONNECTION; +SHOW SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +show spanner.optimizer_version; +NEW_CONNECTION; + show spanner.optimizer_version; +NEW_CONNECTION; + show spanner.optimizer_version; +NEW_CONNECTION; + + + +show spanner.optimizer_version; +NEW_CONNECTION; +show spanner.optimizer_version ; +NEW_CONNECTION; +show spanner.optimizer_version ; +NEW_CONNECTION; +show spanner.optimizer_version + +; +NEW_CONNECTION; +show spanner.optimizer_version; +NEW_CONNECTION; +show spanner.optimizer_version; +NEW_CONNECTION; +show +spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_version/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.optimizer_version; +NEW_CONNECTION; +show variable spanner.optimizer_version; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +show variable spanner.optimizer_version; +NEW_CONNECTION; + show variable spanner.optimizer_version; +NEW_CONNECTION; + show variable spanner.optimizer_version; +NEW_CONNECTION; + + + +show variable spanner.optimizer_version; +NEW_CONNECTION; +show variable spanner.optimizer_version ; +NEW_CONNECTION; +show variable spanner.optimizer_version ; +NEW_CONNECTION; +show variable spanner.optimizer_version + +; +NEW_CONNECTION; +show variable spanner.optimizer_version; +NEW_CONNECTION; +show variable spanner.optimizer_version; +NEW_CONNECTION; +show +variable +spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.optimizer_version; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_version/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.optimizer_version; +NEW_CONNECTION; +show spanner.optimizer_statistics_package; +NEW_CONNECTION; +SHOW SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +show spanner.optimizer_statistics_package; +NEW_CONNECTION; + show spanner.optimizer_statistics_package; +NEW_CONNECTION; + show spanner.optimizer_statistics_package; +NEW_CONNECTION; + + + +show spanner.optimizer_statistics_package; +NEW_CONNECTION; +show spanner.optimizer_statistics_package ; +NEW_CONNECTION; +show spanner.optimizer_statistics_package ; +NEW_CONNECTION; +show spanner.optimizer_statistics_package + +; +NEW_CONNECTION; +show spanner.optimizer_statistics_package; +NEW_CONNECTION; +show spanner.optimizer_statistics_package; +NEW_CONNECTION; +show +spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.optimizer_statistics_package/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.optimizer_statistics_package; +NEW_CONNECTION; +show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; + show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; + show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; + + + +show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +show variable spanner.optimizer_statistics_package ; +NEW_CONNECTION; +show variable spanner.optimizer_statistics_package ; +NEW_CONNECTION; +show variable spanner.optimizer_statistics_package + +; +NEW_CONNECTION; +show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +show +variable +spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.optimizer_statistics_package; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.optimizer_statistics_package/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.optimizer_statistics_package; +NEW_CONNECTION; +show spanner.return_commit_stats; +NEW_CONNECTION; +SHOW SPANNER.RETURN_COMMIT_STATS; +NEW_CONNECTION; +show spanner.return_commit_stats; +NEW_CONNECTION; + show spanner.return_commit_stats; +NEW_CONNECTION; + show spanner.return_commit_stats; +NEW_CONNECTION; + + + +show spanner.return_commit_stats; +NEW_CONNECTION; +show spanner.return_commit_stats ; +NEW_CONNECTION; +show spanner.return_commit_stats ; +NEW_CONNECTION; +show spanner.return_commit_stats + +; +NEW_CONNECTION; +show spanner.return_commit_stats; +NEW_CONNECTION; +show spanner.return_commit_stats; +NEW_CONNECTION; +show +spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.return_commit_stats/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.return_commit_stats; +NEW_CONNECTION; +show variable spanner.return_commit_stats; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.RETURN_COMMIT_STATS; +NEW_CONNECTION; +show variable spanner.return_commit_stats; +NEW_CONNECTION; + show variable spanner.return_commit_stats; +NEW_CONNECTION; + show variable spanner.return_commit_stats; +NEW_CONNECTION; + + + +show variable spanner.return_commit_stats; +NEW_CONNECTION; +show variable spanner.return_commit_stats ; +NEW_CONNECTION; +show variable spanner.return_commit_stats ; +NEW_CONNECTION; +show variable spanner.return_commit_stats + +; +NEW_CONNECTION; +show variable spanner.return_commit_stats; +NEW_CONNECTION; +show variable spanner.return_commit_stats; +NEW_CONNECTION; +show +variable +spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.return_commit_stats; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.return_commit_stats/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.return_commit_stats; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +SHOW SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; + show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; + show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; + + + +show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_response ; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_response ; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_response + +; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +show +spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response bar; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response%; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response_; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response&; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response$; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response@; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response!; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response*; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response(; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response); +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response-; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response+; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response-#; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response/; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response\; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response?; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response-/; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response/#; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.commit_response/-; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; + show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; + show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; + + + +show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_response ; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_response ; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_response + +; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +show +variable +spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response bar; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response%; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response_; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response&; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response$; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response@; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response!; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response*; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response(; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response); +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response-; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response+; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response-#; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response/; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response\; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response?; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response-/; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response/#; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.commit_response; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.commit_response/-; +NEW_CONNECTION; +update foo set bar=1; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.commit_response; +NEW_CONNECTION; +show spanner.statement_tag; +NEW_CONNECTION; +SHOW SPANNER.STATEMENT_TAG; +NEW_CONNECTION; +show spanner.statement_tag; +NEW_CONNECTION; + show spanner.statement_tag; +NEW_CONNECTION; + show spanner.statement_tag; +NEW_CONNECTION; + + + +show spanner.statement_tag; +NEW_CONNECTION; +show spanner.statement_tag ; +NEW_CONNECTION; +show spanner.statement_tag ; +NEW_CONNECTION; +show spanner.statement_tag + +; +NEW_CONNECTION; +show spanner.statement_tag; +NEW_CONNECTION; +show spanner.statement_tag; +NEW_CONNECTION; +show +spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.statement_tag/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.statement_tag; +NEW_CONNECTION; +show variable spanner.statement_tag; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.STATEMENT_TAG; +NEW_CONNECTION; +show variable spanner.statement_tag; +NEW_CONNECTION; + show variable spanner.statement_tag; +NEW_CONNECTION; + show variable spanner.statement_tag; +NEW_CONNECTION; + + + +show variable spanner.statement_tag; +NEW_CONNECTION; +show variable spanner.statement_tag ; +NEW_CONNECTION; +show variable spanner.statement_tag ; +NEW_CONNECTION; +show variable spanner.statement_tag + +; +NEW_CONNECTION; +show variable spanner.statement_tag; +NEW_CONNECTION; +show variable spanner.statement_tag; +NEW_CONNECTION; +show +variable +spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.statement_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.statement_tag/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.statement_tag; +NEW_CONNECTION; +show spanner.transaction_tag; +NEW_CONNECTION; +SHOW SPANNER.TRANSACTION_TAG; +NEW_CONNECTION; +show spanner.transaction_tag; +NEW_CONNECTION; + show spanner.transaction_tag; +NEW_CONNECTION; + show spanner.transaction_tag; +NEW_CONNECTION; + + + +show spanner.transaction_tag; +NEW_CONNECTION; +show spanner.transaction_tag ; +NEW_CONNECTION; +show spanner.transaction_tag ; +NEW_CONNECTION; +show spanner.transaction_tag + +; +NEW_CONNECTION; +show spanner.transaction_tag; +NEW_CONNECTION; +show spanner.transaction_tag; +NEW_CONNECTION; +show +spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.transaction_tag/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.transaction_tag; +NEW_CONNECTION; +show variable spanner.transaction_tag; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.TRANSACTION_TAG; +NEW_CONNECTION; +show variable spanner.transaction_tag; +NEW_CONNECTION; + show variable spanner.transaction_tag; +NEW_CONNECTION; + show variable spanner.transaction_tag; +NEW_CONNECTION; + + + +show variable spanner.transaction_tag; +NEW_CONNECTION; +show variable spanner.transaction_tag ; +NEW_CONNECTION; +show variable spanner.transaction_tag ; +NEW_CONNECTION; +show variable spanner.transaction_tag + +; +NEW_CONNECTION; +show variable spanner.transaction_tag; +NEW_CONNECTION; +show variable spanner.transaction_tag; +NEW_CONNECTION; +show +variable +spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.transaction_tag; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.transaction_tag/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.transaction_tag; +NEW_CONNECTION; +show spanner.rpc_priority; +NEW_CONNECTION; +SHOW SPANNER.RPC_PRIORITY; +NEW_CONNECTION; +show spanner.rpc_priority; +NEW_CONNECTION; + show spanner.rpc_priority; +NEW_CONNECTION; + show spanner.rpc_priority; +NEW_CONNECTION; + + + +show spanner.rpc_priority; +NEW_CONNECTION; +show spanner.rpc_priority ; +NEW_CONNECTION; +show spanner.rpc_priority ; +NEW_CONNECTION; +show spanner.rpc_priority + +; +NEW_CONNECTION; +show spanner.rpc_priority; +NEW_CONNECTION; +show spanner.rpc_priority; +NEW_CONNECTION; +show +spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show%spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show_spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show&spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show$spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show@spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show!spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show*spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show(spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show)spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show+spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-#spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show\spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show?spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show-/spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/#spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show spanner.rpc_priority/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +show/-spanner.rpc_priority; +NEW_CONNECTION; +show variable spanner.rpc_priority; +NEW_CONNECTION; +SHOW VARIABLE SPANNER.RPC_PRIORITY; +NEW_CONNECTION; +show variable spanner.rpc_priority; +NEW_CONNECTION; + show variable spanner.rpc_priority; +NEW_CONNECTION; + show variable spanner.rpc_priority; +NEW_CONNECTION; + + + +show variable spanner.rpc_priority; +NEW_CONNECTION; +show variable spanner.rpc_priority ; +NEW_CONNECTION; +show variable spanner.rpc_priority ; +NEW_CONNECTION; +show variable spanner.rpc_priority + +; +NEW_CONNECTION; +show variable spanner.rpc_priority; +NEW_CONNECTION; +show variable spanner.rpc_priority; +NEW_CONNECTION; +show +variable +spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority%; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable%spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority_; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable_spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority&; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable&spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority$; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable$spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority@; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable@spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority!; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable!spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority*; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable*spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority(; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable(spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority); +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable)spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority+; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable+spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority-#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-#spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority\; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable\spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority?; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable?spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority-/; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable-/spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority/#; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/#spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-show variable spanner.rpc_priority; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable spanner.rpc_priority/-; +NEW_CONNECTION; +@EXPECT EXCEPTION UNIMPLEMENTED +show variable/-spanner.rpc_priority; +NEW_CONNECTION; +begin; +NEW_CONNECTION; +BEGIN; +NEW_CONNECTION; +begin; +NEW_CONNECTION; + begin; +NEW_CONNECTION; + begin; +NEW_CONNECTION; + + + +begin; +NEW_CONNECTION; +begin ; +NEW_CONNECTION; +begin ; +NEW_CONNECTION; +begin + +; +NEW_CONNECTION; +begin; +NEW_CONNECTION; +begin; +NEW_CONNECTION; +begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/-; +NEW_CONNECTION; +start; +NEW_CONNECTION; +START; +NEW_CONNECTION; +start; +NEW_CONNECTION; + start; +NEW_CONNECTION; + start; +NEW_CONNECTION; + + + +start; +NEW_CONNECTION; +start ; +NEW_CONNECTION; +start ; +NEW_CONNECTION; +start + +; +NEW_CONNECTION; +start; +NEW_CONNECTION; +start; +NEW_CONNECTION; +start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/-; +NEW_CONNECTION; +begin transaction; +NEW_CONNECTION; +BEGIN TRANSACTION; +NEW_CONNECTION; +begin transaction; +NEW_CONNECTION; + begin transaction; +NEW_CONNECTION; + begin transaction; +NEW_CONNECTION; + + + +begin transaction; +NEW_CONNECTION; +begin transaction ; +NEW_CONNECTION; +begin transaction ; +NEW_CONNECTION; +begin transaction + +; +NEW_CONNECTION; +begin transaction; +NEW_CONNECTION; +begin transaction; +NEW_CONNECTION; +begin +transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin%transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin_transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin&transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin$transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin@transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin!transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin*transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin(transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin)transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin+transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-#transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin\transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin?transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-/transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/#transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/-transaction; +NEW_CONNECTION; +start transaction; +NEW_CONNECTION; +START TRANSACTION; +NEW_CONNECTION; +start transaction; +NEW_CONNECTION; + start transaction; +NEW_CONNECTION; + start transaction; +NEW_CONNECTION; + + + +start transaction; +NEW_CONNECTION; +start transaction ; +NEW_CONNECTION; +start transaction ; +NEW_CONNECTION; +start transaction + +; +NEW_CONNECTION; +start transaction; +NEW_CONNECTION; +start transaction; +NEW_CONNECTION; +start +transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start%transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start_transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start&transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start$transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start@transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start!transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start*transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start(transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start)transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start+transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-#transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start\transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start?transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-/transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/#transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start transaction; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/-transaction; +NEW_CONNECTION; +begin work; +NEW_CONNECTION; +BEGIN WORK; +NEW_CONNECTION; +begin work; +NEW_CONNECTION; + begin work; +NEW_CONNECTION; + begin work; +NEW_CONNECTION; + + + +begin work; +NEW_CONNECTION; +begin work ; +NEW_CONNECTION; +begin work ; +NEW_CONNECTION; +begin work + +; +NEW_CONNECTION; +begin work; +NEW_CONNECTION; +begin work; +NEW_CONNECTION; +begin +work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin%work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin_work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin&work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin$work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin@work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin!work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin*work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin(work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin)work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin+work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-#work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin\work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin?work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin-/work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/#work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin/-work; +NEW_CONNECTION; +start work; +NEW_CONNECTION; +START WORK; +NEW_CONNECTION; +start work; +NEW_CONNECTION; + start work; +NEW_CONNECTION; + start work; +NEW_CONNECTION; + + + +start work; +NEW_CONNECTION; +start work ; +NEW_CONNECTION; +start work ; +NEW_CONNECTION; +start work + +; +NEW_CONNECTION; +start work; +NEW_CONNECTION; +start work; +NEW_CONNECTION; +start +work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start%work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start_work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start&work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start$work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start@work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start!work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start*work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start(work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start)work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start+work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-#work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start\work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start?work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start-/work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/#work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start work; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start/-work; +NEW_CONNECTION; +begin read only; +NEW_CONNECTION; +BEGIN READ ONLY; +NEW_CONNECTION; +begin read only; +NEW_CONNECTION; + begin read only; +NEW_CONNECTION; + begin read only; +NEW_CONNECTION; + + + +begin read only; +NEW_CONNECTION; +begin read only ; +NEW_CONNECTION; +begin read only ; +NEW_CONNECTION; +begin read only + +; +NEW_CONNECTION; +begin read only; +NEW_CONNECTION; +begin read only; +NEW_CONNECTION; +begin +read +only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read%only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read_only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read&only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read$only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read@only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read!only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read*only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read(only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read)only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read-only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read+only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read-#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read\only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read?only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read-/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read/#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read only/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read/-only; +NEW_CONNECTION; +start read only; +NEW_CONNECTION; +START READ ONLY; +NEW_CONNECTION; +start read only; +NEW_CONNECTION; + start read only; +NEW_CONNECTION; + start read only; +NEW_CONNECTION; + + + +start read only; +NEW_CONNECTION; +start read only ; +NEW_CONNECTION; +start read only ; +NEW_CONNECTION; +start read only + +; +NEW_CONNECTION; +start read only; +NEW_CONNECTION; +start read only; +NEW_CONNECTION; +start +read +only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read%only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read_only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read&only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read$only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read@only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read!only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read*only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read(only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read)only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read-only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read+only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read-#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read\only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read?only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read-/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read/#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read only/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read/-only; +NEW_CONNECTION; +begin transaction read only; +NEW_CONNECTION; +BEGIN TRANSACTION READ ONLY; +NEW_CONNECTION; +begin transaction read only; +NEW_CONNECTION; + begin transaction read only; +NEW_CONNECTION; + begin transaction read only; +NEW_CONNECTION; + + + +begin transaction read only; +NEW_CONNECTION; +begin transaction read only ; +NEW_CONNECTION; +begin transaction read only ; +NEW_CONNECTION; +begin transaction read only + +; +NEW_CONNECTION; +begin transaction read only; +NEW_CONNECTION; +begin transaction read only; +NEW_CONNECTION; +begin +transaction +read +only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read%only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read_only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read&only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read$only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read@only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read!only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read*only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read(only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read)only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read-only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read+only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read-#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read\only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read?only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read-/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read/#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read only/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read/-only; +NEW_CONNECTION; +start transaction read only; +NEW_CONNECTION; +START TRANSACTION READ ONLY; +NEW_CONNECTION; +start transaction read only; +NEW_CONNECTION; + start transaction read only; +NEW_CONNECTION; + start transaction read only; +NEW_CONNECTION; + + + +start transaction read only; +NEW_CONNECTION; +start transaction read only ; +NEW_CONNECTION; +start transaction read only ; +NEW_CONNECTION; +start transaction read only + +; +NEW_CONNECTION; +start transaction read only; +NEW_CONNECTION; +start transaction read only; +NEW_CONNECTION; +start +transaction +read +only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read%only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read_only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read&only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read$only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read@only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read!only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read*only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read(only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read)only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read-only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read+only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read-#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read\only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read?only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read-/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read/#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read only/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read/-only; +NEW_CONNECTION; +begin work read only; +NEW_CONNECTION; +BEGIN WORK READ ONLY; +NEW_CONNECTION; +begin work read only; +NEW_CONNECTION; + begin work read only; +NEW_CONNECTION; + begin work read only; +NEW_CONNECTION; + + + +begin work read only; +NEW_CONNECTION; +begin work read only ; +NEW_CONNECTION; +begin work read only ; +NEW_CONNECTION; +begin work read only + +; +NEW_CONNECTION; +begin work read only; +NEW_CONNECTION; +begin work read only; +NEW_CONNECTION; +begin +work +read +only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read%only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read_only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read&only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read$only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read@only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read!only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read*only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read(only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read)only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read-only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read+only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read-#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read\only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read?only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read-/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read/#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read only/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read/-only; +NEW_CONNECTION; +start work read only; +NEW_CONNECTION; +START WORK READ ONLY; +NEW_CONNECTION; +start work read only; +NEW_CONNECTION; + start work read only; +NEW_CONNECTION; + start work read only; +NEW_CONNECTION; + + + +start work read only; +NEW_CONNECTION; +start work read only ; +NEW_CONNECTION; +start work read only ; +NEW_CONNECTION; +start work read only + +; +NEW_CONNECTION; +start work read only; +NEW_CONNECTION; +start work read only; +NEW_CONNECTION; +start +work +read +only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read%only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read_only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read&only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read$only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read@only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read!only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read*only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read(only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read)only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read-only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read+only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read-#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read\only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read?only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read-/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read/#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start work read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read only/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read/-only; +NEW_CONNECTION; +begin read write; +NEW_CONNECTION; +BEGIN READ WRITE; +NEW_CONNECTION; +begin read write; +NEW_CONNECTION; + begin read write; +NEW_CONNECTION; + begin read write; +NEW_CONNECTION; + + + +begin read write; +NEW_CONNECTION; +begin read write ; +NEW_CONNECTION; +begin read write ; +NEW_CONNECTION; +begin read write + +; +NEW_CONNECTION; +begin read write; +NEW_CONNECTION; +begin read write; +NEW_CONNECTION; +begin +read +write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read%write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read_write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read&write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read$write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read@write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read!write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read*write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read(write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read)write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read-write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read+write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read-#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read\write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read?write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read-/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read/#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read write/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin read/-write; +NEW_CONNECTION; +start read write; +NEW_CONNECTION; +START READ WRITE; +NEW_CONNECTION; +start read write; +NEW_CONNECTION; + start read write; +NEW_CONNECTION; + start read write; +NEW_CONNECTION; + + + +start read write; +NEW_CONNECTION; +start read write ; +NEW_CONNECTION; +start read write ; +NEW_CONNECTION; +start read write + +; +NEW_CONNECTION; +start read write; +NEW_CONNECTION; +start read write; +NEW_CONNECTION; +start +read +write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read%write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read_write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read&write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read$write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read@write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read!write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read*write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read(write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read)write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read-write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read+write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read-#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read\write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read?write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read-/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read/#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read write/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start read/-write; +NEW_CONNECTION; +begin transaction read write; +NEW_CONNECTION; +BEGIN TRANSACTION READ WRITE; +NEW_CONNECTION; +begin transaction read write; +NEW_CONNECTION; + begin transaction read write; +NEW_CONNECTION; + begin transaction read write; +NEW_CONNECTION; + + + +begin transaction read write; +NEW_CONNECTION; +begin transaction read write ; +NEW_CONNECTION; +begin transaction read write ; +NEW_CONNECTION; +begin transaction read write + +; +NEW_CONNECTION; +begin transaction read write; +NEW_CONNECTION; +begin transaction read write; +NEW_CONNECTION; +begin +transaction +read +write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read%write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read_write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read&write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read$write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read@write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read!write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read*write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read(write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read)write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read-write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read+write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read-#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read\write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read?write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read-/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read/#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read write/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction read/-write; +NEW_CONNECTION; +start transaction read write; +NEW_CONNECTION; +START TRANSACTION READ WRITE; +NEW_CONNECTION; +start transaction read write; +NEW_CONNECTION; + start transaction read write; +NEW_CONNECTION; + start transaction read write; +NEW_CONNECTION; + + + +start transaction read write; +NEW_CONNECTION; +start transaction read write ; +NEW_CONNECTION; +start transaction read write ; +NEW_CONNECTION; +start transaction read write + +; +NEW_CONNECTION; +start transaction read write; +NEW_CONNECTION; +start transaction read write; +NEW_CONNECTION; +start +transaction +read +write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read%write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read_write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read&write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read$write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read@write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read!write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read*write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read(write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read)write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read-write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read+write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read-#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read\write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read?write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read-/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read/#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read write/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction read/-write; +NEW_CONNECTION; +begin work read write; +NEW_CONNECTION; +BEGIN WORK READ WRITE; +NEW_CONNECTION; +begin work read write; +NEW_CONNECTION; + begin work read write; +NEW_CONNECTION; + begin work read write; +NEW_CONNECTION; + + + +begin work read write; +NEW_CONNECTION; +begin work read write ; +NEW_CONNECTION; +begin work read write ; +NEW_CONNECTION; +begin work read write + +; +NEW_CONNECTION; +begin work read write; +NEW_CONNECTION; +begin work read write; +NEW_CONNECTION; +begin +work +read +write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read%write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read_write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read&write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read$write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read@write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read!write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read*write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read(write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read)write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read-write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read+write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read-#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read\write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read?write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read-/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read/#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read write/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work read/-write; +NEW_CONNECTION; +start work read write; +NEW_CONNECTION; +START WORK READ WRITE; +NEW_CONNECTION; +start work read write; +NEW_CONNECTION; + start work read write; +NEW_CONNECTION; + start work read write; +NEW_CONNECTION; + + + +start work read write; +NEW_CONNECTION; +start work read write ; +NEW_CONNECTION; +start work read write ; +NEW_CONNECTION; +start work read write + +; +NEW_CONNECTION; +start work read write; +NEW_CONNECTION; +start work read write; +NEW_CONNECTION; +start +work +read +write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read%write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read_write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read&write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read$write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read@write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read!write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read*write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read(write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read)write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read-write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read+write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read-#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read\write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read?write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read-/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read/#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start work read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read write/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work read/-write; +NEW_CONNECTION; +begin isolation level default; +NEW_CONNECTION; +BEGIN ISOLATION LEVEL DEFAULT; +NEW_CONNECTION; +begin isolation level default; +NEW_CONNECTION; + begin isolation level default; +NEW_CONNECTION; + begin isolation level default; +NEW_CONNECTION; + + + +begin isolation level default; +NEW_CONNECTION; +begin isolation level default ; +NEW_CONNECTION; +begin isolation level default ; +NEW_CONNECTION; +begin isolation level default + +; +NEW_CONNECTION; +begin isolation level default; +NEW_CONNECTION; +begin isolation level default; +NEW_CONNECTION; +begin +isolation +level +default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level%default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level_default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level&default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level$default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level@default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level!default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level*default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level(default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level)default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level-default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level+default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level-#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level\default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level?default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level-/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level/#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level/-default; +NEW_CONNECTION; +start isolation level default; +NEW_CONNECTION; +START ISOLATION LEVEL DEFAULT; +NEW_CONNECTION; +start isolation level default; +NEW_CONNECTION; + start isolation level default; +NEW_CONNECTION; + start isolation level default; +NEW_CONNECTION; + + + +start isolation level default; +NEW_CONNECTION; +start isolation level default ; +NEW_CONNECTION; +start isolation level default ; +NEW_CONNECTION; +start isolation level default + +; +NEW_CONNECTION; +start isolation level default; +NEW_CONNECTION; +start isolation level default; +NEW_CONNECTION; +start +isolation +level +default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level%default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level_default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level&default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level$default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level@default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level!default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level*default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level(default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level)default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level-default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level+default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level-#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level\default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level?default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level-/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level/#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level/-default; +NEW_CONNECTION; +begin transaction isolation level default; +NEW_CONNECTION; +BEGIN TRANSACTION ISOLATION LEVEL DEFAULT; +NEW_CONNECTION; +begin transaction isolation level default; +NEW_CONNECTION; + begin transaction isolation level default; +NEW_CONNECTION; + begin transaction isolation level default; +NEW_CONNECTION; + + + +begin transaction isolation level default; +NEW_CONNECTION; +begin transaction isolation level default ; +NEW_CONNECTION; +begin transaction isolation level default ; +NEW_CONNECTION; +begin transaction isolation level default + +; +NEW_CONNECTION; +begin transaction isolation level default; +NEW_CONNECTION; +begin transaction isolation level default; +NEW_CONNECTION; +begin +transaction +isolation +level +default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level%default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level_default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level&default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level$default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level@default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level!default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level*default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level(default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level)default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level-default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level+default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level-#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level\default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level?default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level-/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level/#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level/-default; +NEW_CONNECTION; +start transaction isolation level default; +NEW_CONNECTION; +START TRANSACTION ISOLATION LEVEL DEFAULT; +NEW_CONNECTION; +start transaction isolation level default; +NEW_CONNECTION; + start transaction isolation level default; +NEW_CONNECTION; + start transaction isolation level default; +NEW_CONNECTION; + + + +start transaction isolation level default; +NEW_CONNECTION; +start transaction isolation level default ; +NEW_CONNECTION; +start transaction isolation level default ; +NEW_CONNECTION; +start transaction isolation level default + +; +NEW_CONNECTION; +start transaction isolation level default; +NEW_CONNECTION; +start transaction isolation level default; +NEW_CONNECTION; +start +transaction +isolation +level +default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level%default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level_default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level&default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level$default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level@default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level!default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level*default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level(default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level)default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level-default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level+default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level-#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level\default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level?default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level-/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level/#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level/-default; +NEW_CONNECTION; +begin work isolation level default; +NEW_CONNECTION; +BEGIN WORK ISOLATION LEVEL DEFAULT; +NEW_CONNECTION; +begin work isolation level default; +NEW_CONNECTION; + begin work isolation level default; +NEW_CONNECTION; + begin work isolation level default; +NEW_CONNECTION; + + + +begin work isolation level default; +NEW_CONNECTION; +begin work isolation level default ; +NEW_CONNECTION; +begin work isolation level default ; +NEW_CONNECTION; +begin work isolation level default + +; +NEW_CONNECTION; +begin work isolation level default; +NEW_CONNECTION; +begin work isolation level default; +NEW_CONNECTION; +begin +work +isolation +level +default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level%default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level_default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level&default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level$default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level@default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level!default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level*default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level(default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level)default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level-default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level+default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level-#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level\default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level?default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level-/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level/#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level/-default; +NEW_CONNECTION; +start work isolation level default; +NEW_CONNECTION; +START WORK ISOLATION LEVEL DEFAULT; +NEW_CONNECTION; +start work isolation level default; +NEW_CONNECTION; + start work isolation level default; +NEW_CONNECTION; + start work isolation level default; +NEW_CONNECTION; + + + +start work isolation level default; +NEW_CONNECTION; +start work isolation level default ; +NEW_CONNECTION; +start work isolation level default ; +NEW_CONNECTION; +start work isolation level default + +; +NEW_CONNECTION; +start work isolation level default; +NEW_CONNECTION; +start work isolation level default; +NEW_CONNECTION; +start +work +isolation +level +default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level%default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level_default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level&default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level$default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level@default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level!default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level*default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level(default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level)default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level-default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level+default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level-#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level\default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level?default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level-/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level/#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start work isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level/-default; +NEW_CONNECTION; +begin isolation level serializable; +NEW_CONNECTION; +BEGIN ISOLATION LEVEL SERIALIZABLE; +NEW_CONNECTION; +begin isolation level serializable; +NEW_CONNECTION; + begin isolation level serializable; +NEW_CONNECTION; + begin isolation level serializable; +NEW_CONNECTION; + + + +begin isolation level serializable; +NEW_CONNECTION; +begin isolation level serializable ; +NEW_CONNECTION; +begin isolation level serializable ; +NEW_CONNECTION; +begin isolation level serializable + +; +NEW_CONNECTION; +begin isolation level serializable; +NEW_CONNECTION; +begin isolation level serializable; +NEW_CONNECTION; +begin +isolation +level +serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level%serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level_serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level&serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level$serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level@serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level!serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level*serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level(serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level)serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level-serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level+serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level-#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level\serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level?serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level-/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level/#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level serializable/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin isolation level/-serializable; +NEW_CONNECTION; +start isolation level serializable; +NEW_CONNECTION; +START ISOLATION LEVEL SERIALIZABLE; +NEW_CONNECTION; +start isolation level serializable; +NEW_CONNECTION; + start isolation level serializable; +NEW_CONNECTION; + start isolation level serializable; +NEW_CONNECTION; + + + +start isolation level serializable; +NEW_CONNECTION; +start isolation level serializable ; +NEW_CONNECTION; +start isolation level serializable ; +NEW_CONNECTION; +start isolation level serializable + +; +NEW_CONNECTION; +start isolation level serializable; +NEW_CONNECTION; +start isolation level serializable; +NEW_CONNECTION; +start +isolation +level +serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level%serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level_serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level&serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level$serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level@serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level!serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level*serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level(serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level)serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level-serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level+serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level-#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level\serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level?serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level-/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level/#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level serializable/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start isolation level/-serializable; +NEW_CONNECTION; +begin transaction isolation level serializable; +NEW_CONNECTION; +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +NEW_CONNECTION; +begin transaction isolation level serializable; +NEW_CONNECTION; + begin transaction isolation level serializable; +NEW_CONNECTION; + begin transaction isolation level serializable; +NEW_CONNECTION; + + + +begin transaction isolation level serializable; +NEW_CONNECTION; +begin transaction isolation level serializable ; +NEW_CONNECTION; +begin transaction isolation level serializable ; +NEW_CONNECTION; +begin transaction isolation level serializable + +; +NEW_CONNECTION; +begin transaction isolation level serializable; +NEW_CONNECTION; +begin transaction isolation level serializable; +NEW_CONNECTION; +begin +transaction +isolation +level +serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level%serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level_serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level&serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level$serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level@serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level!serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level*serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level(serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level)serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level-serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level+serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level-#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level\serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level?serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level-/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level/#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level serializable/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin transaction isolation level/-serializable; +NEW_CONNECTION; +start transaction isolation level serializable; +NEW_CONNECTION; +START TRANSACTION ISOLATION LEVEL SERIALIZABLE; +NEW_CONNECTION; +start transaction isolation level serializable; +NEW_CONNECTION; + start transaction isolation level serializable; +NEW_CONNECTION; + start transaction isolation level serializable; +NEW_CONNECTION; + + + +start transaction isolation level serializable; +NEW_CONNECTION; +start transaction isolation level serializable ; +NEW_CONNECTION; +start transaction isolation level serializable ; +NEW_CONNECTION; +start transaction isolation level serializable + +; +NEW_CONNECTION; +start transaction isolation level serializable; +NEW_CONNECTION; +start transaction isolation level serializable; +NEW_CONNECTION; +start +transaction +isolation +level +serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level%serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level_serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level&serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level$serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level@serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level!serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level*serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level(serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level)serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level-serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level+serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level-#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level\serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level?serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level-/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level/#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level serializable/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start transaction isolation level/-serializable; +NEW_CONNECTION; +begin work isolation level serializable; +NEW_CONNECTION; +BEGIN WORK ISOLATION LEVEL SERIALIZABLE; +NEW_CONNECTION; +begin work isolation level serializable; +NEW_CONNECTION; + begin work isolation level serializable; +NEW_CONNECTION; + begin work isolation level serializable; +NEW_CONNECTION; + + + +begin work isolation level serializable; +NEW_CONNECTION; +begin work isolation level serializable ; +NEW_CONNECTION; +begin work isolation level serializable ; +NEW_CONNECTION; +begin work isolation level serializable + +; +NEW_CONNECTION; +begin work isolation level serializable; +NEW_CONNECTION; +begin work isolation level serializable; +NEW_CONNECTION; +begin +work +isolation +level +serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level%serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level_serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level&serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level$serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level@serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level!serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level*serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level(serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level)serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level-serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level+serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level-#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level\serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level?serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level-/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level/#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-begin work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level serializable/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +begin work isolation level/-serializable; +NEW_CONNECTION; +start work isolation level serializable; +NEW_CONNECTION; +START WORK ISOLATION LEVEL SERIALIZABLE; +NEW_CONNECTION; +start work isolation level serializable; +NEW_CONNECTION; + start work isolation level serializable; +NEW_CONNECTION; + start work isolation level serializable; +NEW_CONNECTION; + + + +start work isolation level serializable; +NEW_CONNECTION; +start work isolation level serializable ; +NEW_CONNECTION; +start work isolation level serializable ; +NEW_CONNECTION; +start work isolation level serializable + +; +NEW_CONNECTION; +start work isolation level serializable; +NEW_CONNECTION; +start work isolation level serializable; +NEW_CONNECTION; +start +work +isolation +level +serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level%serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level_serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level&serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level$serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level@serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level!serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level*serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level(serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level)serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level-serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level+serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level-#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level\serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level?serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level-/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level/#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start work isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level serializable/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start work isolation level/-serializable; +NEW_CONNECTION; +begin transaction; +commit; +NEW_CONNECTION; +begin transaction; +COMMIT; +NEW_CONNECTION; +begin transaction; +commit; +NEW_CONNECTION; +begin transaction; + commit; +NEW_CONNECTION; +begin transaction; + commit; +NEW_CONNECTION; +begin transaction; + + + +commit; +NEW_CONNECTION; +begin transaction; +commit ; +NEW_CONNECTION; +begin transaction; +commit ; +NEW_CONNECTION; +begin transaction; +commit + +; +NEW_CONNECTION; +begin transaction; +commit; +NEW_CONNECTION; +begin transaction; +commit; +NEW_CONNECTION; +begin transaction; +commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-commit; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/-; +NEW_CONNECTION; +begin transaction; +commit transaction; +NEW_CONNECTION; +begin transaction; +COMMIT TRANSACTION; +NEW_CONNECTION; +begin transaction; +commit transaction; +NEW_CONNECTION; +begin transaction; + commit transaction; +NEW_CONNECTION; +begin transaction; + commit transaction; +NEW_CONNECTION; +begin transaction; + + + +commit transaction; +NEW_CONNECTION; +begin transaction; +commit transaction ; +NEW_CONNECTION; +begin transaction; +commit transaction ; +NEW_CONNECTION; +begin transaction; +commit transaction + +; +NEW_CONNECTION; +begin transaction; +commit transaction; +NEW_CONNECTION; +begin transaction; +commit transaction; +NEW_CONNECTION; +begin transaction; +commit +transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit%transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit_transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit&transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit$transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit@transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit!transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit*transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit(transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit)transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit+transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-#transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit\transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit?transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-/transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/#transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-commit transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/-transaction; +NEW_CONNECTION; +begin transaction; +commit work; +NEW_CONNECTION; +begin transaction; +COMMIT WORK; +NEW_CONNECTION; +begin transaction; +commit work; +NEW_CONNECTION; +begin transaction; + commit work; +NEW_CONNECTION; +begin transaction; + commit work; +NEW_CONNECTION; +begin transaction; + + + +commit work; +NEW_CONNECTION; +begin transaction; +commit work ; +NEW_CONNECTION; +begin transaction; +commit work ; +NEW_CONNECTION; +begin transaction; +commit work + +; +NEW_CONNECTION; +begin transaction; +commit work; +NEW_CONNECTION; +begin transaction; +commit work; +NEW_CONNECTION; +begin transaction; +commit +work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit%work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit_work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit&work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit$work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit@work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit!work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit*work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit(work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit)work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit+work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-#work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit\work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit?work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit-/work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/#work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-commit work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit/-work; +NEW_CONNECTION; +begin transaction; +commit and no chain; +NEW_CONNECTION; +begin transaction; +COMMIT AND NO CHAIN; +NEW_CONNECTION; +begin transaction; +commit and no chain; +NEW_CONNECTION; +begin transaction; + commit and no chain; +NEW_CONNECTION; +begin transaction; + commit and no chain; +NEW_CONNECTION; +begin transaction; + + + +commit and no chain; +NEW_CONNECTION; +begin transaction; +commit and no chain ; +NEW_CONNECTION; +begin transaction; +commit and no chain ; +NEW_CONNECTION; +begin transaction; +commit and no chain + +; +NEW_CONNECTION; +begin transaction; +commit and no chain; +NEW_CONNECTION; +begin transaction; +commit and no chain; +NEW_CONNECTION; +begin transaction; +commit +and +no +chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no%chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no_chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no&chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no$chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no@chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no!chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no*chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no(chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no)chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no-chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no+chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no-#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no\chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no?chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no-/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no/#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-commit and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no chain/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit and no/-chain; +NEW_CONNECTION; +begin transaction; +commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +COMMIT TRANSACTION AND NO CHAIN; +NEW_CONNECTION; +begin transaction; +commit transaction and no chain; +NEW_CONNECTION; +begin transaction; + commit transaction and no chain; +NEW_CONNECTION; +begin transaction; + commit transaction and no chain; +NEW_CONNECTION; +begin transaction; + + + +commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +commit transaction and no chain ; +NEW_CONNECTION; +begin transaction; +commit transaction and no chain ; +NEW_CONNECTION; +begin transaction; +commit transaction and no chain + +; +NEW_CONNECTION; +begin transaction; +commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +commit +transaction +and +no +chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no%chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no_chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no&chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no$chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no@chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no!chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no*chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no(chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no)chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no-chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no+chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no-#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no\chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no?chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no-/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no/#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-commit transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no chain/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit transaction and no/-chain; +NEW_CONNECTION; +begin transaction; +commit work and no chain; +NEW_CONNECTION; +begin transaction; +COMMIT WORK AND NO CHAIN; +NEW_CONNECTION; +begin transaction; +commit work and no chain; +NEW_CONNECTION; +begin transaction; + commit work and no chain; +NEW_CONNECTION; +begin transaction; + commit work and no chain; +NEW_CONNECTION; +begin transaction; + + + +commit work and no chain; +NEW_CONNECTION; +begin transaction; +commit work and no chain ; +NEW_CONNECTION; +begin transaction; +commit work and no chain ; +NEW_CONNECTION; +begin transaction; +commit work and no chain + +; +NEW_CONNECTION; +begin transaction; +commit work and no chain; +NEW_CONNECTION; +begin transaction; +commit work and no chain; +NEW_CONNECTION; +begin transaction; +commit +work +and +no +chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no%chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no_chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no&chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no$chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no@chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no!chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no*chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no(chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no)chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no-chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no+chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no-#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no\chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no?chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no-/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no/#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-commit work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no chain/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +commit work and no/-chain; +NEW_CONNECTION; +begin transaction; +rollback; +NEW_CONNECTION; +begin transaction; +ROLLBACK; +NEW_CONNECTION; +begin transaction; +rollback; +NEW_CONNECTION; +begin transaction; + rollback; +NEW_CONNECTION; +begin transaction; + rollback; +NEW_CONNECTION; +begin transaction; + + + +rollback; +NEW_CONNECTION; +begin transaction; +rollback ; +NEW_CONNECTION; +begin transaction; +rollback ; +NEW_CONNECTION; +begin transaction; +rollback + +; +NEW_CONNECTION; +begin transaction; +rollback; +NEW_CONNECTION; +begin transaction; +rollback; +NEW_CONNECTION; +begin transaction; +rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-rollback; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/-; +NEW_CONNECTION; +begin transaction; +rollback transaction; +NEW_CONNECTION; +begin transaction; +ROLLBACK TRANSACTION; +NEW_CONNECTION; +begin transaction; +rollback transaction; +NEW_CONNECTION; +begin transaction; + rollback transaction; +NEW_CONNECTION; +begin transaction; + rollback transaction; +NEW_CONNECTION; +begin transaction; + + + +rollback transaction; +NEW_CONNECTION; +begin transaction; +rollback transaction ; +NEW_CONNECTION; +begin transaction; +rollback transaction ; +NEW_CONNECTION; +begin transaction; +rollback transaction + +; +NEW_CONNECTION; +begin transaction; +rollback transaction; +NEW_CONNECTION; +begin transaction; +rollback transaction; +NEW_CONNECTION; +begin transaction; +rollback +transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback%transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback_transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback&transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback$transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback@transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback!transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback*transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback(transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback)transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback+transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-#transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback\transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback?transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-/transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/#transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-rollback transaction; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/-transaction; +NEW_CONNECTION; +begin transaction; +rollback work; +NEW_CONNECTION; +begin transaction; +ROLLBACK WORK; +NEW_CONNECTION; +begin transaction; +rollback work; +NEW_CONNECTION; +begin transaction; + rollback work; +NEW_CONNECTION; +begin transaction; + rollback work; +NEW_CONNECTION; +begin transaction; + + + +rollback work; +NEW_CONNECTION; +begin transaction; +rollback work ; +NEW_CONNECTION; +begin transaction; +rollback work ; +NEW_CONNECTION; +begin transaction; +rollback work + +; +NEW_CONNECTION; +begin transaction; +rollback work; +NEW_CONNECTION; +begin transaction; +rollback work; +NEW_CONNECTION; +begin transaction; +rollback +work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback%work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback_work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback&work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback$work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback@work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback!work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback*work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback(work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback)work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback+work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-#work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback\work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback?work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback-/work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/#work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-rollback work; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback/-work; +NEW_CONNECTION; +begin transaction; +rollback and no chain; +NEW_CONNECTION; +begin transaction; +ROLLBACK AND NO CHAIN; +NEW_CONNECTION; +begin transaction; +rollback and no chain; +NEW_CONNECTION; +begin transaction; + rollback and no chain; +NEW_CONNECTION; +begin transaction; + rollback and no chain; +NEW_CONNECTION; +begin transaction; + + + +rollback and no chain; +NEW_CONNECTION; +begin transaction; +rollback and no chain ; +NEW_CONNECTION; +begin transaction; +rollback and no chain ; +NEW_CONNECTION; +begin transaction; +rollback and no chain + +; +NEW_CONNECTION; +begin transaction; +rollback and no chain; +NEW_CONNECTION; +begin transaction; +rollback and no chain; +NEW_CONNECTION; +begin transaction; +rollback +and +no +chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no%chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no_chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no&chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no$chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no@chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no!chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no*chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no(chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no)chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no-chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no+chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no-#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no\chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no?chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no-/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no/#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-rollback and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no chain/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback and no/-chain; +NEW_CONNECTION; +begin transaction; +rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +ROLLBACK TRANSACTION AND NO CHAIN; +NEW_CONNECTION; +begin transaction; +rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; + rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; + rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; + + + +rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +rollback transaction and no chain ; +NEW_CONNECTION; +begin transaction; +rollback transaction and no chain ; +NEW_CONNECTION; +begin transaction; +rollback transaction and no chain + +; +NEW_CONNECTION; +begin transaction; +rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +rollback +transaction +and +no +chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no%chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no_chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no&chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no$chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no@chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no!chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no*chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no(chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no)chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no-chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no+chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no-#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no\chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no?chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no-/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no/#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-rollback transaction and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no chain/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback transaction and no/-chain; +NEW_CONNECTION; +begin transaction; +rollback work and no chain; +NEW_CONNECTION; +begin transaction; +ROLLBACK WORK AND NO CHAIN; +NEW_CONNECTION; +begin transaction; +rollback work and no chain; +NEW_CONNECTION; +begin transaction; + rollback work and no chain; +NEW_CONNECTION; +begin transaction; + rollback work and no chain; +NEW_CONNECTION; +begin transaction; + + + +rollback work and no chain; +NEW_CONNECTION; +begin transaction; +rollback work and no chain ; +NEW_CONNECTION; +begin transaction; +rollback work and no chain ; +NEW_CONNECTION; +begin transaction; +rollback work and no chain + +; +NEW_CONNECTION; +begin transaction; +rollback work and no chain; +NEW_CONNECTION; +begin transaction; +rollback work and no chain; +NEW_CONNECTION; +begin transaction; +rollback +work +and +no +chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain bar; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +%rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain%; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no%chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +_rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain_; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no_chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +&rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain&; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no&chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +$rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain$; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no$chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +@rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain@; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no@chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +!rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain!; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no!chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +*rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain*; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no*chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +(rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain(; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no(chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +)rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain); +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no)chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no-chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT ++rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain+; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no+chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain-#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no-#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +\rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain\; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no\chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +?rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain?; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no?chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain-/; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no-/chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain/#; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no/#chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-rollback work and no chain; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no chain/-; +NEW_CONNECTION; +begin transaction; +@EXPECT EXCEPTION INVALID_ARGUMENT +rollback work and no/-chain; +NEW_CONNECTION; +start batch ddl; +NEW_CONNECTION; +START BATCH DDL; +NEW_CONNECTION; +start batch ddl; +NEW_CONNECTION; + start batch ddl; +NEW_CONNECTION; + start batch ddl; +NEW_CONNECTION; + + + +start batch ddl; +NEW_CONNECTION; +start batch ddl ; +NEW_CONNECTION; +start batch ddl ; +NEW_CONNECTION; +start batch ddl + +; +NEW_CONNECTION; +start batch ddl; +NEW_CONNECTION; +start batch ddl; +NEW_CONNECTION; +start +batch +ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch%ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch_ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch&ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch$ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch@ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch!ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch*ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch(ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch)ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch-ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch+ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch-#ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch/ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch\ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch?ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch-/ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch/#ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start batch ddl; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch ddl/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch/-ddl; +NEW_CONNECTION; +start batch dml; +NEW_CONNECTION; +START BATCH DML; +NEW_CONNECTION; +start batch dml; +NEW_CONNECTION; + start batch dml; +NEW_CONNECTION; + start batch dml; +NEW_CONNECTION; + + + +start batch dml; +NEW_CONNECTION; +start batch dml ; +NEW_CONNECTION; +start batch dml ; +NEW_CONNECTION; +start batch dml + +; +NEW_CONNECTION; +start batch dml; +NEW_CONNECTION; +start batch dml; +NEW_CONNECTION; +start +batch +dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch%dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch_dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch&dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch$dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch@dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch!dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch*dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch(dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch)dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch-dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch+dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch-#dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch/dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch\dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch?dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch-/dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch/#dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-start batch dml; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch dml/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +start batch/-dml; +NEW_CONNECTION; +start batch ddl; +run batch; +NEW_CONNECTION; +start batch ddl; +RUN BATCH; +NEW_CONNECTION; +start batch ddl; +run batch; +NEW_CONNECTION; +start batch ddl; + run batch; +NEW_CONNECTION; +start batch ddl; + run batch; +NEW_CONNECTION; +start batch ddl; + + + +run batch; +NEW_CONNECTION; +start batch ddl; +run batch ; +NEW_CONNECTION; +start batch ddl; +run batch ; +NEW_CONNECTION; +start batch ddl; +run batch + +; +NEW_CONNECTION; +start batch ddl; +run batch; +NEW_CONNECTION; +start batch ddl; +run batch; +NEW_CONNECTION; +start batch ddl; +run +batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch bar; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +%run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch%; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run%batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +_run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch_; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run_batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +&run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch&; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run&batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +$run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch$; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run$batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +@run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch@; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run@batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +!run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch!; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run!batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +*run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch*; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run*batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +(run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch(; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run(batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +)run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch); +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run)batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +-run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch-; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run-batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT ++run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch+; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run+batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch-#; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run-#batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +/run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch/; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run/batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +\run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch\; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run\batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +?run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch?; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run?batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch-/; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run-/batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch/#; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run/#batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-run batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run batch/-; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +run/-batch; +NEW_CONNECTION; +start batch ddl; +abort batch; +NEW_CONNECTION; +start batch ddl; +ABORT BATCH; +NEW_CONNECTION; +start batch ddl; +abort batch; +NEW_CONNECTION; +start batch ddl; + abort batch; +NEW_CONNECTION; +start batch ddl; + abort batch; +NEW_CONNECTION; +start batch ddl; + + + +abort batch; +NEW_CONNECTION; +start batch ddl; +abort batch ; +NEW_CONNECTION; +start batch ddl; +abort batch ; +NEW_CONNECTION; +start batch ddl; +abort batch + +; +NEW_CONNECTION; +start batch ddl; +abort batch; +NEW_CONNECTION; +start batch ddl; +abort batch; +NEW_CONNECTION; +start batch ddl; +abort +batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch bar; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +%abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch%; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort%batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +_abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch_; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort_batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +&abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch&; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort&batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +$abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch$; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort$batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +@abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch@; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort@batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +!abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch!; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort!batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +*abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch*; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort*batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +(abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch(; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort(batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +)abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch); +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort)batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +-abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch-; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort-batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT ++abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch+; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort+batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch-#; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort-#batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +/abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch/; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort/batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +\abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch\; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort\batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +?abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch?; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort?batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch-/; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort-/batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch/#; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort/#batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-abort batch; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort batch/-; +NEW_CONNECTION; +start batch ddl; +@EXPECT EXCEPTION INVALID_ARGUMENT +abort/-batch; +NEW_CONNECTION; +set autocommit = true; +NEW_CONNECTION; +SET AUTOCOMMIT = TRUE; +NEW_CONNECTION; +set autocommit = true; +NEW_CONNECTION; + set autocommit = true; +NEW_CONNECTION; + set autocommit = true; +NEW_CONNECTION; + + + +set autocommit = true; +NEW_CONNECTION; +set autocommit = true ; +NEW_CONNECTION; +set autocommit = true ; +NEW_CONNECTION; +set autocommit = true + +; +NEW_CONNECTION; +set autocommit = true; +NEW_CONNECTION; +set autocommit = true; +NEW_CONNECTION; +set +autocommit += +true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =%true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =_true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =&true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =$true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =@true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =!true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =*true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =(true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =)true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =-true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =+true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =-#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =\true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =?true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =-/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =/#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set autocommit = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = true/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =/-true; +NEW_CONNECTION; +set autocommit = false; +NEW_CONNECTION; +SET AUTOCOMMIT = FALSE; +NEW_CONNECTION; +set autocommit = false; +NEW_CONNECTION; + set autocommit = false; +NEW_CONNECTION; + set autocommit = false; +NEW_CONNECTION; + + + +set autocommit = false; +NEW_CONNECTION; +set autocommit = false ; +NEW_CONNECTION; +set autocommit = false ; +NEW_CONNECTION; +set autocommit = false + +; +NEW_CONNECTION; +set autocommit = false; +NEW_CONNECTION; +set autocommit = false; +NEW_CONNECTION; +set +autocommit += +false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =%false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =_false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =&false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =$false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =@false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =!false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =*false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =(false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =)false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =-false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =+false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =-#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =\false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =?false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =-/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =/#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set autocommit = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit = false/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit =/-false; +NEW_CONNECTION; +set autocommit to true; +NEW_CONNECTION; +SET AUTOCOMMIT TO TRUE; +NEW_CONNECTION; +set autocommit to true; +NEW_CONNECTION; + set autocommit to true; +NEW_CONNECTION; + set autocommit to true; +NEW_CONNECTION; + + + +set autocommit to true; +NEW_CONNECTION; +set autocommit to true ; +NEW_CONNECTION; +set autocommit to true ; +NEW_CONNECTION; +set autocommit to true + +; +NEW_CONNECTION; +set autocommit to true; +NEW_CONNECTION; +set autocommit to true; +NEW_CONNECTION; +set +autocommit +to +true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to%true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to_true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to&true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to$true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to@true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to!true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to*true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to(true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to)true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to-true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to+true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to-#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to\true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to?true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to-/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to/#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set autocommit to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to true/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to/-true; +NEW_CONNECTION; +set autocommit to false; +NEW_CONNECTION; +SET AUTOCOMMIT TO FALSE; +NEW_CONNECTION; +set autocommit to false; +NEW_CONNECTION; + set autocommit to false; +NEW_CONNECTION; + set autocommit to false; +NEW_CONNECTION; + + + +set autocommit to false; +NEW_CONNECTION; +set autocommit to false ; +NEW_CONNECTION; +set autocommit to false ; +NEW_CONNECTION; +set autocommit to false + +; +NEW_CONNECTION; +set autocommit to false; +NEW_CONNECTION; +set autocommit to false; +NEW_CONNECTION; +set +autocommit +to +false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to%false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to_false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to&false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to$false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to@false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to!false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to*false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to(false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to)false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to-false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to+false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to-#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to\false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to?false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to-/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to/#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set autocommit to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to false/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set autocommit to/-false; +NEW_CONNECTION; +set spanner.readonly = true; +NEW_CONNECTION; +SET SPANNER.READONLY = TRUE; +NEW_CONNECTION; +set spanner.readonly = true; +NEW_CONNECTION; + set spanner.readonly = true; +NEW_CONNECTION; + set spanner.readonly = true; +NEW_CONNECTION; + + + +set spanner.readonly = true; +NEW_CONNECTION; +set spanner.readonly = true ; +NEW_CONNECTION; +set spanner.readonly = true ; +NEW_CONNECTION; +set spanner.readonly = true + +; +NEW_CONNECTION; +set spanner.readonly = true; +NEW_CONNECTION; +set spanner.readonly = true; +NEW_CONNECTION; +set +spanner.readonly += +true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =%true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =_true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =&true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =$true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =@true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =!true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =*true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =(true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =)true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =-true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =+true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =-#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =\true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =?true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =-/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =/#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.readonly = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = true/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =/-true; +NEW_CONNECTION; +set spanner.readonly = false; +NEW_CONNECTION; +SET SPANNER.READONLY = FALSE; +NEW_CONNECTION; +set spanner.readonly = false; +NEW_CONNECTION; + set spanner.readonly = false; +NEW_CONNECTION; + set spanner.readonly = false; +NEW_CONNECTION; + + + +set spanner.readonly = false; +NEW_CONNECTION; +set spanner.readonly = false ; +NEW_CONNECTION; +set spanner.readonly = false ; +NEW_CONNECTION; +set spanner.readonly = false + +; +NEW_CONNECTION; +set spanner.readonly = false; +NEW_CONNECTION; +set spanner.readonly = false; +NEW_CONNECTION; +set +spanner.readonly += +false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =%false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =_false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =&false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =$false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =@false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =!false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =*false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =(false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =)false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =-false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =+false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =-#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =\false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =?false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =-/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =/#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.readonly = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly = false/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly =/-false; +NEW_CONNECTION; +set spanner.readonly to true; +NEW_CONNECTION; +SET SPANNER.READONLY TO TRUE; +NEW_CONNECTION; +set spanner.readonly to true; +NEW_CONNECTION; + set spanner.readonly to true; +NEW_CONNECTION; + set spanner.readonly to true; +NEW_CONNECTION; + + + +set spanner.readonly to true; +NEW_CONNECTION; +set spanner.readonly to true ; +NEW_CONNECTION; +set spanner.readonly to true ; +NEW_CONNECTION; +set spanner.readonly to true + +; +NEW_CONNECTION; +set spanner.readonly to true; +NEW_CONNECTION; +set spanner.readonly to true; +NEW_CONNECTION; +set +spanner.readonly +to +true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to%true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to_true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to&true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to$true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to@true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to!true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to*true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to(true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to)true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to-true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to+true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to-#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to\true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to?true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to-/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to/#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.readonly to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to true/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to/-true; +NEW_CONNECTION; +set spanner.readonly to false; +NEW_CONNECTION; +SET SPANNER.READONLY TO FALSE; +NEW_CONNECTION; +set spanner.readonly to false; +NEW_CONNECTION; + set spanner.readonly to false; +NEW_CONNECTION; + set spanner.readonly to false; +NEW_CONNECTION; + + + +set spanner.readonly to false; +NEW_CONNECTION; +set spanner.readonly to false ; +NEW_CONNECTION; +set spanner.readonly to false ; +NEW_CONNECTION; +set spanner.readonly to false + +; +NEW_CONNECTION; +set spanner.readonly to false; +NEW_CONNECTION; +set spanner.readonly to false; +NEW_CONNECTION; +set +spanner.readonly +to +false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to%false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to_false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to&false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to$false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to@false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to!false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to*false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to(false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to)false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to-false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to+false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to-#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to\false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to?false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to-/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to/#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.readonly to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to false/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.readonly to/-false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +SET SPANNER.RETRY_ABORTS_INTERNALLY = TRUE; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + + + +set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = true ; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = true ; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = true + +; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set +spanner.retry_aborts_internally += +true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true bar; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true%; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =%true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true_; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =_true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true&; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =&true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true$; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =$true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true@; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =@true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true!; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =!true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true*; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =*true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true(; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =(true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true); +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =)true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true-; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =-true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true+; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =+true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true-#; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =-#true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true/; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =/true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true\; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =\true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true?; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =?true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true-/; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =-/true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true/#; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =/#true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.retry_aborts_internally = true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = true/-; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =/-true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +SET SPANNER.RETRY_ABORTS_INTERNALLY = FALSE; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + + + +set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = false ; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = false ; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = false + +; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set +spanner.retry_aborts_internally += +false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false bar; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false%; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =%false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false_; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =_false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false&; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =&false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false$; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =$false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false@; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =@false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false!; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =!false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false*; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =*false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false(; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =(false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false); +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =)false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false-; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =-false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false+; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =+false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false-#; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =-#false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false/; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =/false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false\; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =\false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false?; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =?false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false-/; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =-/false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false/#; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =/#false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.retry_aborts_internally = false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally = false/-; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally =/-false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +SET SPANNER.RETRY_ABORTS_INTERNALLY TO TRUE; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + + + +set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to true ; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to true ; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to true + +; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set +spanner.retry_aborts_internally +to +true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true bar; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true%; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to%true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true_; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to_true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true&; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to&true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true$; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to$true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true@; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to@true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true!; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to!true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true*; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to*true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true(; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to(true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true); +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to)true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true-; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to-true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true+; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to+true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true-#; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to-#true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true/; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to/true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true\; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to\true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true?; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to?true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true-/; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to-/true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true/#; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to/#true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.retry_aborts_internally to true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to true/-; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to/-true; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +SET SPANNER.RETRY_ABORTS_INTERNALLY TO FALSE; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; + + + +set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to false ; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to false ; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to false + +; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +set +spanner.retry_aborts_internally +to +false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false bar; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false%; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to%false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false_; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to_false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false&; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to&false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false$; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to$false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false@; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to@false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false!; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to!false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false*; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to*false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false(; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to(false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false); +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to)false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false-; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to-false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false+; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to+false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false-#; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to-#false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false/; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to/false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false\; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to\false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false?; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to?false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false-/; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to-/false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false/#; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to/#false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.retry_aborts_internally to false; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to false/-; +NEW_CONNECTION; +set spanner.readonly = false; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.retry_aborts_internally to/-false; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='partitioned_non_atomic'; +NEW_CONNECTION; + set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; + set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; + + + +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC' ; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC' ; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC' + +; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set +spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.autocommit_dml_mode='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +SET SPANNER.AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='transactional'; +NEW_CONNECTION; + set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; + set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; + + + +set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='TRANSACTIONAL' ; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='TRANSACTIONAL' ; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='TRANSACTIONAL' + +; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +set +spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode='TRANSACTIONAL'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.autocommit_dml_mode='TRANSACTIONAL'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.AUTOCOMMIT_DML_MODE TO 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'partitioned_non_atomic'; +NEW_CONNECTION; + set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; + set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; + + + +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC' ; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC' ; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC' + +; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set +spanner.autocommit_dml_mode +to +'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to%'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to_'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to&'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to$'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to@'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to!'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to*'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to('PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to)'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to-'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to+'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to-#'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to/'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to\'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to?'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to-/'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to/#'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'PARTITIONED_NON_ATOMIC'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to/-'PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +SET SPANNER.AUTOCOMMIT_DML_MODE TO 'TRANSACTIONAL'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'transactional'; +NEW_CONNECTION; + set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; + set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; + + + +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'TRANSACTIONAL' ; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'TRANSACTIONAL' ; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'TRANSACTIONAL' + +; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +set +spanner.autocommit_dml_mode +to +'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to%'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to_'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to&'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to$'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to@'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to!'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to*'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to('TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to)'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to-'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to+'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to-#'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to/'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to\'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to?'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to-/'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to/#'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.autocommit_dml_mode to 'TRANSACTIONAL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to 'TRANSACTIONAL'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.autocommit_dml_mode to/-'TRANSACTIONAL'; +NEW_CONNECTION; +set statement_timeout=default; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT=DEFAULT; +NEW_CONNECTION; +set statement_timeout=default; +NEW_CONNECTION; + set statement_timeout=default; +NEW_CONNECTION; + set statement_timeout=default; +NEW_CONNECTION; + + + +set statement_timeout=default; +NEW_CONNECTION; +set statement_timeout=default ; +NEW_CONNECTION; +set statement_timeout=default ; +NEW_CONNECTION; +set statement_timeout=default + +; +NEW_CONNECTION; +set statement_timeout=default; +NEW_CONNECTION; +set statement_timeout=default; +NEW_CONNECTION; +set +statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout=default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-statement_timeout=default; +NEW_CONNECTION; +set statement_timeout='1s'; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT='1S'; +NEW_CONNECTION; +set statement_timeout='1s'; +NEW_CONNECTION; + set statement_timeout='1s'; +NEW_CONNECTION; + set statement_timeout='1s'; +NEW_CONNECTION; + + + +set statement_timeout='1s'; +NEW_CONNECTION; +set statement_timeout='1s' ; +NEW_CONNECTION; +set statement_timeout='1s' ; +NEW_CONNECTION; +set statement_timeout='1s' + +; +NEW_CONNECTION; +set statement_timeout='1s'; +NEW_CONNECTION; +set statement_timeout='1s'; +NEW_CONNECTION; +set +statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout='1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='1s'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-statement_timeout='1s'; +NEW_CONNECTION; +set statement_timeout='100ms'; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT='100MS'; +NEW_CONNECTION; +set statement_timeout='100ms'; +NEW_CONNECTION; + set statement_timeout='100ms'; +NEW_CONNECTION; + set statement_timeout='100ms'; +NEW_CONNECTION; + + + +set statement_timeout='100ms'; +NEW_CONNECTION; +set statement_timeout='100ms' ; +NEW_CONNECTION; +set statement_timeout='100ms' ; +NEW_CONNECTION; +set statement_timeout='100ms' + +; +NEW_CONNECTION; +set statement_timeout='100ms'; +NEW_CONNECTION; +set statement_timeout='100ms'; +NEW_CONNECTION; +set +statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout='100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='100ms'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-statement_timeout='100ms'; +NEW_CONNECTION; +set statement_timeout=100; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT=100; +NEW_CONNECTION; +set statement_timeout=100; +NEW_CONNECTION; + set statement_timeout=100; +NEW_CONNECTION; + set statement_timeout=100; +NEW_CONNECTION; + + + +set statement_timeout=100; +NEW_CONNECTION; +set statement_timeout=100 ; +NEW_CONNECTION; +set statement_timeout=100 ; +NEW_CONNECTION; +set statement_timeout=100 + +; +NEW_CONNECTION; +set statement_timeout=100; +NEW_CONNECTION; +set statement_timeout=100; +NEW_CONNECTION; +set +statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100 bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout=100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout=100/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-statement_timeout=100; +NEW_CONNECTION; +set statement_timeout='10000us'; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT='10000US'; +NEW_CONNECTION; +set statement_timeout='10000us'; +NEW_CONNECTION; + set statement_timeout='10000us'; +NEW_CONNECTION; + set statement_timeout='10000us'; +NEW_CONNECTION; + + + +set statement_timeout='10000us'; +NEW_CONNECTION; +set statement_timeout='10000us' ; +NEW_CONNECTION; +set statement_timeout='10000us' ; +NEW_CONNECTION; +set statement_timeout='10000us' + +; +NEW_CONNECTION; +set statement_timeout='10000us'; +NEW_CONNECTION; +set statement_timeout='10000us'; +NEW_CONNECTION; +set +statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout='10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='10000us'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-statement_timeout='10000us'; +NEW_CONNECTION; +set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT='9223372036854775807NS'; +NEW_CONNECTION; +set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; + set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; + set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; + + + +set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +set statement_timeout='9223372036854775807ns' ; +NEW_CONNECTION; +set statement_timeout='9223372036854775807ns' ; +NEW_CONNECTION; +set statement_timeout='9223372036854775807ns' + +; +NEW_CONNECTION; +set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +set +statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout='9223372036854775807ns'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-statement_timeout='9223372036854775807ns'; +NEW_CONNECTION; +set statement_timeout to default; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT TO DEFAULT; +NEW_CONNECTION; +set statement_timeout to default; +NEW_CONNECTION; + set statement_timeout to default; +NEW_CONNECTION; + set statement_timeout to default; +NEW_CONNECTION; + + + +set statement_timeout to default; +NEW_CONNECTION; +set statement_timeout to default ; +NEW_CONNECTION; +set statement_timeout to default ; +NEW_CONNECTION; +set statement_timeout to default + +; +NEW_CONNECTION; +set statement_timeout to default; +NEW_CONNECTION; +set statement_timeout to default; +NEW_CONNECTION; +set +statement_timeout +to +default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to%default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to_default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to&default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to$default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to@default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to!default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to*default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to(default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to)default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to+default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to\default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to?default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout to default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/-default; +NEW_CONNECTION; +set statement_timeout to '1s'; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT TO '1S'; +NEW_CONNECTION; +set statement_timeout to '1s'; +NEW_CONNECTION; + set statement_timeout to '1s'; +NEW_CONNECTION; + set statement_timeout to '1s'; +NEW_CONNECTION; + + + +set statement_timeout to '1s'; +NEW_CONNECTION; +set statement_timeout to '1s' ; +NEW_CONNECTION; +set statement_timeout to '1s' ; +NEW_CONNECTION; +set statement_timeout to '1s' + +; +NEW_CONNECTION; +set statement_timeout to '1s'; +NEW_CONNECTION; +set statement_timeout to '1s'; +NEW_CONNECTION; +set +statement_timeout +to +'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to%'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to_'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to&'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to$'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to@'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to!'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to*'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to('1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to)'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to+'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-#'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to\'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to?'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-/'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/#'1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout to '1s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '1s'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/-'1s'; +NEW_CONNECTION; +set statement_timeout to '100ms'; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT TO '100MS'; +NEW_CONNECTION; +set statement_timeout to '100ms'; +NEW_CONNECTION; + set statement_timeout to '100ms'; +NEW_CONNECTION; + set statement_timeout to '100ms'; +NEW_CONNECTION; + + + +set statement_timeout to '100ms'; +NEW_CONNECTION; +set statement_timeout to '100ms' ; +NEW_CONNECTION; +set statement_timeout to '100ms' ; +NEW_CONNECTION; +set statement_timeout to '100ms' + +; +NEW_CONNECTION; +set statement_timeout to '100ms'; +NEW_CONNECTION; +set statement_timeout to '100ms'; +NEW_CONNECTION; +set +statement_timeout +to +'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to%'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to_'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to&'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to$'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to@'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to!'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to*'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to('100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to)'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to+'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-#'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to\'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to?'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-/'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/#'100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout to '100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '100ms'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/-'100ms'; +NEW_CONNECTION; +set statement_timeout to 100; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT TO 100; +NEW_CONNECTION; +set statement_timeout to 100; +NEW_CONNECTION; + set statement_timeout to 100; +NEW_CONNECTION; + set statement_timeout to 100; +NEW_CONNECTION; + + + +set statement_timeout to 100; +NEW_CONNECTION; +set statement_timeout to 100 ; +NEW_CONNECTION; +set statement_timeout to 100 ; +NEW_CONNECTION; +set statement_timeout to 100 + +; +NEW_CONNECTION; +set statement_timeout to 100; +NEW_CONNECTION; +set statement_timeout to 100; +NEW_CONNECTION; +set +statement_timeout +to +100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100 bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to%100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to_100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to&100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to$100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to@100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to!100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to*100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to(100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to)100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to+100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-#100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to\100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to?100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-/100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/#100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout to 100; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to 100/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/-100; +NEW_CONNECTION; +set statement_timeout to '10000us'; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT TO '10000US'; +NEW_CONNECTION; +set statement_timeout to '10000us'; +NEW_CONNECTION; + set statement_timeout to '10000us'; +NEW_CONNECTION; + set statement_timeout to '10000us'; +NEW_CONNECTION; + + + +set statement_timeout to '10000us'; +NEW_CONNECTION; +set statement_timeout to '10000us' ; +NEW_CONNECTION; +set statement_timeout to '10000us' ; +NEW_CONNECTION; +set statement_timeout to '10000us' + +; +NEW_CONNECTION; +set statement_timeout to '10000us'; +NEW_CONNECTION; +set statement_timeout to '10000us'; +NEW_CONNECTION; +set +statement_timeout +to +'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to%'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to_'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to&'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to$'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to@'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to!'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to*'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to('10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to)'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to+'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-#'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to\'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to?'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-/'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/#'10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout to '10000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '10000us'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/-'10000us'; +NEW_CONNECTION; +set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +SET STATEMENT_TIMEOUT TO '9223372036854775807NS'; +NEW_CONNECTION; +set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; + set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; + set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; + + + +set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +set statement_timeout to '9223372036854775807ns' ; +NEW_CONNECTION; +set statement_timeout to '9223372036854775807ns' ; +NEW_CONNECTION; +set statement_timeout to '9223372036854775807ns' + +; +NEW_CONNECTION; +set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +set +statement_timeout +to +'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to%'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to_'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to&'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to$'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to@'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to!'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to*'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to('9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to)'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to+'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-#'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to\'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to?'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to-/'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/#'9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set statement_timeout to '9223372036854775807ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to '9223372036854775807ns'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set statement_timeout to/-'9223372036854775807ns'; +NEW_CONNECTION; +set autocommit = false; +set transaction read only; +NEW_CONNECTION; +set autocommit = false; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +set autocommit = false; +set transaction read only; +NEW_CONNECTION; +set autocommit = false; + set transaction read only; +NEW_CONNECTION; +set autocommit = false; + set transaction read only; +NEW_CONNECTION; +set autocommit = false; + + + +set transaction read only; +NEW_CONNECTION; +set autocommit = false; +set transaction read only ; +NEW_CONNECTION; +set autocommit = false; +set transaction read only ; +NEW_CONNECTION; +set autocommit = false; +set transaction read only + +; +NEW_CONNECTION; +set autocommit = false; +set transaction read only; +NEW_CONNECTION; +set autocommit = false; +set transaction read only; +NEW_CONNECTION; +set autocommit = false; +set +transaction +read +only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read%only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read_only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read&only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read$only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read@only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read!only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read*only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read(only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read)only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read-only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read+only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read-#only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read/only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read\only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read?only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read-/only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read/#only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set transaction read only; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read only/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read/-only; +NEW_CONNECTION; +set autocommit = false; +set transaction read write; +NEW_CONNECTION; +set autocommit = false; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +set autocommit = false; +set transaction read write; +NEW_CONNECTION; +set autocommit = false; + set transaction read write; +NEW_CONNECTION; +set autocommit = false; + set transaction read write; +NEW_CONNECTION; +set autocommit = false; + + + +set transaction read write; +NEW_CONNECTION; +set autocommit = false; +set transaction read write ; +NEW_CONNECTION; +set autocommit = false; +set transaction read write ; +NEW_CONNECTION; +set autocommit = false; +set transaction read write + +; +NEW_CONNECTION; +set autocommit = false; +set transaction read write; +NEW_CONNECTION; +set autocommit = false; +set transaction read write; +NEW_CONNECTION; +set autocommit = false; +set +transaction +read +write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read%write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read_write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read&write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read$write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read@write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read!write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read*write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read(write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read)write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read-write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read+write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read-#write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read/write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read\write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read?write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read-/write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read/#write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set transaction read write; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read write/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction read/-write; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +SET TRANSACTION ISOLATION LEVEL DEFAULT; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; + set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; + set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; + + + +set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level default ; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level default ; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level default + +; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +set +transaction +isolation +level +default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level%default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level_default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level&default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level$default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level@default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level!default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level*default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level(default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level)default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level-default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level+default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level-#default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level/default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level\default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level?default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level-/default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level/#default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set transaction isolation level default; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level default/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level/-default; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; + set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; + set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; + + + +set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level serializable ; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level serializable ; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level serializable + +; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +set +transaction +isolation +level +serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level%serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level_serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level&serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level$serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level@serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level!serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level*serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level(serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level)serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level-serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level+serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level-#serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level/serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level\serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level?serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level-/serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level/#serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set transaction isolation level serializable; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level serializable/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set transaction isolation level/-serializable; +NEW_CONNECTION; +set session characteristics as transaction read only; +NEW_CONNECTION; +SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY; +NEW_CONNECTION; +set session characteristics as transaction read only; +NEW_CONNECTION; + set session characteristics as transaction read only; +NEW_CONNECTION; + set session characteristics as transaction read only; +NEW_CONNECTION; + + + +set session characteristics as transaction read only; +NEW_CONNECTION; +set session characteristics as transaction read only ; +NEW_CONNECTION; +set session characteristics as transaction read only ; +NEW_CONNECTION; +set session characteristics as transaction read only + +; +NEW_CONNECTION; +set session characteristics as transaction read only; +NEW_CONNECTION; +set session characteristics as transaction read only; +NEW_CONNECTION; +set +session +characteristics +as +transaction +read +only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read%only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read_only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read&only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read$only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read@only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read!only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read*only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read(only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read)only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read-only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read+only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read-#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read\only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read?only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read-/only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read/#only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set session characteristics as transaction read only; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read only/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read/-only; +NEW_CONNECTION; +set session characteristics as transaction read write; +NEW_CONNECTION; +SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE; +NEW_CONNECTION; +set session characteristics as transaction read write; +NEW_CONNECTION; + set session characteristics as transaction read write; +NEW_CONNECTION; + set session characteristics as transaction read write; +NEW_CONNECTION; + + + +set session characteristics as transaction read write; +NEW_CONNECTION; +set session characteristics as transaction read write ; +NEW_CONNECTION; +set session characteristics as transaction read write ; +NEW_CONNECTION; +set session characteristics as transaction read write + +; +NEW_CONNECTION; +set session characteristics as transaction read write; +NEW_CONNECTION; +set session characteristics as transaction read write; +NEW_CONNECTION; +set +session +characteristics +as +transaction +read +write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read%write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read_write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read&write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read$write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read@write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read!write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read*write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read(write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read)write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read-write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read+write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read-#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read\write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read?write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read-/write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read/#write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set session characteristics as transaction read write; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read write/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction read/-write; +NEW_CONNECTION; +set session characteristics as transaction isolation level default; +NEW_CONNECTION; +SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL DEFAULT; +NEW_CONNECTION; +set session characteristics as transaction isolation level default; +NEW_CONNECTION; + set session characteristics as transaction isolation level default; +NEW_CONNECTION; + set session characteristics as transaction isolation level default; +NEW_CONNECTION; + + + +set session characteristics as transaction isolation level default; +NEW_CONNECTION; +set session characteristics as transaction isolation level default ; +NEW_CONNECTION; +set session characteristics as transaction isolation level default ; +NEW_CONNECTION; +set session characteristics as transaction isolation level default + +; +NEW_CONNECTION; +set session characteristics as transaction isolation level default; +NEW_CONNECTION; +set session characteristics as transaction isolation level default; +NEW_CONNECTION; +set +session +characteristics +as +transaction +isolation +level +default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level%default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level_default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level&default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level$default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level@default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level!default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level*default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level(default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level)default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level-default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level+default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level-#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level\default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level?default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level-/default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level/#default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set session characteristics as transaction isolation level default; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level default/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level/-default; +NEW_CONNECTION; +set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE; +NEW_CONNECTION; +set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; + set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; + set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; + + + +set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +set session characteristics as transaction isolation level serializable ; +NEW_CONNECTION; +set session characteristics as transaction isolation level serializable ; +NEW_CONNECTION; +set session characteristics as transaction isolation level serializable + +; +NEW_CONNECTION; +set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +set +session +characteristics +as +transaction +isolation +level +serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level%serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level_serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level&serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level$serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level@serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level!serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level*serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level(serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level)serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level-serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level+serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level-#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level\serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level?serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level-/serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level/#serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set session characteristics as transaction isolation level serializable; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level serializable/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set session characteristics as transaction isolation level/-serializable; +NEW_CONNECTION; +set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +NEW_CONNECTION; +set spanner.read_only_staleness='strong'; +NEW_CONNECTION; + set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; + set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +set spanner.read_only_staleness='STRONG' ; +NEW_CONNECTION; +set spanner.read_only_staleness='STRONG' ; +NEW_CONNECTION; +set spanner.read_only_staleness='STRONG' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +set +spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='STRONG'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.read_only_staleness='STRONG'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set spanner.read_only_staleness='min_read_timestamp 2018-01-02t03:04:05.123-08:00'; +NEW_CONNECTION; + set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; + set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set +spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP%2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP_2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP&2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP$2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP@2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP!2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP*2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP(2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP)2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP+2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-#2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP\2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP?2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-/2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/#2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/-2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set spanner.read_only_staleness='min_read_timestamp 2018-01-02t03:04:05.123z'; +NEW_CONNECTION; + set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; + set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set +spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP%2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP_2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP&2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP$2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP@2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP!2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP*2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP(2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP)2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP+2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-#2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP\2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP?2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-/2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/#2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/-2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set spanner.read_only_staleness='min_read_timestamp 2018-01-02t03:04:05.123+07:45'; +NEW_CONNECTION; + set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; + set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set +spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP%2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP_2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP&2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP$2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP@2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP!2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP*2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP(2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP)2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP+2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-#2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP\2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP?2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP-/2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/#2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MIN_READ_TIMESTAMP/-2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set spanner.read_only_staleness='read_timestamp 2018-01-02t03:04:05.54321-07:00'; +NEW_CONNECTION; + set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; + set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00' ; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00' ; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set +spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP%2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP_2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP&2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP$2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP@2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP!2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP*2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP(2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP)2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP+2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-#2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP\2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP?2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-/2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/#2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/-2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set spanner.read_only_staleness='read_timestamp 2018-01-02t03:04:05.54321z'; +NEW_CONNECTION; + set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; + set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z' ; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z' ; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set +spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP%2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP_2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP&2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP$2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP@2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP!2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP*2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP(2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP)2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP+2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-#2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP\2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP?2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-/2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/#2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/-2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set spanner.read_only_staleness='read_timestamp 2018-01-02t03:04:05.54321+05:30'; +NEW_CONNECTION; + set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; + set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30' ; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30' ; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set +spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP%2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP_2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP&2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP$2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP@2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP!2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP*2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP(2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP)2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP+2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-#2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP\2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP?2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP-/2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/#2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='READ_TIMESTAMP/-2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 12S'; +NEW_CONNECTION; +set spanner.read_only_staleness='max_staleness 12s'; +NEW_CONNECTION; + set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; + set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 12s' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 12s' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 12s' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +set +spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS%12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS_12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS&12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS$12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS@12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS!12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS*12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS(12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS)12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS+12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-#12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS\12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS?12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-/12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/#12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 12s'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/-12s'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100MS'; +NEW_CONNECTION; +set spanner.read_only_staleness='max_staleness 100ms'; +NEW_CONNECTION; + set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; + set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 100ms' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 100ms' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 100ms' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +set +spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS%100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS_100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS&100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS$100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS@100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS!100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS*100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS(100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS)100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS+100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-#100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS\100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS?100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-/100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/#100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 100ms'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/-100ms'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 99999US'; +NEW_CONNECTION; +set spanner.read_only_staleness='max_staleness 99999us'; +NEW_CONNECTION; + set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; + set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 99999us' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 99999us' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 99999us' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +set +spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS%99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS_99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS&99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS$99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS@99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS!99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS*99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS(99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS)99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS+99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-#99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS\99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS?99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-/99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/#99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 99999us'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/-99999us'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10NS'; +NEW_CONNECTION; +set spanner.read_only_staleness='max_staleness 10ns'; +NEW_CONNECTION; + set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; + set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 10ns' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 10ns' ; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 10ns' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +set +spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS%10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS_10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS&10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS$10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS@10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS!10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS*10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS(10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS)10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS+10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-#10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS\10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS?10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS-/10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/#10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS 10ns'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='MAX_STALENESS/-10ns'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 15S'; +NEW_CONNECTION; +set spanner.read_only_staleness='exact_staleness 15s'; +NEW_CONNECTION; + set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; + set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15s' ; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15s' ; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15s' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +set +spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS%15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS_15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS&15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS$15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS@15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS!15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS*15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS(15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS)15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS+15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-#15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS\15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS?15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-/15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/#15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15s'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/-15s'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1500MS'; +NEW_CONNECTION; +set spanner.read_only_staleness='exact_staleness 1500ms'; +NEW_CONNECTION; + set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; + set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 1500ms' ; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 1500ms' ; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 1500ms' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +set +spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS%1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS_1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS&1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS$1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS@1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS!1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS*1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS(1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS)1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS+1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-#1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS\1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS?1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-/1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/#1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 1500ms'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/-1500ms'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 15000000US'; +NEW_CONNECTION; +set spanner.read_only_staleness='exact_staleness 15000000us'; +NEW_CONNECTION; + set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; + set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15000000us' ; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15000000us' ; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15000000us' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +set +spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS%15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS_15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS&15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS$15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS@15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS!15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS*15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS(15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS)15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS+15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-#15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS\15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS?15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-/15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/#15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 15000000us'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/-15000000us'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 9999NS'; +NEW_CONNECTION; +set spanner.read_only_staleness='exact_staleness 9999ns'; +NEW_CONNECTION; + set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; + set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 9999ns' ; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 9999ns' ; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 9999ns' + +; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +set +spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS%9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS_9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS&9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS$9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS@9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS!9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS*9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS(9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS)9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS+9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-#9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS\9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS?9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS-/9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/#9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness='EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS 9999ns'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness='EXACT_STALENESS/-9999ns'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'STRONG'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'strong'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'STRONG' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'STRONG' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'STRONG' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to%'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to_'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to&'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to$'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to@'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to!'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to*'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to('STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to)'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to-'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to+'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to-#'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to/'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to\'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to?'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to-/'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to/#'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'STRONG'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'STRONG'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to/-'STRONG'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'min_read_timestamp 2018-01-02t03:04:05.123-08:00'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP%2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP_2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP&2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP$2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP@2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP!2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP*2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP(2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP)2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP+2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-#2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP\2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP?2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-/2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/#2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123-08:00'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/-2018-01-02T03:04:05.123-08:00'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'min_read_timestamp 2018-01-02t03:04:05.123z'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP%2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP_2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP&2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP$2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP@2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP!2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP*2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP(2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP)2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP+2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-#2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP\2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP?2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-/2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/#2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123Z'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/-2018-01-02T03:04:05.123Z'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'min_read_timestamp 2018-01-02t03:04:05.123+07:45'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP%2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP_2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP&2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP$2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP@2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP!2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP*2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP(2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP)2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP+2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-#2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP\2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP?2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP-/2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/#2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP 2018-01-02T03:04:05.123+07:45'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MIN_READ_TIMESTAMP/-2018-01-02T03:04:05.123+07:45'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'read_timestamp 2018-01-02t03:04:05.54321-07:00'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP%2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP_2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP&2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP$2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP@2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP!2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP*2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP(2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP)2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP+2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-#2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP\2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP?2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-/2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/#2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321-07:00'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/-2018-01-02T03:04:05.54321-07:00'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'read_timestamp 2018-01-02t03:04:05.54321z'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP%2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP_2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP&2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP$2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP@2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP!2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP*2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP(2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP)2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP+2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-#2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP\2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP?2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-/2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/#2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321Z'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/-2018-01-02T03:04:05.54321Z'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'read_timestamp 2018-01-02t03:04:05.54321+05:30'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP%2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP_2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP&2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP$2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP@2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP!2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP*2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP(2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP)2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP+2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-#2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP\2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP?2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP-/2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/#2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP 2018-01-02T03:04:05.54321+05:30'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'READ_TIMESTAMP/-2018-01-02T03:04:05.54321+05:30'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'MAX_STALENESS 12S'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'max_staleness 12s'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 12s' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 12s' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 12s' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS%12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS_12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS&12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS$12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS@12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS!12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS*12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS(12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS)12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS+12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-#12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS\12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS?12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-/12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/#12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'MAX_STALENESS 12s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 12s'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/-12s'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'MAX_STALENESS 100MS'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'max_staleness 100ms'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 100ms' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 100ms' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 100ms' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS%100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS_100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS&100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS$100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS@100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS!100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS*100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS(100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS)100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS+100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-#100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS\100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS?100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-/100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/#100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'MAX_STALENESS 100ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 100ms'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/-100ms'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'MAX_STALENESS 99999US'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'max_staleness 99999us'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 99999us' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 99999us' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 99999us' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS%99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS_99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS&99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS$99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS@99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS!99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS*99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS(99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS)99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS+99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-#99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS\99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS?99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-/99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/#99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'MAX_STALENESS 99999us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 99999us'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/-99999us'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'MAX_STALENESS 10NS'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'max_staleness 10ns'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 10ns' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 10ns' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 10ns' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS%10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS_10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS&10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS$10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS@10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS!10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS*10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS(10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS)10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS+10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-#10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS\10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS?10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS-/10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/#10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'MAX_STALENESS 10ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS 10ns'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'MAX_STALENESS/-10ns'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'EXACT_STALENESS 15S'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'exact_staleness 15s'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15s' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15s' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15s' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS%15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS_15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS&15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS$15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS@15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS!15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS*15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS(15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS)15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS+15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-#15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS\15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS?15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-/15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/#15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'EXACT_STALENESS 15s'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15s'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/-15s'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'EXACT_STALENESS 1500MS'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'exact_staleness 1500ms'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS%1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS_1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS&1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS$1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS@1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS!1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS*1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS(1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS)1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS+1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-#1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS\1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS?1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-/1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/#1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 1500ms'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/-1500ms'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'EXACT_STALENESS 15000000US'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'exact_staleness 15000000us'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS%15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS_15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS&15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS$15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS@15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS!15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS*15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS(15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS)15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS+15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-#15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS\15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS?15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-/15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/#15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 15000000us'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/-15000000us'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +SET SPANNER.READ_ONLY_STALENESS TO 'EXACT_STALENESS 9999NS'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'exact_staleness 9999ns'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; + set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; + + + +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns' ; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns' + +; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +set +spanner.read_only_staleness +to +'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS%9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS_9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS&9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS$9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS@9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS!9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS*9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS(9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS)9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS+9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-#9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS\9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS?9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS-/9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/#9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS 9999ns'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.read_only_staleness to 'EXACT_STALENESS/-9999ns'; +NEW_CONNECTION; +set spanner.optimizer_version='1'; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_VERSION='1'; +NEW_CONNECTION; +set spanner.optimizer_version='1'; +NEW_CONNECTION; + set spanner.optimizer_version='1'; +NEW_CONNECTION; + set spanner.optimizer_version='1'; +NEW_CONNECTION; + + + +set spanner.optimizer_version='1'; +NEW_CONNECTION; +set spanner.optimizer_version='1' ; +NEW_CONNECTION; +set spanner.optimizer_version='1' ; +NEW_CONNECTION; +set spanner.optimizer_version='1' + +; +NEW_CONNECTION; +set spanner.optimizer_version='1'; +NEW_CONNECTION; +set spanner.optimizer_version='1'; +NEW_CONNECTION; +set +spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_version='1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='1'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.optimizer_version='1'; +NEW_CONNECTION; +set spanner.optimizer_version='200'; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_VERSION='200'; +NEW_CONNECTION; +set spanner.optimizer_version='200'; +NEW_CONNECTION; + set spanner.optimizer_version='200'; +NEW_CONNECTION; + set spanner.optimizer_version='200'; +NEW_CONNECTION; + + + +set spanner.optimizer_version='200'; +NEW_CONNECTION; +set spanner.optimizer_version='200' ; +NEW_CONNECTION; +set spanner.optimizer_version='200' ; +NEW_CONNECTION; +set spanner.optimizer_version='200' + +; +NEW_CONNECTION; +set spanner.optimizer_version='200'; +NEW_CONNECTION; +set spanner.optimizer_version='200'; +NEW_CONNECTION; +set +spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_version='200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='200'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.optimizer_version='200'; +NEW_CONNECTION; +set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_VERSION='LATEST'; +NEW_CONNECTION; +set spanner.optimizer_version='latest'; +NEW_CONNECTION; + set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; + set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; + + + +set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +set spanner.optimizer_version='LATEST' ; +NEW_CONNECTION; +set spanner.optimizer_version='LATEST' ; +NEW_CONNECTION; +set spanner.optimizer_version='LATEST' + +; +NEW_CONNECTION; +set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +set +spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='LATEST'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.optimizer_version='LATEST'; +NEW_CONNECTION; +set spanner.optimizer_version=''; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_VERSION=''; +NEW_CONNECTION; +set spanner.optimizer_version=''; +NEW_CONNECTION; + set spanner.optimizer_version=''; +NEW_CONNECTION; + set spanner.optimizer_version=''; +NEW_CONNECTION; + + + +set spanner.optimizer_version=''; +NEW_CONNECTION; +set spanner.optimizer_version='' ; +NEW_CONNECTION; +set spanner.optimizer_version='' ; +NEW_CONNECTION; +set spanner.optimizer_version='' + +; +NEW_CONNECTION; +set spanner.optimizer_version=''; +NEW_CONNECTION; +set spanner.optimizer_version=''; +NEW_CONNECTION; +set +spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version='' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_version=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version=''/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.optimizer_version=''; +NEW_CONNECTION; +set spanner.optimizer_version to '1'; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_VERSION TO '1'; +NEW_CONNECTION; +set spanner.optimizer_version to '1'; +NEW_CONNECTION; + set spanner.optimizer_version to '1'; +NEW_CONNECTION; + set spanner.optimizer_version to '1'; +NEW_CONNECTION; + + + +set spanner.optimizer_version to '1'; +NEW_CONNECTION; +set spanner.optimizer_version to '1' ; +NEW_CONNECTION; +set spanner.optimizer_version to '1' ; +NEW_CONNECTION; +set spanner.optimizer_version to '1' + +; +NEW_CONNECTION; +set spanner.optimizer_version to '1'; +NEW_CONNECTION; +set spanner.optimizer_version to '1'; +NEW_CONNECTION; +set +spanner.optimizer_version +to +'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to%'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to_'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to&'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to$'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to@'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to!'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to*'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to('1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to)'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to+'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-#'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to\'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to?'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-/'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/#'1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_version to '1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '1'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/-'1'; +NEW_CONNECTION; +set spanner.optimizer_version to '200'; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_VERSION TO '200'; +NEW_CONNECTION; +set spanner.optimizer_version to '200'; +NEW_CONNECTION; + set spanner.optimizer_version to '200'; +NEW_CONNECTION; + set spanner.optimizer_version to '200'; +NEW_CONNECTION; + + + +set spanner.optimizer_version to '200'; +NEW_CONNECTION; +set spanner.optimizer_version to '200' ; +NEW_CONNECTION; +set spanner.optimizer_version to '200' ; +NEW_CONNECTION; +set spanner.optimizer_version to '200' + +; +NEW_CONNECTION; +set spanner.optimizer_version to '200'; +NEW_CONNECTION; +set spanner.optimizer_version to '200'; +NEW_CONNECTION; +set +spanner.optimizer_version +to +'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to%'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to_'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to&'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to$'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to@'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to!'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to*'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to('200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to)'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to+'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-#'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to\'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to?'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-/'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/#'200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_version to '200'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '200'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/-'200'; +NEW_CONNECTION; +set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_VERSION TO 'LATEST'; +NEW_CONNECTION; +set spanner.optimizer_version to 'latest'; +NEW_CONNECTION; + set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; + set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; + + + +set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +set spanner.optimizer_version to 'LATEST' ; +NEW_CONNECTION; +set spanner.optimizer_version to 'LATEST' ; +NEW_CONNECTION; +set spanner.optimizer_version to 'LATEST' + +; +NEW_CONNECTION; +set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +set +spanner.optimizer_version +to +'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to%'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to_'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to&'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to$'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to@'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to!'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to*'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to('LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to)'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to+'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-#'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to\'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to?'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-/'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/#'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_version to 'LATEST'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to 'LATEST'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/-'LATEST'; +NEW_CONNECTION; +set spanner.optimizer_version to ''; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_VERSION TO ''; +NEW_CONNECTION; +set spanner.optimizer_version to ''; +NEW_CONNECTION; + set spanner.optimizer_version to ''; +NEW_CONNECTION; + set spanner.optimizer_version to ''; +NEW_CONNECTION; + + + +set spanner.optimizer_version to ''; +NEW_CONNECTION; +set spanner.optimizer_version to '' ; +NEW_CONNECTION; +set spanner.optimizer_version to '' ; +NEW_CONNECTION; +set spanner.optimizer_version to '' + +; +NEW_CONNECTION; +set spanner.optimizer_version to ''; +NEW_CONNECTION; +set spanner.optimizer_version to ''; +NEW_CONNECTION; +set +spanner.optimizer_version +to +''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to '' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to%''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to_''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to&''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to$''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to@''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to!''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to*''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to(''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to)''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to+''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-#''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to\''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to?''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to-/''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/#''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_version to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to ''/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_version to/-''; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='AUTO_20191128_14_47_22UTC'; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='auto_20191128_14_47_22utc'; +NEW_CONNECTION; + set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; + set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; + + + +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC' ; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC' ; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC' + +; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +set +spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.optimizer_statistics_package='auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +NEW_CONNECTION; +set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; + set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; + set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; + + + +set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='' ; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='' ; +NEW_CONNECTION; +set spanner.optimizer_statistics_package='' + +; +NEW_CONNECTION; +set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +set +spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package='' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package=''/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.optimizer_statistics_package=''; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE TO 'AUTO_20191128_14_47_22UTC'; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22utc'; +NEW_CONNECTION; + set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; + set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; + + + +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC' ; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC' ; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC' + +; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +set +spanner.optimizer_statistics_package +to +'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to%'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to_'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to&'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to$'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to@'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to!'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to*'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to('auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to)'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to-'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to+'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to-#'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to/'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to\'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to?'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to-/'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to/#'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to 'auto_20191128_14_47_22UTC'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to/-'auto_20191128_14_47_22UTC'; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE TO ''; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; + set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; + set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; + + + +set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to '' ; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to '' ; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to '' + +; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +set +spanner.optimizer_statistics_package +to +''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to '' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to%''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to_''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to&''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to$''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to@''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to!''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to*''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to(''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to)''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to-''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to+''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to-#''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to/''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to\''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to?''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to-/''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to/#''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.optimizer_statistics_package to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to ''/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.optimizer_statistics_package to/-''; +NEW_CONNECTION; +set spanner.return_commit_stats = true; +NEW_CONNECTION; +SET SPANNER.RETURN_COMMIT_STATS = TRUE; +NEW_CONNECTION; +set spanner.return_commit_stats = true; +NEW_CONNECTION; + set spanner.return_commit_stats = true; +NEW_CONNECTION; + set spanner.return_commit_stats = true; +NEW_CONNECTION; + + + +set spanner.return_commit_stats = true; +NEW_CONNECTION; +set spanner.return_commit_stats = true ; +NEW_CONNECTION; +set spanner.return_commit_stats = true ; +NEW_CONNECTION; +set spanner.return_commit_stats = true + +; +NEW_CONNECTION; +set spanner.return_commit_stats = true; +NEW_CONNECTION; +set spanner.return_commit_stats = true; +NEW_CONNECTION; +set +spanner.return_commit_stats += +true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =%true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =_true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =&true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =$true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =@true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =!true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =*true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =(true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =)true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =-true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =+true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =-#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =\true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =?true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =-/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =/#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.return_commit_stats = true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = true/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =/-true; +NEW_CONNECTION; +set spanner.return_commit_stats = false; +NEW_CONNECTION; +SET SPANNER.RETURN_COMMIT_STATS = FALSE; +NEW_CONNECTION; +set spanner.return_commit_stats = false; +NEW_CONNECTION; + set spanner.return_commit_stats = false; +NEW_CONNECTION; + set spanner.return_commit_stats = false; +NEW_CONNECTION; + + + +set spanner.return_commit_stats = false; +NEW_CONNECTION; +set spanner.return_commit_stats = false ; +NEW_CONNECTION; +set spanner.return_commit_stats = false ; +NEW_CONNECTION; +set spanner.return_commit_stats = false + +; +NEW_CONNECTION; +set spanner.return_commit_stats = false; +NEW_CONNECTION; +set spanner.return_commit_stats = false; +NEW_CONNECTION; +set +spanner.return_commit_stats += +false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =%false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =_false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =&false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =$false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =@false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =!false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =*false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =(false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =)false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =-false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =+false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =-#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =\false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =?false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =-/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =/#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.return_commit_stats = false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats = false/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats =/-false; +NEW_CONNECTION; +set spanner.return_commit_stats to true; +NEW_CONNECTION; +SET SPANNER.RETURN_COMMIT_STATS TO TRUE; +NEW_CONNECTION; +set spanner.return_commit_stats to true; +NEW_CONNECTION; + set spanner.return_commit_stats to true; +NEW_CONNECTION; + set spanner.return_commit_stats to true; +NEW_CONNECTION; + + + +set spanner.return_commit_stats to true; +NEW_CONNECTION; +set spanner.return_commit_stats to true ; +NEW_CONNECTION; +set spanner.return_commit_stats to true ; +NEW_CONNECTION; +set spanner.return_commit_stats to true + +; +NEW_CONNECTION; +set spanner.return_commit_stats to true; +NEW_CONNECTION; +set spanner.return_commit_stats to true; +NEW_CONNECTION; +set +spanner.return_commit_stats +to +true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to%true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to_true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to&true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to$true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to@true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to!true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to*true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to(true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to)true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to-true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to+true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to-#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to\true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to?true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to-/true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to/#true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.return_commit_stats to true; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to true/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to/-true; +NEW_CONNECTION; +set spanner.return_commit_stats to false; +NEW_CONNECTION; +SET SPANNER.RETURN_COMMIT_STATS TO FALSE; +NEW_CONNECTION; +set spanner.return_commit_stats to false; +NEW_CONNECTION; + set spanner.return_commit_stats to false; +NEW_CONNECTION; + set spanner.return_commit_stats to false; +NEW_CONNECTION; + + + +set spanner.return_commit_stats to false; +NEW_CONNECTION; +set spanner.return_commit_stats to false ; +NEW_CONNECTION; +set spanner.return_commit_stats to false ; +NEW_CONNECTION; +set spanner.return_commit_stats to false + +; +NEW_CONNECTION; +set spanner.return_commit_stats to false; +NEW_CONNECTION; +set spanner.return_commit_stats to false; +NEW_CONNECTION; +set +spanner.return_commit_stats +to +false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to%false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to_false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to&false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to$false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to@false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to!false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to*false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to(false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to)false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to-false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to+false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to-#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to\false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to?false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to-/false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to/#false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.return_commit_stats to false; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to false/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.return_commit_stats to/-false; +NEW_CONNECTION; +set spanner.statement_tag='tag1'; +NEW_CONNECTION; +SET SPANNER.STATEMENT_TAG='TAG1'; +NEW_CONNECTION; +set spanner.statement_tag='tag1'; +NEW_CONNECTION; + set spanner.statement_tag='tag1'; +NEW_CONNECTION; + set spanner.statement_tag='tag1'; +NEW_CONNECTION; + + + +set spanner.statement_tag='tag1'; +NEW_CONNECTION; +set spanner.statement_tag='tag1' ; +NEW_CONNECTION; +set spanner.statement_tag='tag1' ; +NEW_CONNECTION; +set spanner.statement_tag='tag1' + +; +NEW_CONNECTION; +set spanner.statement_tag='tag1'; +NEW_CONNECTION; +set spanner.statement_tag='tag1'; +NEW_CONNECTION; +set +spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.statement_tag='tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag1'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.statement_tag='tag1'; +NEW_CONNECTION; +set spanner.statement_tag='tag2'; +NEW_CONNECTION; +SET SPANNER.STATEMENT_TAG='TAG2'; +NEW_CONNECTION; +set spanner.statement_tag='tag2'; +NEW_CONNECTION; + set spanner.statement_tag='tag2'; +NEW_CONNECTION; + set spanner.statement_tag='tag2'; +NEW_CONNECTION; + + + +set spanner.statement_tag='tag2'; +NEW_CONNECTION; +set spanner.statement_tag='tag2' ; +NEW_CONNECTION; +set spanner.statement_tag='tag2' ; +NEW_CONNECTION; +set spanner.statement_tag='tag2' + +; +NEW_CONNECTION; +set spanner.statement_tag='tag2'; +NEW_CONNECTION; +set spanner.statement_tag='tag2'; +NEW_CONNECTION; +set +spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.statement_tag='tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='tag2'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.statement_tag='tag2'; +NEW_CONNECTION; +set spanner.statement_tag=''; +NEW_CONNECTION; +SET SPANNER.STATEMENT_TAG=''; +NEW_CONNECTION; +set spanner.statement_tag=''; +NEW_CONNECTION; + set spanner.statement_tag=''; +NEW_CONNECTION; + set spanner.statement_tag=''; +NEW_CONNECTION; + + + +set spanner.statement_tag=''; +NEW_CONNECTION; +set spanner.statement_tag='' ; +NEW_CONNECTION; +set spanner.statement_tag='' ; +NEW_CONNECTION; +set spanner.statement_tag='' + +; +NEW_CONNECTION; +set spanner.statement_tag=''; +NEW_CONNECTION; +set spanner.statement_tag=''; +NEW_CONNECTION; +set +spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag='' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.statement_tag=''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag=''/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.statement_tag=''; +NEW_CONNECTION; +set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +SET SPANNER.STATEMENT_TAG TO 'TAG1'; +NEW_CONNECTION; +set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; + set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; + set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; + + + +set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +set spanner.statement_tag to 'tag1' ; +NEW_CONNECTION; +set spanner.statement_tag to 'tag1' ; +NEW_CONNECTION; +set spanner.statement_tag to 'tag1' + +; +NEW_CONNECTION; +set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +set +spanner.statement_tag +to +'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to%'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to_'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to&'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to$'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to@'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to!'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to*'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to('tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to)'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to+'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-#'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to\'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to?'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-/'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/#'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.statement_tag to 'tag1'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag1'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/-'tag1'; +NEW_CONNECTION; +set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +SET SPANNER.STATEMENT_TAG TO 'TAG2'; +NEW_CONNECTION; +set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; + set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; + set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; + + + +set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +set spanner.statement_tag to 'tag2' ; +NEW_CONNECTION; +set spanner.statement_tag to 'tag2' ; +NEW_CONNECTION; +set spanner.statement_tag to 'tag2' + +; +NEW_CONNECTION; +set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +set +spanner.statement_tag +to +'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to%'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to_'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to&'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to$'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to@'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to!'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to*'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to('tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to)'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to+'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-#'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to\'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to?'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-/'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/#'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.statement_tag to 'tag2'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to 'tag2'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/-'tag2'; +NEW_CONNECTION; +set spanner.statement_tag to ''; +NEW_CONNECTION; +SET SPANNER.STATEMENT_TAG TO ''; +NEW_CONNECTION; +set spanner.statement_tag to ''; +NEW_CONNECTION; + set spanner.statement_tag to ''; +NEW_CONNECTION; + set spanner.statement_tag to ''; +NEW_CONNECTION; + + + +set spanner.statement_tag to ''; +NEW_CONNECTION; +set spanner.statement_tag to '' ; +NEW_CONNECTION; +set spanner.statement_tag to '' ; +NEW_CONNECTION; +set spanner.statement_tag to '' + +; +NEW_CONNECTION; +set spanner.statement_tag to ''; +NEW_CONNECTION; +set spanner.statement_tag to ''; +NEW_CONNECTION; +set +spanner.statement_tag +to +''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to '' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to%''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to_''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to&''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to$''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to@''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to!''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to*''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to(''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to)''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to+''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-#''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to\''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to?''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to-/''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/#''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.statement_tag to ''; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to ''/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.statement_tag to/-''; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +SET SPANNER.TRANSACTION_TAG='TAG1'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; + + + +set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag1' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag1' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag1' + +; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +set +spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1' bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag1'/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.transaction_tag='tag1'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +SET SPANNER.TRANSACTION_TAG='TAG2'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; + + + +set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag2' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag2' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag2' + +; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +set +spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2' bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='tag2'/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.transaction_tag='tag2'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +SET SPANNER.TRANSACTION_TAG=''; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; + + + +set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag='' + +; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +set +spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag='' bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag=''/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.transaction_tag=''; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +SET SPANNER.TRANSACTION_TAG TO 'TAG1'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; + + + +set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag1' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag1' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag1' + +; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +set +spanner.transaction_tag +to +'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1' bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to%'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to_'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to&'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to$'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to@'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to!'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to*'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to('tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to)'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to+'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-#'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to\'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to?'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-/'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/#'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.transaction_tag to 'tag1'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag1'/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/-'tag1'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +SET SPANNER.TRANSACTION_TAG TO 'TAG2'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; + + + +set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag2' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag2' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag2' + +; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +set +spanner.transaction_tag +to +'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2' bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to%'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to_'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to&'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to$'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to@'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to!'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to*'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to('tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to)'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to+'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-#'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to\'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to?'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-/'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/#'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.transaction_tag to 'tag2'; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to 'tag2'/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/-'tag2'; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +SET SPANNER.TRANSACTION_TAG TO ''; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; + set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; + + + +set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to '' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to '' ; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to '' + +; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +set +spanner.transaction_tag +to +''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to '' bar; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''%; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to%''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''_; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to_''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''&; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to&''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''$; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to$''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''@; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to@''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''!; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to!''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''*; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to*''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''(; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to(''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''); +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to)''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''+; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to+''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''-#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-#''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''\; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to\''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''?; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to?''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''-/; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to-/''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''/#; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/#''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.transaction_tag to ''; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to ''/-; +NEW_CONNECTION; +set autocommit = false; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.transaction_tag to/-''; +NEW_CONNECTION; +set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +SET SPANNER.RPC_PRIORITY='HIGH'; +NEW_CONNECTION; +set spanner.rpc_priority='high'; +NEW_CONNECTION; + set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; + set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; + + + +set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +set spanner.rpc_priority='HIGH' ; +NEW_CONNECTION; +set spanner.rpc_priority='HIGH' ; +NEW_CONNECTION; +set spanner.rpc_priority='HIGH' + +; +NEW_CONNECTION; +set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +set +spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='HIGH'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.rpc_priority='HIGH'; +NEW_CONNECTION; +set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +SET SPANNER.RPC_PRIORITY='MEDIUM'; +NEW_CONNECTION; +set spanner.rpc_priority='medium'; +NEW_CONNECTION; + set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; + set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; + + + +set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +set spanner.rpc_priority='MEDIUM' ; +NEW_CONNECTION; +set spanner.rpc_priority='MEDIUM' ; +NEW_CONNECTION; +set spanner.rpc_priority='MEDIUM' + +; +NEW_CONNECTION; +set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +set +spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='MEDIUM'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.rpc_priority='MEDIUM'; +NEW_CONNECTION; +set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +SET SPANNER.RPC_PRIORITY='LOW'; +NEW_CONNECTION; +set spanner.rpc_priority='low'; +NEW_CONNECTION; + set spanner.rpc_priority='LOW'; +NEW_CONNECTION; + set spanner.rpc_priority='LOW'; +NEW_CONNECTION; + + + +set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +set spanner.rpc_priority='LOW' ; +NEW_CONNECTION; +set spanner.rpc_priority='LOW' ; +NEW_CONNECTION; +set spanner.rpc_priority='LOW' + +; +NEW_CONNECTION; +set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +set +spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.rpc_priority='LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='LOW'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.rpc_priority='LOW'; +NEW_CONNECTION; +set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +SET SPANNER.RPC_PRIORITY='NULL'; +NEW_CONNECTION; +set spanner.rpc_priority='null'; +NEW_CONNECTION; + set spanner.rpc_priority='NULL'; +NEW_CONNECTION; + set spanner.rpc_priority='NULL'; +NEW_CONNECTION; + + + +set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +set spanner.rpc_priority='NULL' ; +NEW_CONNECTION; +set spanner.rpc_priority='NULL' ; +NEW_CONNECTION; +set spanner.rpc_priority='NULL' + +; +NEW_CONNECTION; +set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +set +spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set%spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set_spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set&spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set$spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set@spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set!spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set*spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set(spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set)spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set+spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-#spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set\spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set?spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set-/spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/#spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.rpc_priority='NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority='NULL'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set/-spanner.rpc_priority='NULL'; +NEW_CONNECTION; +set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +SET SPANNER.RPC_PRIORITY TO 'HIGH'; +NEW_CONNECTION; +set spanner.rpc_priority to 'high'; +NEW_CONNECTION; + set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; + set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; + + + +set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +set spanner.rpc_priority to 'HIGH' ; +NEW_CONNECTION; +set spanner.rpc_priority to 'HIGH' ; +NEW_CONNECTION; +set spanner.rpc_priority to 'HIGH' + +; +NEW_CONNECTION; +set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +set +spanner.rpc_priority +to +'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to%'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to_'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to&'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to$'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to@'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to!'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to*'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to('HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to)'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to+'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-#'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to\'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to?'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-/'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/#'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.rpc_priority to 'HIGH'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'HIGH'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/-'HIGH'; +NEW_CONNECTION; +set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +SET SPANNER.RPC_PRIORITY TO 'MEDIUM'; +NEW_CONNECTION; +set spanner.rpc_priority to 'medium'; +NEW_CONNECTION; + set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; + set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; + + + +set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +set spanner.rpc_priority to 'MEDIUM' ; +NEW_CONNECTION; +set spanner.rpc_priority to 'MEDIUM' ; +NEW_CONNECTION; +set spanner.rpc_priority to 'MEDIUM' + +; +NEW_CONNECTION; +set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +set +spanner.rpc_priority +to +'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to%'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to_'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to&'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to$'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to@'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to!'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to*'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to('MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to)'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to+'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-#'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to\'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to?'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-/'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/#'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.rpc_priority to 'MEDIUM'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'MEDIUM'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/-'MEDIUM'; +NEW_CONNECTION; +set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +SET SPANNER.RPC_PRIORITY TO 'LOW'; +NEW_CONNECTION; +set spanner.rpc_priority to 'low'; +NEW_CONNECTION; + set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; + set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; + + + +set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +set spanner.rpc_priority to 'LOW' ; +NEW_CONNECTION; +set spanner.rpc_priority to 'LOW' ; +NEW_CONNECTION; +set spanner.rpc_priority to 'LOW' + +; +NEW_CONNECTION; +set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +set +spanner.rpc_priority +to +'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to%'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to_'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to&'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to$'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to@'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to!'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to*'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to('LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to)'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to+'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-#'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to\'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to?'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-/'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/#'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.rpc_priority to 'LOW'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'LOW'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/-'LOW'; +NEW_CONNECTION; +set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +SET SPANNER.RPC_PRIORITY TO 'NULL'; +NEW_CONNECTION; +set spanner.rpc_priority to 'null'; +NEW_CONNECTION; + set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; + set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; + + + +set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +set spanner.rpc_priority to 'NULL' ; +NEW_CONNECTION; +set spanner.rpc_priority to 'NULL' ; +NEW_CONNECTION; +set spanner.rpc_priority to 'NULL' + +; +NEW_CONNECTION; +set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +set +spanner.rpc_priority +to +'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +foo set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL' bar; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +%set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'%; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to%'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +_set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'_; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to_'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +&set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'&; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to&'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +$set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'$; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to$'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +@set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'@; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to@'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +!set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'!; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to!'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +*set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'*; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to*'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +(set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'(; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to('NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +)set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'); +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to)'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT ++set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'+; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to+'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-#set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'-#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-#'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +\set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'\; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to\'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +?set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'?; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to?'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +-/set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'-/; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to-/'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/#set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'/#; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/#'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +/-set spanner.rpc_priority to 'NULL'; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to 'NULL'/-; +NEW_CONNECTION; +@EXPECT EXCEPTION INVALID_ARGUMENT +set spanner.rpc_priority to/-'NULL'; diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/PostgreSQLCommentsTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/CommentsTest.sql similarity index 100% rename from google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/PostgreSQLCommentsTest.sql rename to google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/CommentsTest.sql diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql new file mode 100644 index 00000000000..ac9528cc83d --- /dev/null +++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql @@ -0,0 +1,13788 @@ +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:27.293000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:27.293000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:27.293000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:27.293000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:27.688000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:27.688000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:27.688000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:27.688000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:28.001000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:28.001000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:28.001000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:28.314000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:28.314000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:28.314000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:28.314000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:28.639000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:28.639000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:28.639000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:28.639000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:28.902000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:28.902000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:28.902000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:28.902000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:29.148000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:29.148000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:29.148000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:29.376000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:29.376000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:29.376000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:29.657000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:29.657000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:29.657000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:29.941000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:29.941000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:29.941000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.135000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:30.135000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.135000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.355000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.355000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.594000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.594000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.790000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:30.790000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.790000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=TRUE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:30.980000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:30.980000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:31.151000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:31.151000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:31.151000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:31.485000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:31.485000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:31.485000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:31.485000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP' +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP' +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:31.700000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:31.700000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:31.700000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:32.018000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:32.018000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:32.018000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:32.018000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:32.292000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:32.292000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:32.292000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:32.292000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP' +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP' +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:32.518000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:32.518000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:32.518000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:32.518000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:32.770000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:32.770000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:32.770000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:32.770000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.AUTOCOMMIT_DML_MODE='TRANSACTIONAL'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','TRANSACTIONAL' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE','PARTITIONED_NON_ATOMIC' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.018000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:33.018000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.018000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2022-03-23T14:42:33.018000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 100ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.206000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:33.206000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.206000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.448000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:33.448000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.449000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.677000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.677000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:33.887000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:33.887000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP' +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.149000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.149000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.149000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.333000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.333000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.333000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.517000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.517000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.517000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:34.777000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:34.777000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:34.777000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.084000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:35.084000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.084000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP' +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP' +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.282000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:35.282000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.282000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.509000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.509000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET AUTOCOMMIT=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READONLY=TRUE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.756000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.756000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +ABORT BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'AUTOCOMMIT',FALSE +SHOW VARIABLE AUTOCOMMIT; +SET AUTOCOMMIT=TRUE; +@EXPECT RESULT_SET 'AUTOCOMMIT',TRUE +SHOW VARIABLE AUTOCOMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT UPDATE_COUNT 1 +UPDATE foo SET bar=1; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.AUTOCOMMIT_DML_MODE='PARTITIONED_NON_ATOMIC'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'TEST',1 +SELECT 1 AS TEST; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.AUTOCOMMIT_DML_MODE' +SHOW VARIABLE SPANNER.AUTOCOMMIT_DML_MODE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ ONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET TRANSACTION READ WRITE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.READ_TIMESTAMP',null +SHOW VARIABLE SPANNER.READ_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DDL; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +UPDATE foo SET bar=1; +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DDL; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +START BATCH DML; +@EXPECT EXCEPTION FAILED_PRECONDITION +SELECT 1 AS TEST; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +START BATCH DML; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +ROLLBACK; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READONLY=FALSE; +@EXPECT RESULT_SET 'SPANNER.READONLY',FALSE +SHOW VARIABLE SPANNER.READONLY; +SET SPANNER.READONLY=TRUE; +@EXPECT RESULT_SET 'SPANNER.READONLY',TRUE +SHOW VARIABLE SPANNER.READONLY; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2022-03-23T14:42:35.963000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2022-03-23T14:42:35.963000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2022-03-23T14:42:35.963000000Z'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 100ms'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 100us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 100us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_RESPONSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.OPTIMIZER_VERSION='1'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','1' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='2'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','2' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION='latest'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','latest' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +SET SPANNER.OPTIMIZER_VERSION=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_VERSION','' +SHOW VARIABLE SPANNER.OPTIMIZER_VERSION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.COMMIT_TIMESTAMP',null +SHOW VARIABLE SPANNER.COMMIT_TIMESTAMP; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE='custom-package'; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','custom-package' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +SET SPANNER.OPTIMIZER_STATISTICS_PACKAGE=''; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE','' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT=DEFAULT; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +COMMIT; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT RESULT_SET 'SPANNER.OPTIMIZER_STATISTICS_PACKAGE' +SHOW VARIABLE SPANNER.OPTIMIZER_STATISTICS_PACKAGE; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +@EXPECT EXCEPTION FAILED_PRECONDITION +RUN BATCH; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +SET SPANNER.TRANSACTION_TAG = 'some-tag'; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; +BEGIN TRANSACTION; +SELECT 1 AS TEST; +UPDATE foo SET bar=1; +@EXPECT EXCEPTION FAILED_PRECONDITION +CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); +@EXPECT EXCEPTION FAILED_PRECONDITION +BEGIN TRANSACTION; +NEW_CONNECTION; +SET SPANNER.READONLY=FALSE; +SET AUTOCOMMIT=FALSE; diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/SetReadOnlyStalenessTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/SetReadOnlyStalenessTest.sql new file mode 100644 index 00000000000..76c014526b0 --- /dev/null +++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/SetReadOnlyStalenessTest.sql @@ -0,0 +1,575 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +-- Test valid values for strong +SET SPANNER.READ_ONLY_STALENESS='strong'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +SET SPANNER.READ_ONLY_STALENESS='STRONG'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +SET SPANNER.READ_ONLY_STALENESS='Strong'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +SET SPANNER.READ_ONLY_STALENESS = 'strong'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +SET SPANNER.READ_ONLY_STALENESS = 'strong'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +SET SPANNER.READ_ONLY_STALENESS + = + 'strong'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +SET SPANNER.READ_ONLY_STALENESS='strong'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; +SET SPANNER.READ_ONLY_STALENESS='strong'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','STRONG' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +-- Test invalid values for strong +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='strongg'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='sstrong'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='strng'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' strong'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='strong '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' strong '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' strong'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='strong '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' strong '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=strong; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS="strong"; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=`strong`; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='''strong'''; + + +-- Test valid values for min_read_timestamp +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='Min_Read_Timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2000-02-29T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2000-02-29T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2004-02-29T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2004-02-29T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2019-01-01T00:00:00Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2019-01-01T00:00:00Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2019-01-01T00:00:00Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2019-01-01T00:00:00Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2019-01-01T00:00:00Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2019-01-01T00:00:00Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+01:00'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-07T12:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01-01:00'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-07T14:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+06:30'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-07T07:06:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+24:00'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2018-12-06T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + + +-- Test invalid values for min_read_timestamp +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestampp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='mmin_read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_red_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min read timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min-read-timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min%read%timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' min_read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01Z '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' min_read_timestamp 2018-12-07T13:36:00.01Z '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' min_read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01Z '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' min_read_timestamp 2018-12-07T13:36:00.01Z '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=min_read_timestamp 2018-12-07T13:36:00.01Z; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS="min_read_timestamp 2018-12-07T13:36:00.01Z"; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=`min_read_timestamp 2018-12-07T13:36:00.01Z`; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='''min_read_timestamp 2018-12-07T13:36:00.01Z'''; + +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07 13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T3:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.9999999999Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-7T13:36:00.01Z'; + +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+8'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+08'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+08:0'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.0108:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+08:00.0'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+08:000'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01+100:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01*08:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01%08:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01 08:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='min_read_timestamp 2018-12-07T13:36:00.01Z+08:00'; + + + + +-- Test valid values for read_timestamp +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='Read_Timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-07T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2000-02-29T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2000-02-29T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2004-02-29T13:36:00.01Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2004-02-29T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2019-01-01T00:00:00Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2019-01-01T00:00:00Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2019-01-01T00:00:00Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2019-01-01T00:00:00Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2019-01-01T00:00:00Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2019-01-01T00:00:00Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+01:00'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-07T12:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01-01:00'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-07T14:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+06:30'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-07T07:06:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+24:00'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2018-12-06T13:36:00.010000000Z' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + + +-- Test invalid values for read_timestamp +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestampp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='mread_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='red_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read-timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read%timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01Z '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' read_timestamp 2018-12-07T13:36:00.01Z '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' read_timestamp 2018-12-07T13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01Z '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' read_timestamp 2018-12-07T13:36:00.01Z '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=read_timestamp 2018-12-07T13:36:00.01Z; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS="read_timestamp 2018-12-07T13:36:00.01Z"; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=`read_timestamp 2018-12-07T13:36:00.01Z`; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='''read_timestamp 2018-12-07T13:36:00.01Z'''; + +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07 13:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T3:36:00.01Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.9999999999Z'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-7T13:36:00.01Z'; + +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+8'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+08'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+08:0'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.0108:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+08:00.0'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+08:000'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01+100:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01*08:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01%08:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01 08:00'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='read_timestamp 2018-12-07T13:36:00.01Z+08:00'; + + +-- Test valid values for exact_staleness +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='Exact_Staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1ns'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1ns' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 9999s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 9999s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1000ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1001ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1001ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1000us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1001us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1001us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1000ns'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 1001ns'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','EXACT_STALENESS 1001ns' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + + +-- Test invalid values for exact_staleness +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact_stalenesss 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='eexact_staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exct_staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact-staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact%staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' exact_staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' exact_staleness 10s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' exact_staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' exact_staleness 10s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=exact_staleness 10s; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS="exact_staleness 10s"; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=`exact_staleness 10s`; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='''exact_staleness 10s'''; + +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 10mus'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact_staleness 999999999999s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact_staleness not_a_number'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='exact_staleness'; + + + +-- Test valid values for max_staleness +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_Staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_STALENESS 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1ns'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1ns' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 9999s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 9999s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10s'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 10s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1000ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1s' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1001ms'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1001ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1000us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1ms' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1001us'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1001us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1000ns'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1us' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + +SET SPANNER.READ_ONLY_STALENESS='max_staleness 1001ns'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MAX_STALENESS 1001ns' +SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; + + +-- Test invalid values for max_staleness +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max_stalenesss 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='emax_staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='mx_staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max-staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max%staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' max_staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' max_staleness 10s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' max_staleness 10s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=' max_staleness 10s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=max_staleness 10s; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS="max_staleness 10s"; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS=`max_staleness 10s`; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='''max_staleness 10s'''; + +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max_staleness 10mus'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max_staleness 999999999999s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max_staleness not_a_number'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET SPANNER.READ_ONLY_STALENESS='max_staleness'; + diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/SetStatementTimeoutTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/SetStatementTimeoutTest.sql new file mode 100644 index 00000000000..d0b80d94f59 --- /dev/null +++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/SetStatementTimeoutTest.sql @@ -0,0 +1,170 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +-- Test valid values +-- Null (no timeout) +SET STATEMENT_TIMEOUT=default; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' +SHOW VARIABLE STATEMENT_TIMEOUT; + +-- Seconds +SET STATEMENT_TIMEOUT='1s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; +SET STATEMENT_TIMEOUT = '2s'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','2s' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1S'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; + +-- Milliseconds +SET STATEMENT_TIMEOUT='1ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1Ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1mS'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1MS'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +-- Microseconds +SET STATEMENT_TIMEOUT='1us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1Us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1uS'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1US'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; + +-- Nanoseconds +SET STATEMENT_TIMEOUT='1ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1Ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1nS'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1NS'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ns' +SHOW VARIABLE STATEMENT_TIMEOUT; + +-- Test flip to higher time unit +SET STATEMENT_TIMEOUT='1000ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1us' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1001ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1001ns' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1000us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1001us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1001us' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1000000ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1000ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1001ms'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1001ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1000000000ns'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT='1000000us'; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1s' +SHOW VARIABLE STATEMENT_TIMEOUT; + +-- No unit (milliseconds) +SET STATEMENT_TIMEOUT=1; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','1ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT=100; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','100ms' +SHOW VARIABLE STATEMENT_TIMEOUT; + +SET STATEMENT_TIMEOUT=10000; +@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','10s' +SHOW VARIABLE STATEMENT_TIMEOUT; + +-- Invalid suffixes +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1m'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1mi'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1h'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1mus'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1n'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1u'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1'; + +-- Invalid numbers +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='-1s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='a1s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0xas'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='0x1s'; + +-- Invalid because of spaces +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1 s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT=' 1s'; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1s '; +@EXPECT EXCEPTION INVALID_ARGUMENT +SET STATEMENT_TIMEOUT='1m s'; diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml index f1233bc91e2..2cecc2ec420 100644 --- a/grpc-google-cloud-spanner-admin-database-v1/pom.xml +++ b/grpc-google-cloud-spanner-admin-database-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.21.2 + 6.22.0 grpc-google-cloud-spanner-admin-database-v1 GRPC library for grpc-google-cloud-spanner-admin-database-v1 com.google.cloud google-cloud-spanner-parent - 6.21.2 + 6.22.0 diff --git a/grpc-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseAdminGrpc.java b/grpc-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseAdminGrpc.java index 55afe37254c..184bc2de624 100644 --- a/grpc-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseAdminGrpc.java +++ b/grpc-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseAdminGrpc.java @@ -481,6 +481,49 @@ private DatabaseAdminGrpc() {} return getCreateBackupMethod; } + private static volatile io.grpc.MethodDescriptor< + com.google.spanner.admin.database.v1.CopyBackupRequest, com.google.longrunning.Operation> + getCopyBackupMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "CopyBackup", + requestType = com.google.spanner.admin.database.v1.CopyBackupRequest.class, + responseType = com.google.longrunning.Operation.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.spanner.admin.database.v1.CopyBackupRequest, com.google.longrunning.Operation> + getCopyBackupMethod() { + io.grpc.MethodDescriptor< + com.google.spanner.admin.database.v1.CopyBackupRequest, + com.google.longrunning.Operation> + getCopyBackupMethod; + if ((getCopyBackupMethod = DatabaseAdminGrpc.getCopyBackupMethod) == null) { + synchronized (DatabaseAdminGrpc.class) { + if ((getCopyBackupMethod = DatabaseAdminGrpc.getCopyBackupMethod) == null) { + DatabaseAdminGrpc.getCopyBackupMethod = + getCopyBackupMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "CopyBackup")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.spanner.admin.database.v1.CopyBackupRequest + .getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.longrunning.Operation.getDefaultInstance())) + .setSchemaDescriptor(new DatabaseAdminMethodDescriptorSupplier("CopyBackup")) + .build(); + } + } + } + return getCopyBackupMethod; + } + private static volatile io.grpc.MethodDescriptor< com.google.spanner.admin.database.v1.GetBackupRequest, com.google.spanner.admin.database.v1.Backup> @@ -1054,6 +1097,30 @@ public void createBackup( getCreateBackupMethod(), responseObserver); } + /** + * + * + *

+     * Starts copying a Cloud Spanner Backup.
+     * The returned backup [long-running operation][google.longrunning.Operation]
+     * will have a name of the format
+     * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>`
+     * and can be used to track copying of the backup. The operation is associated
+     * with the destination backup.
+     * The [metadata][google.longrunning.Operation.metadata] field type is
+     * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata].
+     * The [response][google.longrunning.Operation.response] field type is
+     * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned operation will stop the
+     * copying and delete the backup.
+     * Concurrent CopyBackup requests can run on the same source backup.
+     * 
+ */ + public void copyBackup( + com.google.spanner.admin.database.v1.CopyBackupRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCopyBackupMethod(), responseObserver); + } + /** * * @@ -1256,6 +1323,12 @@ public final io.grpc.ServerServiceDefinition bindService() { 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( @@ -1541,6 +1614,31 @@ public void createBackup( responseObserver); } + /** + * + * + *
+     * Starts copying a Cloud Spanner Backup.
+     * The returned backup [long-running operation][google.longrunning.Operation]
+     * will have a name of the format
+     * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>`
+     * and can be used to track copying of the backup. The operation is associated
+     * with the destination backup.
+     * The [metadata][google.longrunning.Operation.metadata] field type is
+     * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata].
+     * The [response][google.longrunning.Operation.response] field type is
+     * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned operation will stop the
+     * copying and delete the backup.
+     * Concurrent CopyBackup requests can run on the same source backup.
+     * 
+ */ + public void copyBackup( + com.google.spanner.admin.database.v1.CopyBackupRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getCopyBackupMethod(), getCallOptions()), request, responseObserver); + } + /** * * @@ -1892,6 +1990,30 @@ public com.google.longrunning.Operation createBackup( getChannel(), getCreateBackupMethod(), getCallOptions(), request); } + /** + * + * + *
+     * Starts copying a Cloud Spanner Backup.
+     * The returned backup [long-running operation][google.longrunning.Operation]
+     * will have a name of the format
+     * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>`
+     * and can be used to track copying of the backup. The operation is associated
+     * with the destination backup.
+     * The [metadata][google.longrunning.Operation.metadata] field type is
+     * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata].
+     * The [response][google.longrunning.Operation.response] field type is
+     * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned operation will stop the
+     * copying and delete the backup.
+     * Concurrent CopyBackup requests can run on the same source backup.
+     * 
+ */ + public com.google.longrunning.Operation copyBackup( + com.google.spanner.admin.database.v1.CopyBackupRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getCopyBackupMethod(), getCallOptions(), request); + } + /** * * @@ -2226,6 +2348,30 @@ protected DatabaseAdminFutureStub build( getChannel().newCall(getCreateBackupMethod(), getCallOptions()), request); } + /** + * + * + *
+     * Starts copying a Cloud Spanner Backup.
+     * The returned backup [long-running operation][google.longrunning.Operation]
+     * will have a name of the format
+     * `projects/<project>/instances/<instance>/backups/<backup>/operations/<operation_id>`
+     * and can be used to track copying of the backup. The operation is associated
+     * with the destination backup.
+     * The [metadata][google.longrunning.Operation.metadata] field type is
+     * [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata].
+     * The [response][google.longrunning.Operation.response] field type is
+     * [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned operation will stop the
+     * copying and delete the backup.
+     * Concurrent CopyBackup requests can run on the same source backup.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture + copyBackup(com.google.spanner.admin.database.v1.CopyBackupRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getCopyBackupMethod(), getCallOptions()), request); + } + /** * * @@ -2369,13 +2515,14 @@ protected DatabaseAdminFutureStub build( private static final int METHODID_GET_IAM_POLICY = 7; private static final int METHODID_TEST_IAM_PERMISSIONS = 8; private static final int METHODID_CREATE_BACKUP = 9; - private static final int METHODID_GET_BACKUP = 10; - private static final int METHODID_UPDATE_BACKUP = 11; - private static final int METHODID_DELETE_BACKUP = 12; - private static final int METHODID_LIST_BACKUPS = 13; - private static final int METHODID_RESTORE_DATABASE = 14; - private static final int METHODID_LIST_DATABASE_OPERATIONS = 15; - private static final int METHODID_LIST_BACKUP_OPERATIONS = 16; + private static final int METHODID_COPY_BACKUP = 10; + private static final int METHODID_GET_BACKUP = 11; + private static final int METHODID_UPDATE_BACKUP = 12; + private static final int METHODID_DELETE_BACKUP = 13; + private static final int METHODID_LIST_BACKUPS = 14; + private static final int METHODID_RESTORE_DATABASE = 15; + private static final int METHODID_LIST_DATABASE_OPERATIONS = 16; + private static final int METHODID_LIST_BACKUP_OPERATIONS = 17; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -2450,6 +2597,11 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv (com.google.spanner.admin.database.v1.CreateBackupRequest) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_COPY_BACKUP: + serviceImpl.copyBackup( + (com.google.spanner.admin.database.v1.CopyBackupRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_GET_BACKUP: serviceImpl.getBackup( (com.google.spanner.admin.database.v1.GetBackupRequest) request, @@ -2567,6 +2719,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { .addMethod(getGetIamPolicyMethod()) .addMethod(getTestIamPermissionsMethod()) .addMethod(getCreateBackupMethod()) + .addMethod(getCopyBackupMethod()) .addMethod(getGetBackupMethod()) .addMethod(getUpdateBackupMethod()) .addMethod(getDeleteBackupMethod()) diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index ac35300d525..9dc8ebb4169 100644 --- a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.21.2 + 6.22.0 grpc-google-cloud-spanner-admin-instance-v1 GRPC library for grpc-google-cloud-spanner-admin-instance-v1 com.google.cloud google-cloud-spanner-parent - 6.21.2 + 6.22.0 diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index df1548b6f09..a313fdbbc31 100644 --- a/grpc-google-cloud-spanner-v1/pom.xml +++ b/grpc-google-cloud-spanner-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.21.2 + 6.22.0 grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.21.2 + 6.22.0 diff --git a/pom.xml b/pom.xml index e5b9423849c..82eb9eedbe0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.21.2 + 6.22.0 Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -62,37 +62,37 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.21.2 + 6.22.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.21.2 + 6.22.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.21.2 + 6.22.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.21.2 + 6.22.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.21.2 + 6.22.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.21.2 + 6.22.0 com.google.cloud google-cloud-spanner - 6.21.2 + 6.22.0 @@ -141,7 +141,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.0 + 3.10.1 1.8 1.8 diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index d7ff275fb74..5eaf913f945 100644 --- a/proto-google-cloud-spanner-admin-database-v1/pom.xml +++ b/proto-google-cloud-spanner-admin-database-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.21.2 + 6.22.0 proto-google-cloud-spanner-admin-database-v1 PROTO library for proto-google-cloud-spanner-admin-database-v1 com.google.cloud google-cloud-spanner-parent - 6.21.2 + 6.22.0 diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Backup.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Backup.java index 3a974718685..ff197cea3fb 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Backup.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Backup.java @@ -43,6 +43,7 @@ private Backup() { state_ = 0; referencingDatabases_ = com.google.protobuf.LazyStringArrayList.EMPTY; databaseDialect_ = 0; + referencingBackups_ = com.google.protobuf.LazyStringArrayList.EMPTY; } @java.lang.Override @@ -178,6 +179,31 @@ private Backup( int rawValue = input.readEnum(); databaseDialect_ = rawValue; + break; + } + case 90: + { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + referencingBackups_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + referencingBackups_.add(s); + break; + } + case 98: + { + com.google.protobuf.Timestamp.Builder subBuilder = null; + if (maxExpireTime_ != null) { + subBuilder = maxExpireTime_.toBuilder(); + } + maxExpireTime_ = + input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(maxExpireTime_); + maxExpireTime_ = subBuilder.buildPartial(); + } + break; } default: @@ -197,6 +223,9 @@ private Backup( if (((mutable_bitField0_ & 0x00000001) != 0)) { referencingDatabases_ = referencingDatabases_.getUnmodifiableView(); } + if (((mutable_bitField0_ & 0x00000002) != 0)) { + referencingBackups_ = referencingBackups_.getUnmodifiableView(); + } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -920,6 +949,165 @@ public com.google.spanner.admin.database.v1.DatabaseDialect getDatabaseDialect() : result; } + public static final int REFERENCING_BACKUPS_FIELD_NUMBER = 11; + private com.google.protobuf.LazyStringList referencingBackups_; + /** + * + * + *
+   * Output only. The names of the destination backups being created by copying
+   * this source backup. The backup names are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * Referencing backups may exist in different instances. The existence of
+   * any referencing backup prevents the backup from being deleted. When the
+   * copy operation is done (either successfully completed or cancelled or the
+   * destination backup is deleted), the reference to the backup is removed.
+   * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @return A list containing the referencingBackups. + */ + public com.google.protobuf.ProtocolStringList getReferencingBackupsList() { + return referencingBackups_; + } + /** + * + * + *
+   * Output only. The names of the destination backups being created by copying
+   * this source backup. The backup names are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * Referencing backups may exist in different instances. The existence of
+   * any referencing backup prevents the backup from being deleted. When the
+   * copy operation is done (either successfully completed or cancelled or the
+   * destination backup is deleted), the reference to the backup is removed.
+   * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @return The count of referencingBackups. + */ + public int getReferencingBackupsCount() { + return referencingBackups_.size(); + } + /** + * + * + *
+   * Output only. The names of the destination backups being created by copying
+   * this source backup. The backup names are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * Referencing backups may exist in different instances. The existence of
+   * any referencing backup prevents the backup from being deleted. When the
+   * copy operation is done (either successfully completed or cancelled or the
+   * destination backup is deleted), the reference to the backup is removed.
+   * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param index The index of the element to return. + * @return The referencingBackups at the given index. + */ + public java.lang.String getReferencingBackups(int index) { + return referencingBackups_.get(index); + } + /** + * + * + *
+   * Output only. The names of the destination backups being created by copying
+   * this source backup. The backup names are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * Referencing backups may exist in different instances. The existence of
+   * any referencing backup prevents the backup from being deleted. When the
+   * copy operation is done (either successfully completed or cancelled or the
+   * destination backup is deleted), the reference to the backup is removed.
+   * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param index The index of the value to return. + * @return The bytes of the referencingBackups at the given index. + */ + public com.google.protobuf.ByteString getReferencingBackupsBytes(int index) { + return referencingBackups_.getByteString(index); + } + + public static final int MAX_EXPIRE_TIME_FIELD_NUMBER = 12; + private com.google.protobuf.Timestamp maxExpireTime_; + /** + * + * + *
+   * Output only. The max allowed expiration time of the backup, with
+   * microseconds granularity. A backup's expiration time can be configured in
+   * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+   * copying an existing backup, the expiration time specified must be
+   * less than `Backup.max_expire_time`.
+   * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the maxExpireTime field is set. + */ + @java.lang.Override + public boolean hasMaxExpireTime() { + return maxExpireTime_ != null; + } + /** + * + * + *
+   * Output only. The max allowed expiration time of the backup, with
+   * microseconds granularity. A backup's expiration time can be configured in
+   * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+   * copying an existing backup, the expiration time specified must be
+   * less than `Backup.max_expire_time`.
+   * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The maxExpireTime. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getMaxExpireTime() { + return maxExpireTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : maxExpireTime_; + } + /** + * + * + *
+   * Output only. The max allowed expiration time of the backup, with
+   * microseconds granularity. A backup's expiration time can be configured in
+   * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+   * copying an existing backup, the expiration time specified must be
+   * less than `Backup.max_expire_time`.
+   * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getMaxExpireTimeOrBuilder() { + return getMaxExpireTime(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -967,6 +1155,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io .getNumber()) { output.writeEnum(10, databaseDialect_); } + for (int i = 0; i < referencingBackups_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 11, referencingBackups_.getRaw(i)); + } + if (maxExpireTime_ != null) { + output.writeMessage(12, getMaxExpireTime()); + } unknownFields.writeTo(output); } @@ -1013,6 +1207,17 @@ public int getSerializedSize() { .getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(10, databaseDialect_); } + { + int dataSize = 0; + for (int i = 0; i < referencingBackups_.size(); i++) { + dataSize += computeStringSizeNoTag(referencingBackups_.getRaw(i)); + } + size += dataSize; + size += 1 * getReferencingBackupsList().size(); + } + if (maxExpireTime_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(12, getMaxExpireTime()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -1051,6 +1256,11 @@ public boolean equals(final java.lang.Object obj) { if (!getEncryptionInfo().equals(other.getEncryptionInfo())) return false; } if (databaseDialect_ != other.databaseDialect_) return false; + if (!getReferencingBackupsList().equals(other.getReferencingBackupsList())) return false; + if (hasMaxExpireTime() != other.hasMaxExpireTime()) return false; + if (hasMaxExpireTime()) { + if (!getMaxExpireTime().equals(other.getMaxExpireTime())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -1092,6 +1302,14 @@ public int hashCode() { } hash = (37 * hash) + DATABASE_DIALECT_FIELD_NUMBER; hash = (53 * hash) + databaseDialect_; + if (getReferencingBackupsCount() > 0) { + hash = (37 * hash) + REFERENCING_BACKUPS_FIELD_NUMBER; + hash = (53 * hash) + getReferencingBackupsList().hashCode(); + } + if (hasMaxExpireTime()) { + hash = (37 * hash) + MAX_EXPIRE_TIME_FIELD_NUMBER; + hash = (53 * hash) + getMaxExpireTime().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -1273,6 +1491,14 @@ public Builder clear() { } databaseDialect_ = 0; + referencingBackups_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + if (maxExpireTimeBuilder_ == null) { + maxExpireTime_ = null; + } else { + maxExpireTime_ = null; + maxExpireTimeBuilder_ = null; + } return this; } @@ -1331,6 +1557,16 @@ public com.google.spanner.admin.database.v1.Backup buildPartial() { result.encryptionInfo_ = encryptionInfoBuilder_.build(); } result.databaseDialect_ = databaseDialect_; + if (((bitField0_ & 0x00000002) != 0)) { + referencingBackups_ = referencingBackups_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.referencingBackups_ = referencingBackups_; + if (maxExpireTimeBuilder_ == null) { + result.maxExpireTime_ = maxExpireTime_; + } else { + result.maxExpireTime_ = maxExpireTimeBuilder_.build(); + } onBuilt(); return result; } @@ -1419,6 +1655,19 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.Backup other) { if (other.databaseDialect_ != 0) { setDatabaseDialectValue(other.getDatabaseDialectValue()); } + if (!other.referencingBackups_.isEmpty()) { + if (referencingBackups_.isEmpty()) { + referencingBackups_ = other.referencingBackups_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureReferencingBackupsIsMutable(); + referencingBackups_.addAll(other.referencingBackups_); + } + onChanged(); + } + if (other.hasMaxExpireTime()) { + mergeMaxExpireTime(other.getMaxExpireTime()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -3094,6 +3343,485 @@ public Builder clearDatabaseDialect() { return this; } + private com.google.protobuf.LazyStringList referencingBackups_ = + com.google.protobuf.LazyStringArrayList.EMPTY; + + private void ensureReferencingBackupsIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + referencingBackups_ = new com.google.protobuf.LazyStringArrayList(referencingBackups_); + bitField0_ |= 0x00000002; + } + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @return A list containing the referencingBackups. + */ + public com.google.protobuf.ProtocolStringList getReferencingBackupsList() { + return referencingBackups_.getUnmodifiableView(); + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @return The count of referencingBackups. + */ + public int getReferencingBackupsCount() { + return referencingBackups_.size(); + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param index The index of the element to return. + * @return The referencingBackups at the given index. + */ + public java.lang.String getReferencingBackups(int index) { + return referencingBackups_.get(index); + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param index The index of the value to return. + * @return The bytes of the referencingBackups at the given index. + */ + public com.google.protobuf.ByteString getReferencingBackupsBytes(int index) { + return referencingBackups_.getByteString(index); + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param index The index to set the value at. + * @param value The referencingBackups to set. + * @return This builder for chaining. + */ + public Builder setReferencingBackups(int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureReferencingBackupsIsMutable(); + referencingBackups_.set(index, value); + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param value The referencingBackups to add. + * @return This builder for chaining. + */ + public Builder addReferencingBackups(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureReferencingBackupsIsMutable(); + referencingBackups_.add(value); + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param values The referencingBackups to add. + * @return This builder for chaining. + */ + public Builder addAllReferencingBackups(java.lang.Iterable values) { + ensureReferencingBackupsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, referencingBackups_); + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @return This builder for chaining. + */ + public Builder clearReferencingBackups() { + referencingBackups_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The names of the destination backups being created by copying
+     * this source backup. The backup names are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * Referencing backups may exist in different instances. The existence of
+     * any referencing backup prevents the backup from being deleted. When the
+     * copy operation is done (either successfully completed or cancelled or the
+     * destination backup is deleted), the reference to the backup is removed.
+     * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param value The bytes of the referencingBackups to add. + * @return This builder for chaining. + */ + public Builder addReferencingBackupsBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureReferencingBackupsIsMutable(); + referencingBackups_.add(value); + onChanged(); + return this; + } + + private com.google.protobuf.Timestamp maxExpireTime_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + maxExpireTimeBuilder_; + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the maxExpireTime field is set. + */ + public boolean hasMaxExpireTime() { + return maxExpireTimeBuilder_ != null || maxExpireTime_ != null; + } + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The maxExpireTime. + */ + public com.google.protobuf.Timestamp getMaxExpireTime() { + if (maxExpireTimeBuilder_ == null) { + return maxExpireTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : maxExpireTime_; + } else { + return maxExpireTimeBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder setMaxExpireTime(com.google.protobuf.Timestamp value) { + if (maxExpireTimeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + maxExpireTime_ = value; + onChanged(); + } else { + maxExpireTimeBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder setMaxExpireTime(com.google.protobuf.Timestamp.Builder builderForValue) { + if (maxExpireTimeBuilder_ == null) { + maxExpireTime_ = builderForValue.build(); + onChanged(); + } else { + maxExpireTimeBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder mergeMaxExpireTime(com.google.protobuf.Timestamp value) { + if (maxExpireTimeBuilder_ == null) { + if (maxExpireTime_ != null) { + maxExpireTime_ = + com.google.protobuf.Timestamp.newBuilder(maxExpireTime_) + .mergeFrom(value) + .buildPartial(); + } else { + maxExpireTime_ = value; + } + onChanged(); + } else { + maxExpireTimeBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder clearMaxExpireTime() { + if (maxExpireTimeBuilder_ == null) { + maxExpireTime_ = null; + onChanged(); + } else { + maxExpireTime_ = null; + maxExpireTimeBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.protobuf.Timestamp.Builder getMaxExpireTimeBuilder() { + + onChanged(); + return getMaxExpireTimeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.protobuf.TimestampOrBuilder getMaxExpireTimeOrBuilder() { + if (maxExpireTimeBuilder_ != null) { + return maxExpireTimeBuilder_.getMessageOrBuilder(); + } else { + return maxExpireTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : maxExpireTime_; + } + } + /** + * + * + *
+     * Output only. The max allowed expiration time of the backup, with
+     * microseconds granularity. A backup's expiration time can be configured in
+     * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+     * copying an existing backup, the expiration time specified must be
+     * less than `Backup.max_expire_time`.
+     * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getMaxExpireTimeFieldBuilder() { + if (maxExpireTimeBuilder_ == null) { + maxExpireTimeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getMaxExpireTime(), getParentForChildren(), isClean()); + maxExpireTime_ = null; + } + return maxExpireTimeBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupOrBuilder.java index 8810b28ee0c..e3fe5ccf08c 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupOrBuilder.java @@ -433,4 +433,140 @@ public interface BackupOrBuilder * @return The databaseDialect. */ com.google.spanner.admin.database.v1.DatabaseDialect getDatabaseDialect(); + + /** + * + * + *
+   * Output only. The names of the destination backups being created by copying
+   * this source backup. The backup names are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * Referencing backups may exist in different instances. The existence of
+   * any referencing backup prevents the backup from being deleted. When the
+   * copy operation is done (either successfully completed or cancelled or the
+   * destination backup is deleted), the reference to the backup is removed.
+   * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @return A list containing the referencingBackups. + */ + java.util.List getReferencingBackupsList(); + /** + * + * + *
+   * Output only. The names of the destination backups being created by copying
+   * this source backup. The backup names are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * Referencing backups may exist in different instances. The existence of
+   * any referencing backup prevents the backup from being deleted. When the
+   * copy operation is done (either successfully completed or cancelled or the
+   * destination backup is deleted), the reference to the backup is removed.
+   * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @return The count of referencingBackups. + */ + int getReferencingBackupsCount(); + /** + * + * + *
+   * Output only. The names of the destination backups being created by copying
+   * this source backup. The backup names are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * Referencing backups may exist in different instances. The existence of
+   * any referencing backup prevents the backup from being deleted. When the
+   * copy operation is done (either successfully completed or cancelled or the
+   * destination backup is deleted), the reference to the backup is removed.
+   * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param index The index of the element to return. + * @return The referencingBackups at the given index. + */ + java.lang.String getReferencingBackups(int index); + /** + * + * + *
+   * Output only. The names of the destination backups being created by copying
+   * this source backup. The backup names are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * Referencing backups may exist in different instances. The existence of
+   * any referencing backup prevents the backup from being deleted. When the
+   * copy operation is done (either successfully completed or cancelled or the
+   * destination backup is deleted), the reference to the backup is removed.
+   * 
+ * + * + * repeated string referencing_backups = 11 [(.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.resource_reference) = { ... } + * + * + * @param index The index of the value to return. + * @return The bytes of the referencingBackups at the given index. + */ + com.google.protobuf.ByteString getReferencingBackupsBytes(int index); + + /** + * + * + *
+   * Output only. The max allowed expiration time of the backup, with
+   * microseconds granularity. A backup's expiration time can be configured in
+   * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+   * copying an existing backup, the expiration time specified must be
+   * less than `Backup.max_expire_time`.
+   * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the maxExpireTime field is set. + */ + boolean hasMaxExpireTime(); + /** + * + * + *
+   * Output only. The max allowed expiration time of the backup, with
+   * microseconds granularity. A backup's expiration time can be configured in
+   * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+   * copying an existing backup, the expiration time specified must be
+   * less than `Backup.max_expire_time`.
+   * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The maxExpireTime. + */ + com.google.protobuf.Timestamp getMaxExpireTime(); + /** + * + * + *
+   * Output only. The max allowed expiration time of the backup, with
+   * microseconds granularity. A backup's expiration time can be configured in
+   * multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or
+   * copying an existing backup, the expiration time specified must be
+   * less than `Backup.max_expire_time`.
+   * 
+ * + * + * .google.protobuf.Timestamp max_expire_time = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + com.google.protobuf.TimestampOrBuilder getMaxExpireTimeOrBuilder(); } diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupProto.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupProto.java index aafa5c2fc9b..d5a258d0e52 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupProto.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupProto.java @@ -39,6 +39,14 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_spanner_admin_database_v1_CreateBackupMetadata_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_spanner_admin_database_v1_CreateBackupMetadata_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_admin_database_v1_CopyBackupRequest_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_admin_database_v1_CopyBackupRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_spanner_admin_database_v1_UpdateBackupRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -75,6 +83,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_spanner_admin_database_v1_CreateBackupEncryptionConfig_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_spanner_admin_database_v1_CreateBackupEncryptionConfig_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -86,90 +98,115 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { java.lang.String[] descriptorData = { "\n-google/spanner/admin/database/v1/backu" + "p.proto\022 google.spanner.admin.database.v" - + "1\032\034google/api/annotations.proto\032\037google/" - + "api/field_behavior.proto\032\031google/api/res" - + "ource.proto\032#google/longrunning/operatio" - + "ns.proto\032 google/protobuf/field_mask.pro" - + "to\032\037google/protobuf/timestamp.proto\032-goo" - + "gle/spanner/admin/database/v1/common.pro" - + "to\"\305\005\n\006Backup\0226\n\010database\030\002 \001(\tB$\372A!\n\037sp" - + "anner.googleapis.com/Database\0220\n\014version" - + "_time\030\t \001(\0132\032.google.protobuf.Timestamp\022" - + "/\n\013expire_time\030\003 \001(\0132\032.google.protobuf.T" - + "imestamp\022\014\n\004name\030\001 \001(\t\0224\n\013create_time\030\004 " - + "\001(\0132\032.google.protobuf.TimestampB\003\340A\003\022\027\n\n" - + "size_bytes\030\005 \001(\003B\003\340A\003\022B\n\005state\030\006 \001(\0162..g" - + "oogle.spanner.admin.database.v1.Backup.S" - + "tateB\003\340A\003\022F\n\025referencing_databases\030\007 \003(\t" - + "B\'\340A\003\372A!\n\037spanner.googleapis.com/Databas" - + "e\022N\n\017encryption_info\030\010 \001(\01320.google.span" - + "ner.admin.database.v1.EncryptionInfoB\003\340A" - + "\003\022P\n\020database_dialect\030\n \001(\01621.google.spa" - + "nner.admin.database.v1.DatabaseDialectB\003" - + "\340A\003\"7\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022\014\n\010C" - + "REATING\020\001\022\t\n\005READY\020\002:\\\352AY\n\035spanner.googl" - + "eapis.com/Backup\0228projects/{project}/ins" - + "tances/{instance}/backups/{backup}\"\205\002\n\023C" - + "reateBackupRequest\0227\n\006parent\030\001 \001(\tB\'\340A\002\372" - + "A!\n\037spanner.googleapis.com/Instance\022\026\n\tb" - + "ackup_id\030\002 \001(\tB\003\340A\002\022=\n\006backup\030\003 \001(\0132(.go" - + "ogle.spanner.admin.database.v1.BackupB\003\340" - + "A\002\022^\n\021encryption_config\030\004 \001(\0132>.google.s" - + "panner.admin.database.v1.CreateBackupEnc" - + "ryptionConfigB\003\340A\001\"\370\001\n\024CreateBackupMetad" - + "ata\0220\n\004name\030\001 \001(\tB\"\372A\037\n\035spanner.googleap" - + "is.com/Backup\0226\n\010database\030\002 \001(\tB$\372A!\n\037sp" - + "anner.googleapis.com/Database\022E\n\010progres" - + "s\030\003 \001(\01323.google.spanner.admin.database." - + "v1.OperationProgress\022/\n\013cancel_time\030\004 \001(" - + "\0132\032.google.protobuf.Timestamp\"\212\001\n\023Update" - + "BackupRequest\022=\n\006backup\030\001 \001(\0132(.google.s" - + "panner.admin.database.v1.BackupB\003\340A\002\0224\n\013" - + "update_mask\030\002 \001(\0132\032.google.protobuf.Fiel" - + "dMaskB\003\340A\002\"G\n\020GetBackupRequest\0223\n\004name\030\001" - + " \001(\tB%\340A\002\372A\037\n\035spanner.googleapis.com/Bac" - + "kup\"J\n\023DeleteBackupRequest\0223\n\004name\030\001 \001(\t" - + "B%\340A\002\372A\037\n\035spanner.googleapis.com/Backup\"" - + "\204\001\n\022ListBackupsRequest\0227\n\006parent\030\001 \001(\tB\'" - + "\340A\002\372A!\n\037spanner.googleapis.com/Instance\022" - + "\016\n\006filter\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\022\n\npa" - + "ge_token\030\004 \001(\t\"i\n\023ListBackupsResponse\0229\n" - + "\007backups\030\001 \003(\0132(.google.spanner.admin.da" - + "tabase.v1.Backup\022\027\n\017next_page_token\030\002 \001(" - + "\t\"\215\001\n\033ListBackupOperationsRequest\0227\n\006par" - + "ent\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.googleapis.co" - + "m/Instance\022\016\n\006filter\030\002 \001(\t\022\021\n\tpage_size\030" - + "\003 \001(\005\022\022\n\npage_token\030\004 \001(\t\"j\n\034ListBackupO" - + "perationsResponse\0221\n\noperations\030\001 \003(\0132\035." - + "google.longrunning.Operation\022\027\n\017next_pag" - + "e_token\030\002 \001(\t\"\342\001\n\nBackupInfo\0222\n\006backup\030\001" - + " \001(\tB\"\372A\037\n\035spanner.googleapis.com/Backup" - + "\0220\n\014version_time\030\004 \001(\0132\032.google.protobuf" - + ".Timestamp\022/\n\013create_time\030\002 \001(\0132\032.google" - + ".protobuf.Timestamp\022=\n\017source_database\030\003" - + " \001(\tB$\372A!\n\037spanner.googleapis.com/Databa" - + "se\"\335\002\n\034CreateBackupEncryptionConfig\022k\n\017e" - + "ncryption_type\030\001 \001(\0162M.google.spanner.ad" - + "min.database.v1.CreateBackupEncryptionCo" - + "nfig.EncryptionTypeB\003\340A\002\022?\n\014kms_key_name" - + "\030\002 \001(\tB)\340A\001\372A#\n!cloudkms.googleapis.com/" - + "CryptoKey\"\216\001\n\016EncryptionType\022\037\n\033ENCRYPTI" - + "ON_TYPE_UNSPECIFIED\020\000\022\033\n\027USE_DATABASE_EN" - + "CRYPTION\020\001\022\035\n\031GOOGLE_DEFAULT_ENCRYPTION\020" - + "\002\022\037\n\033CUSTOMER_MANAGED_ENCRYPTION\020\003B\377\001\n$c" - + "om.google.spanner.admin.database.v1B\013Bac" - + "kupProtoP\001ZHgoogle.golang.org/genproto/g" - + "oogleapis/spanner/admin/database/v1;data" - + "base\252\002&Google.Cloud.Spanner.Admin.Databa" - + "se.V1\312\002&Google\\Cloud\\Spanner\\Admin\\Datab" - + "ase\\V1\352\002+Google::Cloud::Spanner::Admin::" - + "Database::V1b\006proto3" + + "1\032\037google/api/field_behavior.proto\032\031goog" + + "le/api/resource.proto\032#google/longrunnin" + + "g/operations.proto\032 google/protobuf/fiel" + + "d_mask.proto\032\037google/protobuf/timestamp." + + "proto\032-google/spanner/admin/database/v1/" + + "common.proto\"\303\006\n\006Backup\0226\n\010database\030\002 \001(" + + "\tB$\372A!\n\037spanner.googleapis.com/Database\022" + + "0\n\014version_time\030\t \001(\0132\032.google.protobuf." + + "Timestamp\022/\n\013expire_time\030\003 \001(\0132\032.google." + + "protobuf.Timestamp\022\014\n\004name\030\001 \001(\t\0224\n\013crea" + + "te_time\030\004 \001(\0132\032.google.protobuf.Timestam" + + "pB\003\340A\003\022\027\n\nsize_bytes\030\005 \001(\003B\003\340A\003\022B\n\005state" + + "\030\006 \001(\0162..google.spanner.admin.database.v" + + "1.Backup.StateB\003\340A\003\022F\n\025referencing_datab" + + "ases\030\007 \003(\tB\'\340A\003\372A!\n\037spanner.googleapis.c" + + "om/Database\022N\n\017encryption_info\030\010 \001(\01320.g" + + "oogle.spanner.admin.database.v1.Encrypti" + + "onInfoB\003\340A\003\022P\n\020database_dialect\030\n \001(\01621." + + "google.spanner.admin.database.v1.Databas" + + "eDialectB\003\340A\003\022B\n\023referencing_backups\030\013 \003" + + "(\tB%\340A\003\372A\037\n\035spanner.googleapis.com/Backu" + + "p\0228\n\017max_expire_time\030\014 \001(\0132\032.google.prot" + + "obuf.TimestampB\003\340A\003\"7\n\005State\022\025\n\021STATE_UN" + + "SPECIFIED\020\000\022\014\n\010CREATING\020\001\022\t\n\005READY\020\002:\\\352A" + + "Y\n\035spanner.googleapis.com/Backup\0228projec" + + "ts/{project}/instances/{instance}/backup" + + "s/{backup}\"\205\002\n\023CreateBackupRequest\0227\n\006pa" + + "rent\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.googleapis.c" + + "om/Instance\022\026\n\tbackup_id\030\002 \001(\tB\003\340A\002\022=\n\006b" + + "ackup\030\003 \001(\0132(.google.spanner.admin.datab" + + "ase.v1.BackupB\003\340A\002\022^\n\021encryption_config\030" + + "\004 \001(\0132>.google.spanner.admin.database.v1" + + ".CreateBackupEncryptionConfigB\003\340A\001\"\370\001\n\024C" + + "reateBackupMetadata\0220\n\004name\030\001 \001(\tB\"\372A\037\n\035" + + "spanner.googleapis.com/Backup\0226\n\010databas" + + "e\030\002 \001(\tB$\372A!\n\037spanner.googleapis.com/Dat" + + "abase\022E\n\010progress\030\003 \001(\01323.google.spanner" + + ".admin.database.v1.OperationProgress\022/\n\013" + + "cancel_time\030\004 \001(\0132\032.google.protobuf.Time" + + "stamp\"\266\002\n\021CopyBackupRequest\0227\n\006parent\030\001 " + + "\001(\tB\'\340A\002\372A!\n\037spanner.googleapis.com/Inst" + + "ance\022\026\n\tbackup_id\030\002 \001(\tB\003\340A\002\022<\n\rsource_b" + + "ackup\030\003 \001(\tB%\340A\002\372A\037\n\035spanner.googleapis." + + "com/Backup\0224\n\013expire_time\030\004 \001(\0132\032.google" + + ".protobuf.TimestampB\003\340A\002\022\\\n\021encryption_c" + + "onfig\030\005 \001(\0132<.google.spanner.admin.datab" + + "ase.v1.CopyBackupEncryptionConfigB\003\340A\001\"\371" + + "\001\n\022CopyBackupMetadata\0220\n\004name\030\001 \001(\tB\"\372A\037" + + "\n\035spanner.googleapis.com/Backup\0229\n\rsourc" + + "e_backup\030\002 \001(\tB\"\372A\037\n\035spanner.googleapis." + + "com/Backup\022E\n\010progress\030\003 \001(\01323.google.sp" + + "anner.admin.database.v1.OperationProgres" + + "s\022/\n\013cancel_time\030\004 \001(\0132\032.google.protobuf" + + ".Timestamp\"\212\001\n\023UpdateBackupRequest\022=\n\006ba" + + "ckup\030\001 \001(\0132(.google.spanner.admin.databa" + + "se.v1.BackupB\003\340A\002\0224\n\013update_mask\030\002 \001(\0132\032" + + ".google.protobuf.FieldMaskB\003\340A\002\"G\n\020GetBa" + + "ckupRequest\0223\n\004name\030\001 \001(\tB%\340A\002\372A\037\n\035spann" + + "er.googleapis.com/Backup\"J\n\023DeleteBackup" + + "Request\0223\n\004name\030\001 \001(\tB%\340A\002\372A\037\n\035spanner.g" + + "oogleapis.com/Backup\"\204\001\n\022ListBackupsRequ" + + "est\0227\n\006parent\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.goo" + + "gleapis.com/Instance\022\016\n\006filter\030\002 \001(\t\022\021\n\t" + + "page_size\030\003 \001(\005\022\022\n\npage_token\030\004 \001(\t\"i\n\023L" + + "istBackupsResponse\0229\n\007backups\030\001 \003(\0132(.go" + + "ogle.spanner.admin.database.v1.Backup\022\027\n" + + "\017next_page_token\030\002 \001(\t\"\215\001\n\033ListBackupOpe" + + "rationsRequest\0227\n\006parent\030\001 \001(\tB\'\340A\002\372A!\n\037" + + "spanner.googleapis.com/Instance\022\016\n\006filte" + + "r\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\022\n\npage_token" + + "\030\004 \001(\t\"j\n\034ListBackupOperationsResponse\0221" + + "\n\noperations\030\001 \003(\0132\035.google.longrunning." + + "Operation\022\027\n\017next_page_token\030\002 \001(\t\"\342\001\n\nB" + + "ackupInfo\0222\n\006backup\030\001 \001(\tB\"\372A\037\n\035spanner." + + "googleapis.com/Backup\0220\n\014version_time\030\004 " + + "\001(\0132\032.google.protobuf.Timestamp\022/\n\013creat" + + "e_time\030\002 \001(\0132\032.google.protobuf.Timestamp" + + "\022=\n\017source_database\030\003 \001(\tB$\372A!\n\037spanner." + + "googleapis.com/Database\"\335\002\n\034CreateBackup" + + "EncryptionConfig\022k\n\017encryption_type\030\001 \001(" + + "\0162M.google.spanner.admin.database.v1.Cre" + + "ateBackupEncryptionConfig.EncryptionType" + + "B\003\340A\002\022?\n\014kms_key_name\030\002 \001(\tB)\340A\001\372A#\n!clo" + + "udkms.googleapis.com/CryptoKey\"\216\001\n\016Encry" + + "ptionType\022\037\n\033ENCRYPTION_TYPE_UNSPECIFIED" + + "\020\000\022\033\n\027USE_DATABASE_ENCRYPTION\020\001\022\035\n\031GOOGL" + + "E_DEFAULT_ENCRYPTION\020\002\022\037\n\033CUSTOMER_MANAG" + + "ED_ENCRYPTION\020\003\"\351\002\n\032CopyBackupEncryption" + + "Config\022i\n\017encryption_type\030\001 \001(\0162K.google" + + ".spanner.admin.database.v1.CopyBackupEnc" + + "ryptionConfig.EncryptionTypeB\003\340A\002\022?\n\014kms" + + "_key_name\030\002 \001(\tB)\340A\001\372A#\n!cloudkms.google" + + "apis.com/CryptoKey\"\236\001\n\016EncryptionType\022\037\n" + + "\033ENCRYPTION_TYPE_UNSPECIFIED\020\000\022+\n\'USE_CO" + + "NFIG_DEFAULT_OR_BACKUP_ENCRYPTION\020\001\022\035\n\031G" + + "OOGLE_DEFAULT_ENCRYPTION\020\002\022\037\n\033CUSTOMER_M" + + "ANAGED_ENCRYPTION\020\003B\377\001\n$com.google.spann" + + "er.admin.database.v1B\013BackupProtoP\001ZHgoo" + + "gle.golang.org/genproto/googleapis/spann" + + "er/admin/database/v1;database\252\002&Google.C" + + "loud.Spanner.Admin.Database.V1\312\002&Google\\" + + "Cloud\\Spanner\\Admin\\Database\\V1\352\002+Google" + + "::Cloud::Spanner::Admin::Database::V1b\006p" + + "roto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), com.google.api.FieldBehaviorProto.getDescriptor(), com.google.api.ResourceProto.getDescriptor(), com.google.longrunning.OperationsProto.getDescriptor(), @@ -193,6 +230,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "ReferencingDatabases", "EncryptionInfo", "DatabaseDialect", + "ReferencingBackups", + "MaxExpireTime", }); internal_static_google_spanner_admin_database_v1_CreateBackupRequest_descriptor = getDescriptor().getMessageTypes().get(1); @@ -210,8 +249,24 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "Name", "Database", "Progress", "CancelTime", }); - internal_static_google_spanner_admin_database_v1_UpdateBackupRequest_descriptor = + internal_static_google_spanner_admin_database_v1_CopyBackupRequest_descriptor = getDescriptor().getMessageTypes().get(3); + internal_static_google_spanner_admin_database_v1_CopyBackupRequest_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_admin_database_v1_CopyBackupRequest_descriptor, + new java.lang.String[] { + "Parent", "BackupId", "SourceBackup", "ExpireTime", "EncryptionConfig", + }); + internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_descriptor, + new java.lang.String[] { + "Name", "SourceBackup", "Progress", "CancelTime", + }); + internal_static_google_spanner_admin_database_v1_UpdateBackupRequest_descriptor = + getDescriptor().getMessageTypes().get(5); internal_static_google_spanner_admin_database_v1_UpdateBackupRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_UpdateBackupRequest_descriptor, @@ -219,7 +274,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Backup", "UpdateMask", }); internal_static_google_spanner_admin_database_v1_GetBackupRequest_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(6); internal_static_google_spanner_admin_database_v1_GetBackupRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_GetBackupRequest_descriptor, @@ -227,7 +282,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", }); internal_static_google_spanner_admin_database_v1_DeleteBackupRequest_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(7); internal_static_google_spanner_admin_database_v1_DeleteBackupRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_DeleteBackupRequest_descriptor, @@ -235,7 +290,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", }); internal_static_google_spanner_admin_database_v1_ListBackupsRequest_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(8); internal_static_google_spanner_admin_database_v1_ListBackupsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_ListBackupsRequest_descriptor, @@ -243,7 +298,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "Filter", "PageSize", "PageToken", }); internal_static_google_spanner_admin_database_v1_ListBackupsResponse_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(9); internal_static_google_spanner_admin_database_v1_ListBackupsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_ListBackupsResponse_descriptor, @@ -251,7 +306,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Backups", "NextPageToken", }); internal_static_google_spanner_admin_database_v1_ListBackupOperationsRequest_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(10); internal_static_google_spanner_admin_database_v1_ListBackupOperationsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_ListBackupOperationsRequest_descriptor, @@ -259,7 +314,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "Filter", "PageSize", "PageToken", }); internal_static_google_spanner_admin_database_v1_ListBackupOperationsResponse_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(11); internal_static_google_spanner_admin_database_v1_ListBackupOperationsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_ListBackupOperationsResponse_descriptor, @@ -267,7 +322,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Operations", "NextPageToken", }); internal_static_google_spanner_admin_database_v1_BackupInfo_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(12); internal_static_google_spanner_admin_database_v1_BackupInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_BackupInfo_descriptor, @@ -275,13 +330,21 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Backup", "VersionTime", "CreateTime", "SourceDatabase", }); internal_static_google_spanner_admin_database_v1_CreateBackupEncryptionConfig_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(13); internal_static_google_spanner_admin_database_v1_CreateBackupEncryptionConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_CreateBackupEncryptionConfig_descriptor, new java.lang.String[] { "EncryptionType", "KmsKeyName", }); + internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_descriptor = + getDescriptor().getMessageTypes().get(14); + internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_descriptor, + new java.lang.String[] { + "EncryptionType", "KmsKeyName", + }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); @@ -289,7 +352,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { registry.add(com.google.api.ResourceProto.resourceReference); com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor( descriptor, registry); - com.google.api.AnnotationsProto.getDescriptor(); com.google.api.FieldBehaviorProto.getDescriptor(); com.google.api.ResourceProto.getDescriptor(); com.google.longrunning.OperationsProto.getDescriptor(); diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CommonProto.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CommonProto.java index 157e9098686..73dfc1efb12 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CommonProto.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CommonProto.java @@ -50,46 +50,45 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { java.lang.String[] descriptorData = { "\n-google/spanner/admin/database/v1/commo" + "n.proto\022 google.spanner.admin.database.v" - + "1\032\034google/api/annotations.proto\032\037google/" - + "api/field_behavior.proto\032\031google/api/res" - + "ource.proto\032\037google/protobuf/timestamp.p" - + "roto\032\027google/rpc/status.proto\"\213\001\n\021Operat" - + "ionProgress\022\030\n\020progress_percent\030\001 \001(\005\022.\n" - + "\nstart_time\030\002 \001(\0132\032.google.protobuf.Time" - + "stamp\022,\n\010end_time\030\003 \001(\0132\032.google.protobu" - + "f.Timestamp\"P\n\020EncryptionConfig\022<\n\014kms_k" - + "ey_name\030\002 \001(\tB&\372A#\n!cloudkms.googleapis." - + "com/CryptoKey\"\302\002\n\016EncryptionInfo\022S\n\017encr" - + "yption_type\030\003 \001(\01625.google.spanner.admin" - + ".database.v1.EncryptionInfo.TypeB\003\340A\003\0222\n" - + "\021encryption_status\030\004 \001(\0132\022.google.rpc.St" - + "atusB\003\340A\003\022I\n\017kms_key_version\030\002 \001(\tB0\340A\003\372" - + "A*\n(cloudkms.googleapis.com/CryptoKeyVer" - + "sion\"\\\n\004Type\022\024\n\020TYPE_UNSPECIFIED\020\000\022\035\n\031GO" - + "OGLE_DEFAULT_ENCRYPTION\020\001\022\037\n\033CUSTOMER_MA" - + "NAGED_ENCRYPTION\020\002*\\\n\017DatabaseDialect\022 \n" - + "\034DATABASE_DIALECT_UNSPECIFIED\020\000\022\027\n\023GOOGL" - + "E_STANDARD_SQL\020\001\022\016\n\nPOSTGRESQL\020\002B\244\004\n$com" - + ".google.spanner.admin.database.v1B\013Commo" - + "nProtoP\001ZHgoogle.golang.org/genproto/goo" - + "gleapis/spanner/admin/database/v1;databa" - + "se\252\002&Google.Cloud.Spanner.Admin.Database" - + ".V1\312\002&Google\\Cloud\\Spanner\\Admin\\Databas" - + "e\\V1\352\002+Google::Cloud::Spanner::Admin::Da" - + "tabase::V1\352Ax\n!cloudkms.googleapis.com/C" - + "ryptoKey\022Sprojects/{project}/locations/{" - + "location}/keyRings/{key_ring}/cryptoKeys" - + "/{crypto_key}\352A\246\001\n(cloudkms.googleapis.c" - + "om/CryptoKeyVersion\022zprojects/{project}/" - + "locations/{location}/keyRings/{key_ring}" - + "/cryptoKeys/{crypto_key}/cryptoKeyVersio" - + "ns/{crypto_key_version}b\006proto3" + + "1\032\037google/api/field_behavior.proto\032\031goog" + + "le/api/resource.proto\032\037google/protobuf/t" + + "imestamp.proto\032\027google/rpc/status.proto\"" + + "\213\001\n\021OperationProgress\022\030\n\020progress_percen" + + "t\030\001 \001(\005\022.\n\nstart_time\030\002 \001(\0132\032.google.pro" + + "tobuf.Timestamp\022,\n\010end_time\030\003 \001(\0132\032.goog" + + "le.protobuf.Timestamp\"P\n\020EncryptionConfi" + + "g\022<\n\014kms_key_name\030\002 \001(\tB&\372A#\n!cloudkms.g" + + "oogleapis.com/CryptoKey\"\302\002\n\016EncryptionIn" + + "fo\022S\n\017encryption_type\030\003 \001(\01625.google.spa" + + "nner.admin.database.v1.EncryptionInfo.Ty" + + "peB\003\340A\003\0222\n\021encryption_status\030\004 \001(\0132\022.goo" + + "gle.rpc.StatusB\003\340A\003\022I\n\017kms_key_version\030\002" + + " \001(\tB0\340A\003\372A*\n(cloudkms.googleapis.com/Cr" + + "yptoKeyVersion\"\\\n\004Type\022\024\n\020TYPE_UNSPECIFI" + + "ED\020\000\022\035\n\031GOOGLE_DEFAULT_ENCRYPTION\020\001\022\037\n\033C" + + "USTOMER_MANAGED_ENCRYPTION\020\002*\\\n\017Database" + + "Dialect\022 \n\034DATABASE_DIALECT_UNSPECIFIED\020" + + "\000\022\027\n\023GOOGLE_STANDARD_SQL\020\001\022\016\n\nPOSTGRESQL" + + "\020\002B\244\004\n$com.google.spanner.admin.database" + + ".v1B\013CommonProtoP\001ZHgoogle.golang.org/ge" + + "nproto/googleapis/spanner/admin/database" + + "/v1;database\252\002&Google.Cloud.Spanner.Admi" + + "n.Database.V1\312\002&Google\\Cloud\\Spanner\\Adm" + + "in\\Database\\V1\352\002+Google::Cloud::Spanner:" + + ":Admin::Database::V1\352Ax\n!cloudkms.google" + + "apis.com/CryptoKey\022Sprojects/{project}/l" + + "ocations/{location}/keyRings/{key_ring}/" + + "cryptoKeys/{crypto_key}\352A\246\001\n(cloudkms.go" + + "ogleapis.com/CryptoKeyVersion\022zprojects/" + + "{project}/locations/{location}/keyRings/" + + "{key_ring}/cryptoKeys/{crypto_key}/crypt" + + "oKeyVersions/{crypto_key_version}b\006proto" + + "3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), com.google.api.FieldBehaviorProto.getDescriptor(), com.google.api.ResourceProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), @@ -126,7 +125,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { registry.add(com.google.api.ResourceProto.resourceReference); com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor( descriptor, registry); - com.google.api.AnnotationsProto.getDescriptor(); com.google.api.FieldBehaviorProto.getDescriptor(); com.google.api.ResourceProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfig.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfig.java new file mode 100644 index 00000000000..ea29df0725f --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfig.java @@ -0,0 +1,1057 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/backup.proto + +package com.google.spanner.admin.database.v1; + +/** + * + * + *
+ * Encryption configuration for the copied backup.
+ * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.CopyBackupEncryptionConfig} + */ +public final class CopyBackupEncryptionConfig extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.admin.database.v1.CopyBackupEncryptionConfig) + CopyBackupEncryptionConfigOrBuilder { + private static final long serialVersionUID = 0L; + // Use CopyBackupEncryptionConfig.newBuilder() to construct. + private CopyBackupEncryptionConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private CopyBackupEncryptionConfig() { + encryptionType_ = 0; + kmsKeyName_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new CopyBackupEncryptionConfig(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private CopyBackupEncryptionConfig( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: + { + int rawValue = input.readEnum(); + + encryptionType_ = rawValue; + break; + } + case 18: + { + java.lang.String s = input.readStringRequireUtf8(); + + kmsKeyName_ = s; + break; + } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.class, + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.Builder.class); + } + + /** + * + * + *
+   * Encryption types for the backup.
+   * 
+ * + * Protobuf enum {@code + * google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType} + */ + public enum EncryptionType implements com.google.protobuf.ProtocolMessageEnum { + /** + * + * + *
+     * Unspecified. Do not use.
+     * 
+ * + * ENCRYPTION_TYPE_UNSPECIFIED = 0; + */ + ENCRYPTION_TYPE_UNSPECIFIED(0), + /** + * + * + *
+     * This is the default option for [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup]
+     * when [encryption_config][google.spanner.admin.database.v1.CopyBackupEncryptionConfig] is not specified.
+     * For example, if the source backup is using `Customer_Managed_Encryption`,
+     * the backup will be using the same Cloud KMS key as the source backup.
+     * 
+ * + * USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION = 1; + */ + USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION(1), + /** + * + * + *
+     * Use Google default encryption.
+     * 
+ * + * GOOGLE_DEFAULT_ENCRYPTION = 2; + */ + GOOGLE_DEFAULT_ENCRYPTION(2), + /** + * + * + *
+     * Use customer managed encryption. If specified, `kms_key_name`
+     * must contain a valid Cloud KMS key.
+     * 
+ * + * CUSTOMER_MANAGED_ENCRYPTION = 3; + */ + CUSTOMER_MANAGED_ENCRYPTION(3), + UNRECOGNIZED(-1), + ; + + /** + * + * + *
+     * Unspecified. Do not use.
+     * 
+ * + * ENCRYPTION_TYPE_UNSPECIFIED = 0; + */ + public static final int ENCRYPTION_TYPE_UNSPECIFIED_VALUE = 0; + /** + * + * + *
+     * This is the default option for [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup]
+     * when [encryption_config][google.spanner.admin.database.v1.CopyBackupEncryptionConfig] is not specified.
+     * For example, if the source backup is using `Customer_Managed_Encryption`,
+     * the backup will be using the same Cloud KMS key as the source backup.
+     * 
+ * + * USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION = 1; + */ + public static final int USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION_VALUE = 1; + /** + * + * + *
+     * Use Google default encryption.
+     * 
+ * + * GOOGLE_DEFAULT_ENCRYPTION = 2; + */ + public static final int GOOGLE_DEFAULT_ENCRYPTION_VALUE = 2; + /** + * + * + *
+     * Use customer managed encryption. If specified, `kms_key_name`
+     * must contain a valid Cloud KMS key.
+     * 
+ * + * CUSTOMER_MANAGED_ENCRYPTION = 3; + */ + public static final int CUSTOMER_MANAGED_ENCRYPTION_VALUE = 3; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static EncryptionType valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static EncryptionType forNumber(int value) { + switch (value) { + case 0: + return ENCRYPTION_TYPE_UNSPECIFIED; + case 1: + return USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION; + case 2: + return GOOGLE_DEFAULT_ENCRYPTION; + case 3: + return CUSTOMER_MANAGED_ENCRYPTION; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public EncryptionType findValueByNumber(int number) { + return EncryptionType.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.getDescriptor() + .getEnumTypes() + .get(0); + } + + private static final EncryptionType[] VALUES = values(); + + public static EncryptionType valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private EncryptionType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType) + } + + public static final int ENCRYPTION_TYPE_FIELD_NUMBER = 1; + private int encryptionType_; + /** + * + * + *
+   * Required. The encryption type of the backup.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The enum numeric value on the wire for encryptionType. + */ + @java.lang.Override + public int getEncryptionTypeValue() { + return encryptionType_; + } + /** + * + * + *
+   * Required. The encryption type of the backup.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The encryptionType. + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType + getEncryptionType() { + @SuppressWarnings("deprecation") + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType result = + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType.valueOf( + encryptionType_); + return result == null + ? com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType + .UNRECOGNIZED + : result; + } + + public static final int KMS_KEY_NAME_FIELD_NUMBER = 2; + private volatile java.lang.Object kmsKeyName_; + /** + * + * + *
+   * Optional. The Cloud KMS key that will be used to protect the backup.
+   * This field should be set only when
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+   * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+   * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+   * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @return The kmsKeyName. + */ + @java.lang.Override + public java.lang.String getKmsKeyName() { + java.lang.Object ref = kmsKeyName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + kmsKeyName_ = s; + return s; + } + } + /** + * + * + *
+   * Optional. The Cloud KMS key that will be used to protect the backup.
+   * This field should be set only when
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+   * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+   * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+   * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for kmsKeyName. + */ + @java.lang.Override + public com.google.protobuf.ByteString getKmsKeyNameBytes() { + java.lang.Object ref = kmsKeyName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + kmsKeyName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (encryptionType_ + != com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType + .ENCRYPTION_TYPE_UNSPECIFIED + .getNumber()) { + output.writeEnum(1, encryptionType_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kmsKeyName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kmsKeyName_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (encryptionType_ + != com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType + .ENCRYPTION_TYPE_UNSPECIFIED + .getNumber()) { + size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, encryptionType_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kmsKeyName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kmsKeyName_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig)) { + return super.equals(obj); + } + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig other = + (com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig) obj; + + if (encryptionType_ != other.encryptionType_) return false; + if (!getKmsKeyName().equals(other.getKmsKeyName())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ENCRYPTION_TYPE_FIELD_NUMBER; + hash = (53 * hash) + encryptionType_; + hash = (37 * hash) + KMS_KEY_NAME_FIELD_NUMBER; + hash = (53 * hash) + getKmsKeyName().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Encryption configuration for the copied backup.
+   * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.CopyBackupEncryptionConfig} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.admin.database.v1.CopyBackupEncryptionConfig) + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfigOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.class, + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.Builder.class); + } + + // Construct using com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + encryptionType_ = 0; + + kmsKeyName_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_descriptor; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig + getDefaultInstanceForType() { + return com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig build() { + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig buildPartial() { + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig result = + new com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig(this); + result.encryptionType_ = encryptionType_; + result.kmsKeyName_ = kmsKeyName_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig) { + return mergeFrom((com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig other) { + if (other + == com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.getDefaultInstance()) + return this; + if (other.encryptionType_ != 0) { + setEncryptionTypeValue(other.getEncryptionTypeValue()); + } + if (!other.getKmsKeyName().isEmpty()) { + kmsKeyName_ = other.kmsKeyName_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig) + e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int encryptionType_ = 0; + /** + * + * + *
+     * Required. The encryption type of the backup.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The enum numeric value on the wire for encryptionType. + */ + @java.lang.Override + public int getEncryptionTypeValue() { + return encryptionType_; + } + /** + * + * + *
+     * Required. The encryption type of the backup.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @param value The enum numeric value on the wire for encryptionType to set. + * @return This builder for chaining. + */ + public Builder setEncryptionTypeValue(int value) { + + encryptionType_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The encryption type of the backup.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The encryptionType. + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType + getEncryptionType() { + @SuppressWarnings("deprecation") + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType result = + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType.valueOf( + encryptionType_); + return result == null + ? com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType + .UNRECOGNIZED + : result; + } + /** + * + * + *
+     * Required. The encryption type of the backup.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @param value The encryptionType to set. + * @return This builder for chaining. + */ + public Builder setEncryptionType( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType value) { + if (value == null) { + throw new NullPointerException(); + } + + encryptionType_ = value.getNumber(); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The encryption type of the backup.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return This builder for chaining. + */ + public Builder clearEncryptionType() { + + encryptionType_ = 0; + onChanged(); + return this; + } + + private java.lang.Object kmsKeyName_ = ""; + /** + * + * + *
+     * Optional. The Cloud KMS key that will be used to protect the backup.
+     * This field should be set only when
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+     * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+     * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+     * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @return The kmsKeyName. + */ + public java.lang.String getKmsKeyName() { + java.lang.Object ref = kmsKeyName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + kmsKeyName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Optional. The Cloud KMS key that will be used to protect the backup.
+     * This field should be set only when
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+     * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+     * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+     * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for kmsKeyName. + */ + public com.google.protobuf.ByteString getKmsKeyNameBytes() { + java.lang.Object ref = kmsKeyName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + kmsKeyName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Optional. The Cloud KMS key that will be used to protect the backup.
+     * This field should be set only when
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+     * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+     * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+     * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @param value The kmsKeyName to set. + * @return This builder for chaining. + */ + public Builder setKmsKeyName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + kmsKeyName_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. The Cloud KMS key that will be used to protect the backup.
+     * This field should be set only when
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+     * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+     * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+     * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @return This builder for chaining. + */ + public Builder clearKmsKeyName() { + + kmsKeyName_ = getDefaultInstance().getKmsKeyName(); + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. The Cloud KMS key that will be used to protect the backup.
+     * This field should be set only when
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+     * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+     * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+     * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @param value The bytes for kmsKeyName to set. + * @return This builder for chaining. + */ + public Builder setKmsKeyNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + kmsKeyName_ = value; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.admin.database.v1.CopyBackupEncryptionConfig) + } + + // @@protoc_insertion_point(class_scope:google.spanner.admin.database.v1.CopyBackupEncryptionConfig) + private static final com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig(); + } + + public static com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CopyBackupEncryptionConfig parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CopyBackupEncryptionConfig(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfigOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfigOrBuilder.java new file mode 100644 index 00000000000..a6117dfb660 --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfigOrBuilder.java @@ -0,0 +1,92 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/backup.proto + +package com.google.spanner.admin.database.v1; + +public interface CopyBackupEncryptionConfigOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.admin.database.v1.CopyBackupEncryptionConfig) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. The encryption type of the backup.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The enum numeric value on the wire for encryptionType. + */ + int getEncryptionTypeValue(); + /** + * + * + *
+   * Required. The encryption type of the backup.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType encryption_type = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The encryptionType. + */ + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType + getEncryptionType(); + + /** + * + * + *
+   * Optional. The Cloud KMS key that will be used to protect the backup.
+   * This field should be set only when
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+   * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+   * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+   * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @return The kmsKeyName. + */ + java.lang.String getKmsKeyName(); + /** + * + * + *
+   * Optional. The Cloud KMS key that will be used to protect the backup.
+   * This field should be set only when
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is
+   * `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form
+   * `projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>`.
+   * 
+ * + * + * string kms_key_name = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for kmsKeyName. + */ + com.google.protobuf.ByteString getKmsKeyNameBytes(); +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadata.java new file mode 100644 index 00000000000..01e37326459 --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadata.java @@ -0,0 +1,1541 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/backup.proto + +package com.google.spanner.admin.database.v1; + +/** + * + * + *
+ * Metadata type for the google.longrunning.Operation returned by
+ * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup].
+ * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.CopyBackupMetadata} + */ +public final class CopyBackupMetadata extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.admin.database.v1.CopyBackupMetadata) + CopyBackupMetadataOrBuilder { + private static final long serialVersionUID = 0L; + // Use CopyBackupMetadata.newBuilder() to construct. + private CopyBackupMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private CopyBackupMetadata() { + name_ = ""; + sourceBackup_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new CopyBackupMetadata(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private CopyBackupMetadata( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + java.lang.String s = input.readStringRequireUtf8(); + + name_ = s; + break; + } + case 18: + { + java.lang.String s = input.readStringRequireUtf8(); + + sourceBackup_ = s; + break; + } + case 26: + { + com.google.spanner.admin.database.v1.OperationProgress.Builder subBuilder = null; + if (progress_ != null) { + subBuilder = progress_.toBuilder(); + } + progress_ = + input.readMessage( + com.google.spanner.admin.database.v1.OperationProgress.parser(), + extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(progress_); + progress_ = subBuilder.buildPartial(); + } + + break; + } + case 34: + { + com.google.protobuf.Timestamp.Builder subBuilder = null; + if (cancelTime_ != null) { + subBuilder = cancelTime_.toBuilder(); + } + cancelTime_ = + input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(cancelTime_); + cancelTime_ = subBuilder.buildPartial(); + } + + break; + } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.CopyBackupMetadata.class, + com.google.spanner.admin.database.v1.CopyBackupMetadata.Builder.class); + } + + public static final int NAME_FIELD_NUMBER = 1; + private volatile java.lang.Object name_; + /** + * + * + *
+   * The name of the backup being created through the copy operation.
+   * Values are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + * + * + *
+   * The name of the backup being created through the copy operation.
+   * Values are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCE_BACKUP_FIELD_NUMBER = 2; + private volatile java.lang.Object sourceBackup_; + /** + * + * + *
+   * The name of the source backup that is being copied.
+   * Values are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @return The sourceBackup. + */ + @java.lang.Override + public java.lang.String getSourceBackup() { + java.lang.Object ref = sourceBackup_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sourceBackup_ = s; + return s; + } + } + /** + * + * + *
+   * The name of the source backup that is being copied.
+   * Values are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @return The bytes for sourceBackup. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSourceBackupBytes() { + java.lang.Object ref = sourceBackup_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sourceBackup_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PROGRESS_FIELD_NUMBER = 3; + private com.google.spanner.admin.database.v1.OperationProgress progress_; + /** + * + * + *
+   * The progress of the
+   * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + * + * @return Whether the progress field is set. + */ + @java.lang.Override + public boolean hasProgress() { + return progress_ != null; + } + /** + * + * + *
+   * The progress of the
+   * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + * + * @return The progress. + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.OperationProgress getProgress() { + return progress_ == null + ? com.google.spanner.admin.database.v1.OperationProgress.getDefaultInstance() + : progress_; + } + /** + * + * + *
+   * The progress of the
+   * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgressOrBuilder() { + return getProgress(); + } + + public static final int CANCEL_TIME_FIELD_NUMBER = 4; + private com.google.protobuf.Timestamp cancelTime_; + /** + * + * + *
+   * The time at which cancellation of CopyBackup operation was received.
+   * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+   * starts asynchronous cancellation on a long-running operation. The server
+   * makes a best effort to cancel the operation, but success is not guaranteed.
+   * Clients can use
+   * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+   * other methods to check whether the cancellation succeeded or whether the
+   * operation completed despite cancellation. On successful cancellation,
+   * the operation is not deleted; instead, it becomes an operation with
+   * an [Operation.error][google.longrunning.Operation.error] value with a
+   * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+   * corresponding to `Code.CANCELLED`.
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + * + * @return Whether the cancelTime field is set. + */ + @java.lang.Override + public boolean hasCancelTime() { + return cancelTime_ != null; + } + /** + * + * + *
+   * The time at which cancellation of CopyBackup operation was received.
+   * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+   * starts asynchronous cancellation on a long-running operation. The server
+   * makes a best effort to cancel the operation, but success is not guaranteed.
+   * Clients can use
+   * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+   * other methods to check whether the cancellation succeeded or whether the
+   * operation completed despite cancellation. On successful cancellation,
+   * the operation is not deleted; instead, it becomes an operation with
+   * an [Operation.error][google.longrunning.Operation.error] value with a
+   * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+   * corresponding to `Code.CANCELLED`.
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + * + * @return The cancelTime. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getCancelTime() { + return cancelTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : cancelTime_; + } + /** + * + * + *
+   * The time at which cancellation of CopyBackup operation was received.
+   * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+   * starts asynchronous cancellation on a long-running operation. The server
+   * makes a best effort to cancel the operation, but success is not guaranteed.
+   * Clients can use
+   * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+   * other methods to check whether the cancellation succeeded or whether the
+   * operation completed despite cancellation. On successful cancellation,
+   * the operation is not deleted; instead, it becomes an operation with
+   * an [Operation.error][google.longrunning.Operation.error] value with a
+   * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+   * corresponding to `Code.CANCELLED`.
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getCancelTimeOrBuilder() { + return getCancelTime(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceBackup_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, sourceBackup_); + } + if (progress_ != null) { + output.writeMessage(3, getProgress()); + } + if (cancelTime_ != null) { + output.writeMessage(4, getCancelTime()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceBackup_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, sourceBackup_); + } + if (progress_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getProgress()); + } + if (cancelTime_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getCancelTime()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.admin.database.v1.CopyBackupMetadata)) { + return super.equals(obj); + } + com.google.spanner.admin.database.v1.CopyBackupMetadata other = + (com.google.spanner.admin.database.v1.CopyBackupMetadata) obj; + + if (!getName().equals(other.getName())) return false; + if (!getSourceBackup().equals(other.getSourceBackup())) return false; + if (hasProgress() != other.hasProgress()) return false; + if (hasProgress()) { + if (!getProgress().equals(other.getProgress())) return false; + } + if (hasCancelTime() != other.hasCancelTime()) return false; + if (hasCancelTime()) { + if (!getCancelTime().equals(other.getCancelTime())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + SOURCE_BACKUP_FIELD_NUMBER; + hash = (53 * hash) + getSourceBackup().hashCode(); + if (hasProgress()) { + hash = (37 * hash) + PROGRESS_FIELD_NUMBER; + hash = (53 * hash) + getProgress().hashCode(); + } + if (hasCancelTime()) { + hash = (37 * hash) + CANCEL_TIME_FIELD_NUMBER; + hash = (53 * hash) + getCancelTime().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.admin.database.v1.CopyBackupMetadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Metadata type for the google.longrunning.Operation returned by
+   * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup].
+   * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.CopyBackupMetadata} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.admin.database.v1.CopyBackupMetadata) + com.google.spanner.admin.database.v1.CopyBackupMetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.CopyBackupMetadata.class, + com.google.spanner.admin.database.v1.CopyBackupMetadata.Builder.class); + } + + // Construct using com.google.spanner.admin.database.v1.CopyBackupMetadata.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + name_ = ""; + + sourceBackup_ = ""; + + if (progressBuilder_ == null) { + progress_ = null; + } else { + progress_ = null; + progressBuilder_ = null; + } + if (cancelTimeBuilder_ == null) { + cancelTime_ = null; + } else { + cancelTime_ = null; + cancelTimeBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_descriptor; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupMetadata getDefaultInstanceForType() { + return com.google.spanner.admin.database.v1.CopyBackupMetadata.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupMetadata build() { + com.google.spanner.admin.database.v1.CopyBackupMetadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupMetadata buildPartial() { + com.google.spanner.admin.database.v1.CopyBackupMetadata result = + new com.google.spanner.admin.database.v1.CopyBackupMetadata(this); + result.name_ = name_; + result.sourceBackup_ = sourceBackup_; + if (progressBuilder_ == null) { + result.progress_ = progress_; + } else { + result.progress_ = progressBuilder_.build(); + } + if (cancelTimeBuilder_ == null) { + result.cancelTime_ = cancelTime_; + } else { + result.cancelTime_ = cancelTimeBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.admin.database.v1.CopyBackupMetadata) { + return mergeFrom((com.google.spanner.admin.database.v1.CopyBackupMetadata) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.admin.database.v1.CopyBackupMetadata other) { + if (other == com.google.spanner.admin.database.v1.CopyBackupMetadata.getDefaultInstance()) + return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + onChanged(); + } + if (!other.getSourceBackup().isEmpty()) { + sourceBackup_ = other.sourceBackup_; + onChanged(); + } + if (other.hasProgress()) { + mergeProgress(other.getProgress()); + } + if (other.hasCancelTime()) { + mergeCancelTime(other.getCancelTime()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.spanner.admin.database.v1.CopyBackupMetadata parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.spanner.admin.database.v1.CopyBackupMetadata) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object name_ = ""; + /** + * + * + *
+     * The name of the backup being created through the copy operation.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * The name of the backup being created through the copy operation.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @return The bytes for name. + */ + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * The name of the backup being created through the copy operation.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + name_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * The name of the backup being created through the copy operation.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @return This builder for chaining. + */ + public Builder clearName() { + + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * + * + *
+     * The name of the backup being created through the copy operation.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + name_ = value; + onChanged(); + return this; + } + + private java.lang.Object sourceBackup_ = ""; + /** + * + * + *
+     * The name of the source backup that is being copied.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @return The sourceBackup. + */ + public java.lang.String getSourceBackup() { + java.lang.Object ref = sourceBackup_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sourceBackup_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * The name of the source backup that is being copied.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @return The bytes for sourceBackup. + */ + public com.google.protobuf.ByteString getSourceBackupBytes() { + java.lang.Object ref = sourceBackup_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sourceBackup_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * The name of the source backup that is being copied.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @param value The sourceBackup to set. + * @return This builder for chaining. + */ + public Builder setSourceBackup(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + sourceBackup_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * The name of the source backup that is being copied.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @return This builder for chaining. + */ + public Builder clearSourceBackup() { + + sourceBackup_ = getDefaultInstance().getSourceBackup(); + onChanged(); + return this; + } + /** + * + * + *
+     * The name of the source backup that is being copied.
+     * Values are of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @param value The bytes for sourceBackup to set. + * @return This builder for chaining. + */ + public Builder setSourceBackupBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + sourceBackup_ = value; + onChanged(); + return this; + } + + private com.google.spanner.admin.database.v1.OperationProgress progress_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.OperationProgress, + com.google.spanner.admin.database.v1.OperationProgress.Builder, + com.google.spanner.admin.database.v1.OperationProgressOrBuilder> + progressBuilder_; + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + * + * @return Whether the progress field is set. + */ + public boolean hasProgress() { + return progressBuilder_ != null || progress_ != null; + } + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + * + * @return The progress. + */ + public com.google.spanner.admin.database.v1.OperationProgress getProgress() { + if (progressBuilder_ == null) { + return progress_ == null + ? com.google.spanner.admin.database.v1.OperationProgress.getDefaultInstance() + : progress_; + } else { + return progressBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + public Builder setProgress(com.google.spanner.admin.database.v1.OperationProgress value) { + if (progressBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + progress_ = value; + onChanged(); + } else { + progressBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + public Builder setProgress( + com.google.spanner.admin.database.v1.OperationProgress.Builder builderForValue) { + if (progressBuilder_ == null) { + progress_ = builderForValue.build(); + onChanged(); + } else { + progressBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + public Builder mergeProgress(com.google.spanner.admin.database.v1.OperationProgress value) { + if (progressBuilder_ == null) { + if (progress_ != null) { + progress_ = + com.google.spanner.admin.database.v1.OperationProgress.newBuilder(progress_) + .mergeFrom(value) + .buildPartial(); + } else { + progress_ = value; + } + onChanged(); + } else { + progressBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + public Builder clearProgress() { + if (progressBuilder_ == null) { + progress_ = null; + onChanged(); + } else { + progress_ = null; + progressBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + public com.google.spanner.admin.database.v1.OperationProgress.Builder getProgressBuilder() { + + onChanged(); + return getProgressFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + public com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgressOrBuilder() { + if (progressBuilder_ != null) { + return progressBuilder_.getMessageOrBuilder(); + } else { + return progress_ == null + ? com.google.spanner.admin.database.v1.OperationProgress.getDefaultInstance() + : progress_; + } + } + /** + * + * + *
+     * The progress of the
+     * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.OperationProgress, + com.google.spanner.admin.database.v1.OperationProgress.Builder, + com.google.spanner.admin.database.v1.OperationProgressOrBuilder> + getProgressFieldBuilder() { + if (progressBuilder_ == null) { + progressBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.OperationProgress, + com.google.spanner.admin.database.v1.OperationProgress.Builder, + com.google.spanner.admin.database.v1.OperationProgressOrBuilder>( + getProgress(), getParentForChildren(), isClean()); + progress_ = null; + } + return progressBuilder_; + } + + private com.google.protobuf.Timestamp cancelTime_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + cancelTimeBuilder_; + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + * + * @return Whether the cancelTime field is set. + */ + public boolean hasCancelTime() { + return cancelTimeBuilder_ != null || cancelTime_ != null; + } + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + * + * @return The cancelTime. + */ + public com.google.protobuf.Timestamp getCancelTime() { + if (cancelTimeBuilder_ == null) { + return cancelTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : cancelTime_; + } else { + return cancelTimeBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + public Builder setCancelTime(com.google.protobuf.Timestamp value) { + if (cancelTimeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + cancelTime_ = value; + onChanged(); + } else { + cancelTimeBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + public Builder setCancelTime(com.google.protobuf.Timestamp.Builder builderForValue) { + if (cancelTimeBuilder_ == null) { + cancelTime_ = builderForValue.build(); + onChanged(); + } else { + cancelTimeBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + public Builder mergeCancelTime(com.google.protobuf.Timestamp value) { + if (cancelTimeBuilder_ == null) { + if (cancelTime_ != null) { + cancelTime_ = + com.google.protobuf.Timestamp.newBuilder(cancelTime_).mergeFrom(value).buildPartial(); + } else { + cancelTime_ = value; + } + onChanged(); + } else { + cancelTimeBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + public Builder clearCancelTime() { + if (cancelTimeBuilder_ == null) { + cancelTime_ = null; + onChanged(); + } else { + cancelTime_ = null; + cancelTimeBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + public com.google.protobuf.Timestamp.Builder getCancelTimeBuilder() { + + onChanged(); + return getCancelTimeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + public com.google.protobuf.TimestampOrBuilder getCancelTimeOrBuilder() { + if (cancelTimeBuilder_ != null) { + return cancelTimeBuilder_.getMessageOrBuilder(); + } else { + return cancelTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : cancelTime_; + } + } + /** + * + * + *
+     * The time at which cancellation of CopyBackup operation was received.
+     * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+     * starts asynchronous cancellation on a long-running operation. The server
+     * makes a best effort to cancel the operation, but success is not guaranteed.
+     * Clients can use
+     * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+     * other methods to check whether the cancellation succeeded or whether the
+     * operation completed despite cancellation. On successful cancellation,
+     * the operation is not deleted; instead, it becomes an operation with
+     * an [Operation.error][google.longrunning.Operation.error] value with a
+     * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+     * corresponding to `Code.CANCELLED`.
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getCancelTimeFieldBuilder() { + if (cancelTimeBuilder_ == null) { + cancelTimeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getCancelTime(), getParentForChildren(), isClean()); + cancelTime_ = null; + } + return cancelTimeBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.admin.database.v1.CopyBackupMetadata) + } + + // @@protoc_insertion_point(class_scope:google.spanner.admin.database.v1.CopyBackupMetadata) + private static final com.google.spanner.admin.database.v1.CopyBackupMetadata DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.admin.database.v1.CopyBackupMetadata(); + } + + public static com.google.spanner.admin.database.v1.CopyBackupMetadata getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CopyBackupMetadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CopyBackupMetadata(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupMetadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadataOrBuilder.java new file mode 100644 index 00000000000..f977fe6fb38 --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadataOrBuilder.java @@ -0,0 +1,189 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/backup.proto + +package com.google.spanner.admin.database.v1; + +public interface CopyBackupMetadataOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.admin.database.v1.CopyBackupMetadata) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * The name of the backup being created through the copy operation.
+   * Values are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @return The name. + */ + java.lang.String getName(); + /** + * + * + *
+   * The name of the backup being created through the copy operation.
+   * Values are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string name = 1 [(.google.api.resource_reference) = { ... } + * + * @return The bytes for name. + */ + com.google.protobuf.ByteString getNameBytes(); + + /** + * + * + *
+   * The name of the source backup that is being copied.
+   * Values are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @return The sourceBackup. + */ + java.lang.String getSourceBackup(); + /** + * + * + *
+   * The name of the source backup that is being copied.
+   * Values are of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string source_backup = 2 [(.google.api.resource_reference) = { ... } + * + * @return The bytes for sourceBackup. + */ + com.google.protobuf.ByteString getSourceBackupBytes(); + + /** + * + * + *
+   * The progress of the
+   * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + * + * @return Whether the progress field is set. + */ + boolean hasProgress(); + /** + * + * + *
+   * The progress of the
+   * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + * + * @return The progress. + */ + com.google.spanner.admin.database.v1.OperationProgress getProgress(); + /** + * + * + *
+   * The progress of the
+   * [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 3; + */ + com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgressOrBuilder(); + + /** + * + * + *
+   * The time at which cancellation of CopyBackup operation was received.
+   * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+   * starts asynchronous cancellation on a long-running operation. The server
+   * makes a best effort to cancel the operation, but success is not guaranteed.
+   * Clients can use
+   * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+   * other methods to check whether the cancellation succeeded or whether the
+   * operation completed despite cancellation. On successful cancellation,
+   * the operation is not deleted; instead, it becomes an operation with
+   * an [Operation.error][google.longrunning.Operation.error] value with a
+   * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+   * corresponding to `Code.CANCELLED`.
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + * + * @return Whether the cancelTime field is set. + */ + boolean hasCancelTime(); + /** + * + * + *
+   * The time at which cancellation of CopyBackup operation was received.
+   * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+   * starts asynchronous cancellation on a long-running operation. The server
+   * makes a best effort to cancel the operation, but success is not guaranteed.
+   * Clients can use
+   * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+   * other methods to check whether the cancellation succeeded or whether the
+   * operation completed despite cancellation. On successful cancellation,
+   * the operation is not deleted; instead, it becomes an operation with
+   * an [Operation.error][google.longrunning.Operation.error] value with a
+   * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+   * corresponding to `Code.CANCELLED`.
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + * + * @return The cancelTime. + */ + com.google.protobuf.Timestamp getCancelTime(); + /** + * + * + *
+   * The time at which cancellation of CopyBackup operation was received.
+   * [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
+   * starts asynchronous cancellation on a long-running operation. The server
+   * makes a best effort to cancel the operation, but success is not guaranteed.
+   * Clients can use
+   * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or
+   * other methods to check whether the cancellation succeeded or whether the
+   * operation completed despite cancellation. On successful cancellation,
+   * the operation is not deleted; instead, it becomes an operation with
+   * an [Operation.error][google.longrunning.Operation.error] value with a
+   * [google.rpc.Status.code][google.rpc.Status.code] of 1,
+   * corresponding to `Code.CANCELLED`.
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 4; + */ + com.google.protobuf.TimestampOrBuilder getCancelTimeOrBuilder(); +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequest.java new file mode 100644 index 00000000000..3e5aa64bae9 --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequest.java @@ -0,0 +1,1769 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/backup.proto + +package com.google.spanner.admin.database.v1; + +/** + * + * + *
+ * The request for [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup].
+ * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.CopyBackupRequest} + */ +public final class CopyBackupRequest extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.admin.database.v1.CopyBackupRequest) + CopyBackupRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use CopyBackupRequest.newBuilder() to construct. + private CopyBackupRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private CopyBackupRequest() { + parent_ = ""; + backupId_ = ""; + sourceBackup_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new CopyBackupRequest(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private CopyBackupRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + java.lang.String s = input.readStringRequireUtf8(); + + parent_ = s; + break; + } + case 18: + { + java.lang.String s = input.readStringRequireUtf8(); + + backupId_ = s; + break; + } + case 26: + { + java.lang.String s = input.readStringRequireUtf8(); + + sourceBackup_ = s; + break; + } + case 34: + { + com.google.protobuf.Timestamp.Builder subBuilder = null; + if (expireTime_ != null) { + subBuilder = expireTime_.toBuilder(); + } + expireTime_ = + input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(expireTime_); + expireTime_ = subBuilder.buildPartial(); + } + + break; + } + case 42: + { + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.Builder subBuilder = + null; + if (encryptionConfig_ != null) { + subBuilder = encryptionConfig_.toBuilder(); + } + encryptionConfig_ = + input.readMessage( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.parser(), + extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(encryptionConfig_); + encryptionConfig_ = subBuilder.buildPartial(); + } + + break; + } + default: + { + if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.CopyBackupRequest.class, + com.google.spanner.admin.database.v1.CopyBackupRequest.Builder.class); + } + + public static final int PARENT_FIELD_NUMBER = 1; + private volatile java.lang.Object parent_; + /** + * + * + *
+   * Required. The name of the destination instance that will contain the backup copy.
+   * Values are of the form: `projects/<project>/instances/<instance>`.
+   * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The parent. + */ + @java.lang.Override + public java.lang.String getParent() { + java.lang.Object ref = parent_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + parent_ = s; + return s; + } + } + /** + * + * + *
+   * Required. The name of the destination instance that will contain the backup copy.
+   * Values are of the form: `projects/<project>/instances/<instance>`.
+   * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for parent. + */ + @java.lang.Override + public com.google.protobuf.ByteString getParentBytes() { + java.lang.Object ref = parent_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + parent_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int BACKUP_ID_FIELD_NUMBER = 2; + private volatile java.lang.Object backupId_; + /** + * + * + *
+   * Required. The id of the backup copy.
+   * The `backup_id` appended to `parent` forms the full backup_uri of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The backupId. + */ + @java.lang.Override + public java.lang.String getBackupId() { + java.lang.Object ref = backupId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + backupId_ = s; + return s; + } + } + /** + * + * + *
+   * Required. The id of the backup copy.
+   * The `backup_id` appended to `parent` forms the full backup_uri of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for backupId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getBackupIdBytes() { + java.lang.Object ref = backupId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + backupId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCE_BACKUP_FIELD_NUMBER = 3; + private volatile java.lang.Object sourceBackup_; + /** + * + * + *
+   * Required. The source backup to be copied.
+   * The source backup needs to be in READY state for it to be copied.
+   * Once CopyBackup is in progress, the source backup cannot be deleted or
+   * cleaned up on expiration until CopyBackup is finished.
+   * Values are of the form:
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The sourceBackup. + */ + @java.lang.Override + public java.lang.String getSourceBackup() { + java.lang.Object ref = sourceBackup_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sourceBackup_ = s; + return s; + } + } + /** + * + * + *
+   * Required. The source backup to be copied.
+   * The source backup needs to be in READY state for it to be copied.
+   * Once CopyBackup is in progress, the source backup cannot be deleted or
+   * cleaned up on expiration until CopyBackup is finished.
+   * Values are of the form:
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for sourceBackup. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSourceBackupBytes() { + java.lang.Object ref = sourceBackup_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sourceBackup_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int EXPIRE_TIME_FIELD_NUMBER = 4; + private com.google.protobuf.Timestamp expireTime_; + /** + * + * + *
+   * Required. The expiration time of the backup in microsecond granularity.
+   * The expiration time must be at least 6 hours and at most 366 days
+   * from the `create_time` of the source backup. Once the `expire_time` has
+   * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+   * to free the resources used by the backup.
+   * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the expireTime field is set. + */ + @java.lang.Override + public boolean hasExpireTime() { + return expireTime_ != null; + } + /** + * + * + *
+   * Required. The expiration time of the backup in microsecond granularity.
+   * The expiration time must be at least 6 hours and at most 366 days
+   * from the `create_time` of the source backup. Once the `expire_time` has
+   * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+   * to free the resources used by the backup.
+   * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The expireTime. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getExpireTime() { + return expireTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expireTime_; + } + /** + * + * + *
+   * Required. The expiration time of the backup in microsecond granularity.
+   * The expiration time must be at least 6 hours and at most 366 days
+   * from the `create_time` of the source backup. Once the `expire_time` has
+   * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+   * to free the resources used by the backup.
+   * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder() { + return getExpireTime(); + } + + public static final int ENCRYPTION_CONFIG_FIELD_NUMBER = 5; + private com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryptionConfig_; + /** + * + * + *
+   * Optional. The encryption configuration used to encrypt the backup. If this field is
+   * not specified, the backup will use the same
+   * encryption configuration as the source backup by default, namely
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+   * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the encryptionConfig field is set. + */ + @java.lang.Override + public boolean hasEncryptionConfig() { + return encryptionConfig_ != null; + } + /** + * + * + *
+   * Optional. The encryption configuration used to encrypt the backup. If this field is
+   * not specified, the backup will use the same
+   * encryption configuration as the source backup by default, namely
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+   * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The encryptionConfig. + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig getEncryptionConfig() { + return encryptionConfig_ == null + ? com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.getDefaultInstance() + : encryptionConfig_; + } + /** + * + * + *
+   * Optional. The encryption configuration used to encrypt the backup. If this field is
+   * not specified, the backup will use the same
+   * encryption configuration as the source backup by default, namely
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+   * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfigOrBuilder + getEncryptionConfigOrBuilder() { + return getEncryptionConfig(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, parent_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(backupId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, backupId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceBackup_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, sourceBackup_); + } + if (expireTime_ != null) { + output.writeMessage(4, getExpireTime()); + } + if (encryptionConfig_ != null) { + output.writeMessage(5, getEncryptionConfig()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, parent_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(backupId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, backupId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceBackup_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, sourceBackup_); + } + if (expireTime_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getExpireTime()); + } + if (encryptionConfig_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEncryptionConfig()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.admin.database.v1.CopyBackupRequest)) { + return super.equals(obj); + } + com.google.spanner.admin.database.v1.CopyBackupRequest other = + (com.google.spanner.admin.database.v1.CopyBackupRequest) obj; + + if (!getParent().equals(other.getParent())) return false; + if (!getBackupId().equals(other.getBackupId())) return false; + if (!getSourceBackup().equals(other.getSourceBackup())) return false; + if (hasExpireTime() != other.hasExpireTime()) return false; + if (hasExpireTime()) { + if (!getExpireTime().equals(other.getExpireTime())) return false; + } + if (hasEncryptionConfig() != other.hasEncryptionConfig()) return false; + if (hasEncryptionConfig()) { + if (!getEncryptionConfig().equals(other.getEncryptionConfig())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + PARENT_FIELD_NUMBER; + hash = (53 * hash) + getParent().hashCode(); + hash = (37 * hash) + BACKUP_ID_FIELD_NUMBER; + hash = (53 * hash) + getBackupId().hashCode(); + hash = (37 * hash) + SOURCE_BACKUP_FIELD_NUMBER; + hash = (53 * hash) + getSourceBackup().hashCode(); + if (hasExpireTime()) { + hash = (37 * hash) + EXPIRE_TIME_FIELD_NUMBER; + hash = (53 * hash) + getExpireTime().hashCode(); + } + if (hasEncryptionConfig()) { + hash = (37 * hash) + ENCRYPTION_CONFIG_FIELD_NUMBER; + hash = (53 * hash) + getEncryptionConfig().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.admin.database.v1.CopyBackupRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * The request for [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup].
+   * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.CopyBackupRequest} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.admin.database.v1.CopyBackupRequest) + com.google.spanner.admin.database.v1.CopyBackupRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.CopyBackupRequest.class, + com.google.spanner.admin.database.v1.CopyBackupRequest.Builder.class); + } + + // Construct using com.google.spanner.admin.database.v1.CopyBackupRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + parent_ = ""; + + backupId_ = ""; + + sourceBackup_ = ""; + + if (expireTimeBuilder_ == null) { + expireTime_ = null; + } else { + expireTime_ = null; + expireTimeBuilder_ = null; + } + if (encryptionConfigBuilder_ == null) { + encryptionConfig_ = null; + } else { + encryptionConfig_ = null; + encryptionConfigBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.admin.database.v1.BackupProto + .internal_static_google_spanner_admin_database_v1_CopyBackupRequest_descriptor; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupRequest getDefaultInstanceForType() { + return com.google.spanner.admin.database.v1.CopyBackupRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupRequest build() { + com.google.spanner.admin.database.v1.CopyBackupRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupRequest buildPartial() { + com.google.spanner.admin.database.v1.CopyBackupRequest result = + new com.google.spanner.admin.database.v1.CopyBackupRequest(this); + result.parent_ = parent_; + result.backupId_ = backupId_; + result.sourceBackup_ = sourceBackup_; + if (expireTimeBuilder_ == null) { + result.expireTime_ = expireTime_; + } else { + result.expireTime_ = expireTimeBuilder_.build(); + } + if (encryptionConfigBuilder_ == null) { + result.encryptionConfig_ = encryptionConfig_; + } else { + result.encryptionConfig_ = encryptionConfigBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.admin.database.v1.CopyBackupRequest) { + return mergeFrom((com.google.spanner.admin.database.v1.CopyBackupRequest) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.admin.database.v1.CopyBackupRequest other) { + if (other == com.google.spanner.admin.database.v1.CopyBackupRequest.getDefaultInstance()) + return this; + if (!other.getParent().isEmpty()) { + parent_ = other.parent_; + onChanged(); + } + if (!other.getBackupId().isEmpty()) { + backupId_ = other.backupId_; + onChanged(); + } + if (!other.getSourceBackup().isEmpty()) { + sourceBackup_ = other.sourceBackup_; + onChanged(); + } + if (other.hasExpireTime()) { + mergeExpireTime(other.getExpireTime()); + } + if (other.hasEncryptionConfig()) { + mergeEncryptionConfig(other.getEncryptionConfig()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.spanner.admin.database.v1.CopyBackupRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.spanner.admin.database.v1.CopyBackupRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object parent_ = ""; + /** + * + * + *
+     * Required. The name of the destination instance that will contain the backup copy.
+     * Values are of the form: `projects/<project>/instances/<instance>`.
+     * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The parent. + */ + public java.lang.String getParent() { + java.lang.Object ref = parent_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + parent_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. The name of the destination instance that will contain the backup copy.
+     * Values are of the form: `projects/<project>/instances/<instance>`.
+     * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for parent. + */ + public com.google.protobuf.ByteString getParentBytes() { + java.lang.Object ref = parent_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + parent_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. The name of the destination instance that will contain the backup copy.
+     * Values are of the form: `projects/<project>/instances/<instance>`.
+     * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The parent to set. + * @return This builder for chaining. + */ + public Builder setParent(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + parent_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The name of the destination instance that will contain the backup copy.
+     * Values are of the form: `projects/<project>/instances/<instance>`.
+     * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return This builder for chaining. + */ + public Builder clearParent() { + + parent_ = getDefaultInstance().getParent(); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The name of the destination instance that will contain the backup copy.
+     * Values are of the form: `projects/<project>/instances/<instance>`.
+     * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The bytes for parent to set. + * @return This builder for chaining. + */ + public Builder setParentBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + parent_ = value; + onChanged(); + return this; + } + + private java.lang.Object backupId_ = ""; + /** + * + * + *
+     * Required. The id of the backup copy.
+     * The `backup_id` appended to `parent` forms the full backup_uri of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The backupId. + */ + public java.lang.String getBackupId() { + java.lang.Object ref = backupId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + backupId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. The id of the backup copy.
+     * The `backup_id` appended to `parent` forms the full backup_uri of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for backupId. + */ + public com.google.protobuf.ByteString getBackupIdBytes() { + java.lang.Object ref = backupId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + backupId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. The id of the backup copy.
+     * The `backup_id` appended to `parent` forms the full backup_uri of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The backupId to set. + * @return This builder for chaining. + */ + public Builder setBackupId(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + backupId_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The id of the backup copy.
+     * The `backup_id` appended to `parent` forms the full backup_uri of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return This builder for chaining. + */ + public Builder clearBackupId() { + + backupId_ = getDefaultInstance().getBackupId(); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The id of the backup copy.
+     * The `backup_id` appended to `parent` forms the full backup_uri of the form
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The bytes for backupId to set. + * @return This builder for chaining. + */ + public Builder setBackupIdBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + backupId_ = value; + onChanged(); + return this; + } + + private java.lang.Object sourceBackup_ = ""; + /** + * + * + *
+     * Required. The source backup to be copied.
+     * The source backup needs to be in READY state for it to be copied.
+     * Once CopyBackup is in progress, the source backup cannot be deleted or
+     * cleaned up on expiration until CopyBackup is finished.
+     * Values are of the form:
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The sourceBackup. + */ + public java.lang.String getSourceBackup() { + java.lang.Object ref = sourceBackup_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sourceBackup_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. The source backup to be copied.
+     * The source backup needs to be in READY state for it to be copied.
+     * Once CopyBackup is in progress, the source backup cannot be deleted or
+     * cleaned up on expiration until CopyBackup is finished.
+     * Values are of the form:
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for sourceBackup. + */ + public com.google.protobuf.ByteString getSourceBackupBytes() { + java.lang.Object ref = sourceBackup_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sourceBackup_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. The source backup to be copied.
+     * The source backup needs to be in READY state for it to be copied.
+     * Once CopyBackup is in progress, the source backup cannot be deleted or
+     * cleaned up on expiration until CopyBackup is finished.
+     * Values are of the form:
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The sourceBackup to set. + * @return This builder for chaining. + */ + public Builder setSourceBackup(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + sourceBackup_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The source backup to be copied.
+     * The source backup needs to be in READY state for it to be copied.
+     * Once CopyBackup is in progress, the source backup cannot be deleted or
+     * cleaned up on expiration until CopyBackup is finished.
+     * Values are of the form:
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return This builder for chaining. + */ + public Builder clearSourceBackup() { + + sourceBackup_ = getDefaultInstance().getSourceBackup(); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The source backup to be copied.
+     * The source backup needs to be in READY state for it to be copied.
+     * Once CopyBackup is in progress, the source backup cannot be deleted or
+     * cleaned up on expiration until CopyBackup is finished.
+     * Values are of the form:
+     * `projects/<project>/instances/<instance>/backups/<backup>`.
+     * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The bytes for sourceBackup to set. + * @return This builder for chaining. + */ + public Builder setSourceBackupBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + sourceBackup_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.Timestamp expireTime_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + expireTimeBuilder_; + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the expireTime field is set. + */ + public boolean hasExpireTime() { + return expireTimeBuilder_ != null || expireTime_ != null; + } + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The expireTime. + */ + public com.google.protobuf.Timestamp getExpireTime() { + if (expireTimeBuilder_ == null) { + return expireTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : expireTime_; + } else { + return expireTimeBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder setExpireTime(com.google.protobuf.Timestamp value) { + if (expireTimeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + expireTime_ = value; + onChanged(); + } else { + expireTimeBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder setExpireTime(com.google.protobuf.Timestamp.Builder builderForValue) { + if (expireTimeBuilder_ == null) { + expireTime_ = builderForValue.build(); + onChanged(); + } else { + expireTimeBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder mergeExpireTime(com.google.protobuf.Timestamp value) { + if (expireTimeBuilder_ == null) { + if (expireTime_ != null) { + expireTime_ = + com.google.protobuf.Timestamp.newBuilder(expireTime_).mergeFrom(value).buildPartial(); + } else { + expireTime_ = value; + } + onChanged(); + } else { + expireTimeBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder clearExpireTime() { + if (expireTimeBuilder_ == null) { + expireTime_ = null; + onChanged(); + } else { + expireTime_ = null; + expireTimeBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public com.google.protobuf.Timestamp.Builder getExpireTimeBuilder() { + + onChanged(); + return getExpireTimeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder() { + if (expireTimeBuilder_ != null) { + return expireTimeBuilder_.getMessageOrBuilder(); + } else { + return expireTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : expireTime_; + } + } + /** + * + * + *
+     * Required. The expiration time of the backup in microsecond granularity.
+     * The expiration time must be at least 6 hours and at most 366 days
+     * from the `create_time` of the source backup. Once the `expire_time` has
+     * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+     * to free the resources used by the backup.
+     * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getExpireTimeFieldBuilder() { + if (expireTimeBuilder_ == null) { + expireTimeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getExpireTime(), getParentForChildren(), isClean()); + expireTime_ = null; + } + return expireTimeBuilder_; + } + + private com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryptionConfig_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig, + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.Builder, + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfigOrBuilder> + encryptionConfigBuilder_; + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the encryptionConfig field is set. + */ + public boolean hasEncryptionConfig() { + return encryptionConfigBuilder_ != null || encryptionConfig_ != null; + } + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The encryptionConfig. + */ + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig getEncryptionConfig() { + if (encryptionConfigBuilder_ == null) { + return encryptionConfig_ == null + ? com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.getDefaultInstance() + : encryptionConfig_; + } else { + return encryptionConfigBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setEncryptionConfig( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig value) { + if (encryptionConfigBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + encryptionConfig_ = value; + onChanged(); + } else { + encryptionConfigBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setEncryptionConfig( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.Builder builderForValue) { + if (encryptionConfigBuilder_ == null) { + encryptionConfig_ = builderForValue.build(); + onChanged(); + } else { + encryptionConfigBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder mergeEncryptionConfig( + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig value) { + if (encryptionConfigBuilder_ == null) { + if (encryptionConfig_ != null) { + encryptionConfig_ = + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.newBuilder( + encryptionConfig_) + .mergeFrom(value) + .buildPartial(); + } else { + encryptionConfig_ = value; + } + onChanged(); + } else { + encryptionConfigBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearEncryptionConfig() { + if (encryptionConfigBuilder_ == null) { + encryptionConfig_ = null; + onChanged(); + } else { + encryptionConfig_ = null; + encryptionConfigBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.Builder + getEncryptionConfigBuilder() { + + onChanged(); + return getEncryptionConfigFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.admin.database.v1.CopyBackupEncryptionConfigOrBuilder + getEncryptionConfigOrBuilder() { + if (encryptionConfigBuilder_ != null) { + return encryptionConfigBuilder_.getMessageOrBuilder(); + } else { + return encryptionConfig_ == null + ? com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.getDefaultInstance() + : encryptionConfig_; + } + } + /** + * + * + *
+     * Optional. The encryption configuration used to encrypt the backup. If this field is
+     * not specified, the backup will use the same
+     * encryption configuration as the source backup by default, namely
+     * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+     * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig, + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.Builder, + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfigOrBuilder> + getEncryptionConfigFieldBuilder() { + if (encryptionConfigBuilder_ == null) { + encryptionConfigBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig, + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.Builder, + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfigOrBuilder>( + getEncryptionConfig(), getParentForChildren(), isClean()); + encryptionConfig_ = null; + } + return encryptionConfigBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.admin.database.v1.CopyBackupRequest) + } + + // @@protoc_insertion_point(class_scope:google.spanner.admin.database.v1.CopyBackupRequest) + private static final com.google.spanner.admin.database.v1.CopyBackupRequest DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.admin.database.v1.CopyBackupRequest(); + } + + public static com.google.spanner.admin.database.v1.CopyBackupRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CopyBackupRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CopyBackupRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.CopyBackupRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequestOrBuilder.java new file mode 100644 index 00000000000..5a8be05a57e --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequestOrBuilder.java @@ -0,0 +1,228 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/backup.proto + +package com.google.spanner.admin.database.v1; + +public interface CopyBackupRequestOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.admin.database.v1.CopyBackupRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. The name of the destination instance that will contain the backup copy.
+   * Values are of the form: `projects/<project>/instances/<instance>`.
+   * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The parent. + */ + java.lang.String getParent(); + /** + * + * + *
+   * Required. The name of the destination instance that will contain the backup copy.
+   * Values are of the form: `projects/<project>/instances/<instance>`.
+   * 
+ * + * + * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for parent. + */ + com.google.protobuf.ByteString getParentBytes(); + + /** + * + * + *
+   * Required. The id of the backup copy.
+   * The `backup_id` appended to `parent` forms the full backup_uri of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The backupId. + */ + java.lang.String getBackupId(); + /** + * + * + *
+   * Required. The id of the backup copy.
+   * The `backup_id` appended to `parent` forms the full backup_uri of the form
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * string backup_id = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for backupId. + */ + com.google.protobuf.ByteString getBackupIdBytes(); + + /** + * + * + *
+   * Required. The source backup to be copied.
+   * The source backup needs to be in READY state for it to be copied.
+   * Once CopyBackup is in progress, the source backup cannot be deleted or
+   * cleaned up on expiration until CopyBackup is finished.
+   * Values are of the form:
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The sourceBackup. + */ + java.lang.String getSourceBackup(); + /** + * + * + *
+   * Required. The source backup to be copied.
+   * The source backup needs to be in READY state for it to be copied.
+   * Once CopyBackup is in progress, the source backup cannot be deleted or
+   * cleaned up on expiration until CopyBackup is finished.
+   * Values are of the form:
+   * `projects/<project>/instances/<instance>/backups/<backup>`.
+   * 
+ * + * + * string source_backup = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for sourceBackup. + */ + com.google.protobuf.ByteString getSourceBackupBytes(); + + /** + * + * + *
+   * Required. The expiration time of the backup in microsecond granularity.
+   * The expiration time must be at least 6 hours and at most 366 days
+   * from the `create_time` of the source backup. Once the `expire_time` has
+   * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+   * to free the resources used by the backup.
+   * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the expireTime field is set. + */ + boolean hasExpireTime(); + /** + * + * + *
+   * Required. The expiration time of the backup in microsecond granularity.
+   * The expiration time must be at least 6 hours and at most 366 days
+   * from the `create_time` of the source backup. Once the `expire_time` has
+   * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+   * to free the resources used by the backup.
+   * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The expireTime. + */ + com.google.protobuf.Timestamp getExpireTime(); + /** + * + * + *
+   * Required. The expiration time of the backup in microsecond granularity.
+   * The expiration time must be at least 6 hours and at most 366 days
+   * from the `create_time` of the source backup. Once the `expire_time` has
+   * passed, the backup is eligible to be automatically deleted by Cloud Spanner
+   * to free the resources used by the backup.
+   * 
+ * + * .google.protobuf.Timestamp expire_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * + */ + com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder(); + + /** + * + * + *
+   * Optional. The encryption configuration used to encrypt the backup. If this field is
+   * not specified, the backup will use the same
+   * encryption configuration as the source backup by default, namely
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+   * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the encryptionConfig field is set. + */ + boolean hasEncryptionConfig(); + /** + * + * + *
+   * Optional. The encryption configuration used to encrypt the backup. If this field is
+   * not specified, the backup will use the same
+   * encryption configuration as the source backup by default, namely
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+   * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The encryptionConfig. + */ + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig getEncryptionConfig(); + /** + * + * + *
+   * Optional. The encryption configuration used to encrypt the backup. If this field is
+   * not specified, the backup will use the same
+   * encryption configuration as the source backup by default, namely
+   * [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] =
+   * `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.CopyBackupEncryptionConfig encryption_config = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.spanner.admin.database.v1.CopyBackupEncryptionConfigOrBuilder + getEncryptionConfigOrBuilder(); +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequest.java index 44a4c392f2c..a28e28e18f7 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequest.java @@ -208,6 +208,8 @@ public com.google.protobuf.ByteString getParentBytes() { * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -216,8 +218,11 @@ public com.google.protobuf.ByteString getParentBytes() { * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -226,6 +231,29 @@ public com.google.protobuf.ByteString getParentBytes() { * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; @@ -262,6 +290,8 @@ public java.lang.String getFilter() { * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -270,8 +300,11 @@ public java.lang.String getFilter() { * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -280,6 +313,29 @@ public java.lang.String getFilter() { * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; @@ -884,6 +940,8 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) { * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -892,8 +950,11 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) { * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -902,6 +963,29 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) { * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; @@ -937,6 +1021,8 @@ public java.lang.String getFilter() { * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -945,8 +1031,11 @@ public java.lang.String getFilter() { * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -955,6 +1044,29 @@ public java.lang.String getFilter() { * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; @@ -990,6 +1102,8 @@ public com.google.protobuf.ByteString getFilterBytes() { * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -998,8 +1112,11 @@ public com.google.protobuf.ByteString getFilterBytes() { * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -1008,6 +1125,29 @@ public com.google.protobuf.ByteString getFilterBytes() { * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; @@ -1042,6 +1182,8 @@ public Builder setFilter(java.lang.String value) { * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -1050,8 +1192,11 @@ public Builder setFilter(java.lang.String value) { * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -1060,6 +1205,29 @@ public Builder setFilter(java.lang.String value) { * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; @@ -1090,6 +1258,8 @@ public Builder clearFilter() { * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -1098,8 +1268,11 @@ public Builder clearFilter() { * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -1108,6 +1281,29 @@ public Builder clearFilter() { * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequestOrBuilder.java index 6d48d7f5f3f..4d862ccc097 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequestOrBuilder.java @@ -72,6 +72,8 @@ public interface ListBackupOperationsRequestOrBuilder * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -80,8 +82,11 @@ public interface ListBackupOperationsRequestOrBuilder * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -90,6 +95,29 @@ public interface ListBackupOperationsRequestOrBuilder * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; @@ -115,6 +143,8 @@ public interface ListBackupOperationsRequestOrBuilder * for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -123,8 +153,11 @@ public interface ListBackupOperationsRequestOrBuilder * you can specify AND, OR, and NOT logic explicitly. * Here are a few examples: * * `done:true` - The operation is complete. - * * `metadata.database:prod` - The database the backup was taken from has - * a name containing the string "prod". + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `metadata.database:prod` - Returns operations where: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + * * The database the backup was taken from has a name containing the + * string "prod". * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ * `(metadata.name:howl) AND` \ * `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -133,6 +166,29 @@ public interface ListBackupOperationsRequestOrBuilder * * The backup name contains the string "howl". * * The operation started before 2018-03-28T14:50:00Z. * * The operation resulted in an error. + * * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + * `(metadata.source_backup:test) AND` \ + * `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + * * The source backup of the copied backup name contains the string + * "test". + * * The operation started before 2022-01-18T14:50:00Z. + * * The operation resulted in an error. + * * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + * `(metadata.database:test_db)) OR` \ + * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + * AND` \ + * `(metadata.source_backup:test_bkp)) AND` \ + * `(error:*)` - Returns operations where: + * * The operation's metadata matches either of criteria: + * * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + * database the backup was taken from has name containing string + * "test_db" + * * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + * backup the backup was copied from has name containing string + * "test_bkp" + * * The operation resulted in an error. * * * string filter = 2; diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponse.java index f9b74a69539..be50a78b625 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponse.java @@ -135,11 +135,11 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -156,11 +156,11 @@ public java.util.List getOperationsList() { *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -178,11 +178,11 @@ public java.util.List getOperationsList() { *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -199,11 +199,11 @@ public int getOperationsCount() { *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -220,11 +220,11 @@ public com.google.longrunning.Operation getOperations(int index) { *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -695,11 +695,11 @@ private void ensureOperationsIsMutable() { *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -719,11 +719,11 @@ public java.util.List getOperationsList() { *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -743,11 +743,11 @@ public int getOperationsCount() { *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -767,11 +767,11 @@ public com.google.longrunning.Operation getOperations(int index) { *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -797,11 +797,11 @@ public Builder setOperations(int index, com.google.longrunning.Operation value) *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -825,11 +825,11 @@ public Builder setOperations( *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -855,11 +855,11 @@ public Builder addOperations(com.google.longrunning.Operation value) { *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -885,11 +885,11 @@ public Builder addOperations(int index, com.google.longrunning.Operation value) *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -912,11 +912,11 @@ public Builder addOperations(com.google.longrunning.Operation.Builder builderFor *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -940,11 +940,11 @@ public Builder addOperations( *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -968,11 +968,11 @@ public Builder addAllOperations( *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -995,11 +995,11 @@ public Builder clearOperations() { *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -1022,11 +1022,11 @@ public Builder removeOperations(int index) { *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -1042,11 +1042,11 @@ public com.google.longrunning.Operation.Builder getOperationsBuilder(int index) *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -1066,11 +1066,11 @@ public com.google.longrunning.OperationOrBuilder getOperationsOrBuilder(int inde *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -1091,11 +1091,11 @@ public com.google.longrunning.OperationOrBuilder getOperationsOrBuilder(int inde *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -1112,11 +1112,11 @@ public com.google.longrunning.Operation.Builder addOperationsBuilder() { *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
@@ -1133,11 +1133,11 @@ public com.google.longrunning.Operation.Builder addOperationsBuilder(int index) *
      * The list of matching backup [long-running
      * operations][google.longrunning.Operation]. Each operation's name will be
-     * prefixed by the backup's name and the operation's
-     * [metadata][google.longrunning.Operation.metadata] will be of type
-     * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-     * pending or have completed/failed/canceled within the last 7 days.
-     * Operations returned are ordered by
+     * prefixed by the backup's name. The operation's
+     * [metadata][google.longrunning.Operation.metadata] field type
+     * `metadata.type_url` describes the type of the metadata. Operations returned
+     * include those that are pending or have completed/failed/canceled within the
+     * last 7 days. Operations returned are ordered by
      * `operation.metadata.value.progress.start_time` in descending order starting
      * from the most recently started operation.
      * 
diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponseOrBuilder.java index 05c3031f8d7..f170588152b 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponseOrBuilder.java @@ -29,11 +29,11 @@ public interface ListBackupOperationsResponseOrBuilder *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -47,11 +47,11 @@ public interface ListBackupOperationsResponseOrBuilder *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -65,11 +65,11 @@ public interface ListBackupOperationsResponseOrBuilder *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -83,11 +83,11 @@ public interface ListBackupOperationsResponseOrBuilder *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
@@ -101,11 +101,11 @@ public interface ListBackupOperationsResponseOrBuilder *
    * The list of matching backup [long-running
    * operations][google.longrunning.Operation]. Each operation's name will be
-   * prefixed by the backup's name and the operation's
-   * [metadata][google.longrunning.Operation.metadata] will be of type
-   * [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are
-   * pending or have completed/failed/canceled within the last 7 days.
-   * Operations returned are ordered by
+   * prefixed by the backup's name. The operation's
+   * [metadata][google.longrunning.Operation.metadata] field type
+   * `metadata.type_url` describes the type of the metadata. Operations returned
+   * include those that are pending or have completed/failed/canceled within the
+   * last 7 days. Operations returned are ordered by
    * `operation.metadata.value.progress.start_time` in descending order starting
    * from the most recently started operation.
    * 
diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequest.java index ed376a6f05d..da529706e56 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequest.java @@ -208,6 +208,8 @@ public com.google.protobuf.ByteString getParentBytes() { * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -264,6 +266,8 @@ public java.lang.String getFilter() { * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -892,6 +896,8 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) { * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -947,6 +953,8 @@ public java.lang.String getFilter() { * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -1002,6 +1010,8 @@ public com.google.protobuf.ByteString getFilterBytes() { * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -1056,6 +1066,8 @@ public Builder setFilter(java.lang.String value) { * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -1106,6 +1118,8 @@ public Builder clearFilter() { * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequestOrBuilder.java index 38eb5693e1a..e020307e57f 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequestOrBuilder.java @@ -72,6 +72,8 @@ public interface ListDatabaseOperationsRequestOrBuilder * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. @@ -117,6 +119,8 @@ public interface ListDatabaseOperationsRequestOrBuilder * for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is * `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. * * `metadata.<field_name>` - any field in metadata.value. + * `metadata.@type` must be specified first, if filtering on metadata + * fields. * * `error` - Error associated with the long-running operation. * * `response.@type` - the type of response. * * `response.<field_name>` - any field in response.value. diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java index 1acad6985e1..8aa471048a2 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java @@ -116,214 +116,221 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "source.proto\032\036google/iam/v1/iam_policy.p" + "roto\032\032google/iam/v1/policy.proto\032#google" + "/longrunning/operations.proto\032\033google/pr" - + "otobuf/empty.proto\032 google/protobuf/fiel" - + "d_mask.proto\032\037google/protobuf/timestamp." - + "proto\032-google/spanner/admin/database/v1/" - + "backup.proto\032-google/spanner/admin/datab" - + "ase/v1/common.proto\"\253\001\n\013RestoreInfo\022H\n\013s" - + "ource_type\030\001 \001(\01623.google.spanner.admin." + + "otobuf/empty.proto\032\037google/protobuf/time" + + "stamp.proto\032-google/spanner/admin/databa" + + "se/v1/backup.proto\032-google/spanner/admin" + + "/database/v1/common.proto\"\253\001\n\013RestoreInf" + + "o\022H\n\013source_type\030\001 \001(\01623.google.spanner." + + "admin.database.v1.RestoreSourceType\022C\n\013b" + + "ackup_info\030\002 \001(\0132,.google.spanner.admin." + + "database.v1.BackupInfoH\000B\r\n\013source_info\"" + + "\220\006\n\010Database\022\021\n\004name\030\001 \001(\tB\003\340A\002\022D\n\005state" + + "\030\002 \001(\01620.google.spanner.admin.database.v" + + "1.Database.StateB\003\340A\003\0224\n\013create_time\030\003 \001" + + "(\0132\032.google.protobuf.TimestampB\003\340A\003\022H\n\014r" + + "estore_info\030\004 \001(\0132-.google.spanner.admin" + + ".database.v1.RestoreInfoB\003\340A\003\022R\n\021encrypt" + + "ion_config\030\005 \001(\01322.google.spanner.admin." + + "database.v1.EncryptionConfigB\003\340A\003\022N\n\017enc" + + "ryption_info\030\010 \003(\01320.google.spanner.admi" + + "n.database.v1.EncryptionInfoB\003\340A\003\022%\n\030ver" + + "sion_retention_period\030\006 \001(\tB\003\340A\003\022>\n\025earl" + + "iest_version_time\030\007 \001(\0132\032.google.protobu" + + "f.TimestampB\003\340A\003\022\033\n\016default_leader\030\t \001(\t" + + "B\003\340A\003\022P\n\020database_dialect\030\n \001(\01621.google" + + ".spanner.admin.database.v1.DatabaseDiale" + + "ctB\003\340A\003\"M\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022" + + "\014\n\010CREATING\020\001\022\t\n\005READY\020\002\022\024\n\020READY_OPTIMI" + + "ZING\020\003:b\352A_\n\037spanner.googleapis.com/Data" + + "base\022\n\025earliest_v" - + "ersion_time\030\007 \001(\0132\032.google.protobuf.Time" - + "stampB\003\340A\003\022\033\n\016default_leader\030\t \001(\tB\003\340A\003\022" - + "P\n\020database_dialect\030\n \001(\01621.google.spann" - + "er.admin.database.v1.DatabaseDialectB\003\340A" - + "\003\"M\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022\014\n\010CRE" - + "ATING\020\001\022\t\n\005READY\020\002\022\024\n\020READY_OPTIMIZING\020\003" - + ":b\352A_\n\037spanner.googleapis.com/Database\022<" - + "projects/{project}/instances/{instance}/" - + "databases/{database}\"v\n\024ListDatabasesReq" - + "uest\0227\n\006parent\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.go" - + "ogleapis.com/Instance\022\021\n\tpage_size\030\003 \001(\005" - + "\022\022\n\npage_token\030\004 \001(\t\"o\n\025ListDatabasesRes" - + "ponse\022=\n\tdatabases\030\001 \003(\0132*.google.spanne" - + "r.admin.database.v1.Database\022\027\n\017next_pag" - + "e_token\030\002 \001(\t\"\264\002\n\025CreateDatabaseRequest\022" - + "7\n\006parent\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.googlea" - + "pis.com/Instance\022\035\n\020create_statement\030\002 \001" - + "(\tB\003\340A\002\022\035\n\020extra_statements\030\003 \003(\tB\003\340A\001\022R" - + "\n\021encryption_config\030\004 \001(\01322.google.spann" - + "er.admin.database.v1.EncryptionConfigB\003\340" - + "A\001\022P\n\020database_dialect\030\005 \001(\01621.google.sp" - + "anner.admin.database.v1.DatabaseDialectB" - + "\003\340A\001\"P\n\026CreateDatabaseMetadata\0226\n\010databa" - + "se\030\001 \001(\tB$\372A!\n\037spanner.googleapis.com/Da" - + "tabase\"K\n\022GetDatabaseRequest\0225\n\004name\030\001 \001" - + "(\tB\'\340A\002\372A!\n\037spanner.googleapis.com/Datab" - + "ase\"\204\001\n\030UpdateDatabaseDdlRequest\0229\n\010data" - + "base\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.googleapis.c" - + "om/Database\022\027\n\nstatements\030\002 \003(\tB\003\340A\002\022\024\n\014" - + "operation_id\030\003 \001(\t\"\375\001\n\031UpdateDatabaseDdl" - + "Metadata\0226\n\010database\030\001 \001(\tB$\372A!\n\037spanner" - + ".googleapis.com/Database\022\022\n\nstatements\030\002" - + " \003(\t\0225\n\021commit_timestamps\030\003 \003(\0132\032.google" - + ".protobuf.Timestamp\022\026\n\tthrottled\030\004 \001(\010B\003" - + "\340A\003\022E\n\010progress\030\005 \003(\01323.google.spanner.a" - + "dmin.database.v1.OperationProgress\"P\n\023Dr" - + "opDatabaseRequest\0229\n\010database\030\001 \001(\tB\'\340A\002" - + "\372A!\n\037spanner.googleapis.com/Database\"R\n\025" - + "GetDatabaseDdlRequest\0229\n\010database\030\001 \001(\tB" - + "\'\340A\002\372A!\n\037spanner.googleapis.com/Database" - + "\",\n\026GetDatabaseDdlResponse\022\022\n\nstatements" - + "\030\001 \003(\t\"\217\001\n\035ListDatabaseOperationsRequest" - + "\0227\n\006parent\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.google" - + "apis.com/Instance\022\016\n\006filter\030\002 \001(\t\022\021\n\tpag" - + "e_size\030\003 \001(\005\022\022\n\npage_token\030\004 \001(\t\"l\n\036List" - + "DatabaseOperationsResponse\0221\n\noperations" - + "\030\001 \003(\0132\035.google.longrunning.Operation\022\027\n" - + "\017next_page_token\030\002 \001(\t\"\216\002\n\026RestoreDataba" - + "seRequest\0227\n\006parent\030\001 \001(\tB\'\340A\002\372A!\n\037spann" - + "er.googleapis.com/Instance\022\030\n\013database_i" - + "d\030\002 \001(\tB\003\340A\002\0224\n\006backup\030\003 \001(\tB\"\372A\037\n\035spann" - + "er.googleapis.com/BackupH\000\022a\n\021encryption" - + "_config\030\004 \001(\0132A.google.spanner.admin.dat" - + "abase.v1.RestoreDatabaseEncryptionConfig" - + "B\003\340A\001B\010\n\006source\"\363\002\n\037RestoreDatabaseEncry" - + "ptionConfig\022n\n\017encryption_type\030\001 \001(\0162P.g" - + "oogle.spanner.admin.database.v1.RestoreD" - + "atabaseEncryptionConfig.EncryptionTypeB\003" - + "\340A\002\022?\n\014kms_key_name\030\002 \001(\tB)\340A\001\372A#\n!cloud" - + "kms.googleapis.com/CryptoKey\"\236\001\n\016Encrypt" - + "ionType\022\037\n\033ENCRYPTION_TYPE_UNSPECIFIED\020\000" - + "\022+\n\'USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPT" - + "ION\020\001\022\035\n\031GOOGLE_DEFAULT_ENCRYPTION\020\002\022\037\n\033" - + "CUSTOMER_MANAGED_ENCRYPTION\020\003\"\215\003\n\027Restor" - + "eDatabaseMetadata\0222\n\004name\030\001 \001(\tB$\372A!\n\037sp" - + "anner.googleapis.com/Database\022H\n\013source_" - + "type\030\002 \001(\01623.google.spanner.admin.databa" - + "se.v1.RestoreSourceType\022C\n\013backup_info\030\003" - + " \001(\0132,.google.spanner.admin.database.v1." - + "BackupInfoH\000\022E\n\010progress\030\004 \001(\01323.google." - + "spanner.admin.database.v1.OperationProgr" - + "ess\022/\n\013cancel_time\030\005 \001(\0132\032.google.protob" - + "uf.Timestamp\022(\n optimize_database_operat" - + "ion_name\030\006 \001(\tB\r\n\013source_info\"\235\001\n Optimi" - + "zeRestoredDatabaseMetadata\0222\n\004name\030\001 \001(\t" - + "B$\372A!\n\037spanner.googleapis.com/Database\022E" - + "\n\010progress\030\002 \001(\01323.google.spanner.admin." - + "database.v1.OperationProgress*5\n\021Restore" - + "SourceType\022\024\n\020TYPE_UNSPECIFIED\020\000\022\n\n\006BACK" - + "UP\020\0012\223\037\n\rDatabaseAdmin\022\300\001\n\rListDatabases" - + "\0226.google.spanner.admin.database.v1.List" - + "DatabasesRequest\0327.google.spanner.admin." - + "database.v1.ListDatabasesResponse\">\202\323\344\223\002" - + "/\022-/v1/{parent=projects/*/instances/*}/d" - + "atabases\332A\006parent\022\244\002\n\016CreateDatabase\0227.g" - + "oogle.spanner.admin.database.v1.CreateDa" - + "tabaseRequest\032\035.google.longrunning.Opera" - + "tion\"\271\001\202\323\344\223\0022\"-/v1/{parent=projects/*/in" - + "stances/*}/databases:\001*\332A\027parent,create_" - + "statement\312Ad\n)google.spanner.admin.datab" - + "ase.v1.Database\0227google.spanner.admin.da" - + "tabase.v1.CreateDatabaseMetadata\022\255\001\n\013Get" - + "Database\0224.google.spanner.admin.database" - + ".v1.GetDatabaseRequest\032*.google.spanner." - + "admin.database.v1.Database\"<\202\323\344\223\002/\022-/v1/" - + "{name=projects/*/instances/*/databases/*" - + "}\332A\004name\022\235\002\n\021UpdateDatabaseDdl\022:.google." - + "spanner.admin.database.v1.UpdateDatabase" - + "DdlRequest\032\035.google.longrunning.Operatio" - + "n\"\254\001\202\323\344\223\002:25/v1/{database=projects/*/ins" - + "tances/*/databases/*}/ddl:\001*\332A\023database," - + "statements\312AS\n\025google.protobuf.Empty\022:go" - + "ogle.spanner.admin.database.v1.UpdateDat" - + "abaseDdlMetadata\022\243\001\n\014DropDatabase\0225.goog" - + "le.spanner.admin.database.v1.DropDatabas" - + "eRequest\032\026.google.protobuf.Empty\"D\202\323\344\223\0023" - + "*1/v1/{database=projects/*/instances/*/d" - + "atabases/*}\332A\010database\022\315\001\n\016GetDatabaseDd" - + "l\0227.google.spanner.admin.database.v1.Get" - + "DatabaseDdlRequest\0328.google.spanner.admi" - + "n.database.v1.GetDatabaseDdlResponse\"H\202\323" - + "\344\223\0027\0225/v1/{database=projects/*/instances" - + "/*/databases/*}/ddl\332A\010database\022\353\001\n\014SetIa" - + "mPolicy\022\".google.iam.v1.SetIamPolicyRequ" - + "est\032\025.google.iam.v1.Policy\"\237\001\202\323\344\223\002\206\001\">/v" - + "1/{resource=projects/*/instances/*/datab" - + "ases/*}:setIamPolicy:\001*ZA\"/v1/" - + "{resource=projects/*/instances/*/databas" - + "es/*}:getIamPolicy:\001*ZA\".google.spanner.admin" - + ".database.v1.ListBackupOperationsRespons" - + "e\"E\202\323\344\223\0026\0224/v1/{parent=projects/*/instan" - + "ces/*}/backupOperations\332A\006parent\032x\312A\026spa" - + "nner.googleapis.com\322A\\https://www.google" - + "apis.com/auth/cloud-platform,https://www" - + ".googleapis.com/auth/spanner.adminB\332\002\n$c" - + "om.google.spanner.admin.database.v1B\031Spa" - + "nnerDatabaseAdminProtoP\001ZHgoogle.golang." - + "org/genproto/googleapis/spanner/admin/da" - + "tabase/v1;database\252\002&Google.Cloud.Spanne" - + "r.Admin.Database.V1\312\002&Google\\Cloud\\Spann" - + "er\\Admin\\Database\\V1\352\002+Google::Cloud::Sp" - + "anner::Admin::Database::V1\352AJ\n\037spanner.g" - + "oogleapis.com/Instance\022\'projects/{projec" - + "t}/instances/{instance}b\006proto3" + + "info\030\003 \001(\0132,.google.spanner.admin.databa" + + "se.v1.BackupInfoH\000\022E\n\010progress\030\004 \001(\01323.g" + + "oogle.spanner.admin.database.v1.Operatio" + + "nProgress\022/\n\013cancel_time\030\005 \001(\0132\032.google." + + "protobuf.Timestamp\022(\n optimize_database_" + + "operation_name\030\006 \001(\tB\r\n\013source_info\"\235\001\n " + + "OptimizeRestoredDatabaseMetadata\0222\n\004name" + + "\030\001 \001(\tB$\372A!\n\037spanner.googleapis.com/Data" + + "base\022E\n\010progress\030\002 \001(\01323.google.spanner." + + "admin.database.v1.OperationProgress*5\n\021R" + + "estoreSourceType\022\024\n\020TYPE_UNSPECIFIED\020\000\022\n" + + "\n\006BACKUP\020\0012\302!\n\rDatabaseAdmin\022\300\001\n\rListDat" + + "abases\0226.google.spanner.admin.database.v" + + "1.ListDatabasesRequest\0327.google.spanner." + + "admin.database.v1.ListDatabasesResponse\"" + + ">\202\323\344\223\002/\022-/v1/{parent=projects/*/instance" + + "s/*}/databases\332A\006parent\022\244\002\n\016CreateDataba" + + "se\0227.google.spanner.admin.database.v1.Cr" + + "eateDatabaseRequest\032\035.google.longrunning" + + ".Operation\"\271\001\202\323\344\223\0022\"-/v1/{parent=project" + + "s/*/instances/*}/databases:\001*\332A\027parent,c" + + "reate_statement\312Ad\n)google.spanner.admin" + + ".database.v1.Database\0227google.spanner.ad" + + "min.database.v1.CreateDatabaseMetadata\022\255" + + "\001\n\013GetDatabase\0224.google.spanner.admin.da" + + "tabase.v1.GetDatabaseRequest\032*.google.sp" + + "anner.admin.database.v1.Database\"<\202\323\344\223\002/" + + "\022-/v1/{name=projects/*/instances/*/datab" + + "ases/*}\332A\004name\022\235\002\n\021UpdateDatabaseDdl\022:.g" + + "oogle.spanner.admin.database.v1.UpdateDa" + + "tabaseDdlRequest\032\035.google.longrunning.Op" + + "eration\"\254\001\202\323\344\223\002:25/v1/{database=projects" + + "/*/instances/*/databases/*}/ddl:\001*\332A\023dat" + + "abase,statements\312AS\n\025google.protobuf.Emp" + + "ty\022:google.spanner.admin.database.v1.Upd" + + "ateDatabaseDdlMetadata\022\243\001\n\014DropDatabase\022" + + "5.google.spanner.admin.database.v1.DropD" + + "atabaseRequest\032\026.google.protobuf.Empty\"D" + + "\202\323\344\223\0023*1/v1/{database=projects/*/instanc" + + "es/*/databases/*}\332A\010database\022\315\001\n\016GetData" + + "baseDdl\0227.google.spanner.admin.database." + + "v1.GetDatabaseDdlRequest\0328.google.spanne" + + "r.admin.database.v1.GetDatabaseDdlRespon" + + "se\"H\202\323\344\223\0027\0225/v1/{database=projects/*/ins" + + "tances/*/databases/*}/ddl\332A\010database\022\353\001\n" + + "\014SetIamPolicy\022\".google.iam.v1.SetIamPoli" + + "cyRequest\032\025.google.iam.v1.Policy\"\237\001\202\323\344\223\002" + + "\206\001\">/v1/{resource=projects/*/instances/*" + + "/databases/*}:setIamPolicy:\001*ZA\"/v1/{resource=projects/*/instances/*/d" + + "atabases/*}:getIamPolicy:\001*ZA\".google.spanner.admin.database.v" + + "1.ListBackupOperationsResponse\"E\202\323\344\223\0026\0224" + + "/v1/{parent=projects/*/instances/*}/back" + + "upOperations\332A\006parent\032x\312A\026spanner.google" + + "apis.com\322A\\https://www.googleapis.com/au" + + "th/cloud-platform,https://www.googleapis" + + ".com/auth/spanner.adminB\332\002\n$com.google.s" + + "panner.admin.database.v1B\031SpannerDatabas" + + "eAdminProtoP\001ZHgoogle.golang.org/genprot" + + "o/googleapis/spanner/admin/database/v1;d" + + "atabase\252\002&Google.Cloud.Spanner.Admin.Dat" + + "abase.V1\312\002&Google\\Cloud\\Spanner\\Admin\\Da" + + "tabase\\V1\352\002+Google::Cloud::Spanner::Admi" + + "n::Database::V1\352AJ\n\037spanner.googleapis.c" + + "om/Instance\022\'projects/{project}/instance" + + "s/{instance}b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -337,7 +344,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.iam.v1.PolicyProto.getDescriptor(), com.google.longrunning.OperationsProto.getDescriptor(), com.google.protobuf.EmptyProto.getDescriptor(), - com.google.protobuf.FieldMaskProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), com.google.spanner.admin.database.v1.BackupProto.getDescriptor(), com.google.spanner.admin.database.v1.CommonProto.getDescriptor(), @@ -522,7 +528,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.iam.v1.PolicyProto.getDescriptor(); com.google.longrunning.OperationsProto.getDescriptor(); com.google.protobuf.EmptyProto.getDescriptor(); - com.google.protobuf.FieldMaskProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); com.google.spanner.admin.database.v1.BackupProto.getDescriptor(); com.google.spanner.admin.database.v1.CommonProto.getDescriptor(); diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/backup.proto b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/backup.proto index 1e9ce30058a..5e019543eb9 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/backup.proto +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/backup.proto @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ syntax = "proto3"; package google.spanner.admin.database.v1; -import "google/api/annotations.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/longrunning/operations.proto"; @@ -120,6 +119,27 @@ message Backup { // Output only. The database dialect information for the backup. DatabaseDialect database_dialect = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. The names of the destination backups being created by copying + // this source backup. The backup names are of the form + // `projects//instances//backups/`. + // Referencing backups may exist in different instances. The existence of + // any referencing backup prevents the backup from being deleted. When the + // copy operation is done (either successfully completed or cancelled or the + // destination backup is deleted), the reference to the backup is removed. + repeated string referencing_backups = 11 [ + (google.api.field_behavior) = OUTPUT_ONLY, + (google.api.resource_reference) = { + type: "spanner.googleapis.com/Backup" + } + ]; + + // Output only. The max allowed expiration time of the backup, with + // microseconds granularity. A backup's expiration time can be configured in + // multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or + // copying an existing backup, the expiration time specified must be + // less than `Backup.max_expire_time`. + google.protobuf.Timestamp max_expire_time = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The request for [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup]. @@ -185,6 +205,86 @@ message CreateBackupMetadata { google.protobuf.Timestamp cancel_time = 4; } +// The request for [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup]. +message CopyBackupRequest { + // Required. The name of the destination instance that will contain the backup copy. + // Values are of the form: `projects//instances/`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "spanner.googleapis.com/Instance" + } + ]; + + // Required. The id of the backup copy. + // The `backup_id` appended to `parent` forms the full backup_uri of the form + // `projects//instances//backups/`. + string backup_id = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. The source backup to be copied. + // The source backup needs to be in READY state for it to be copied. + // Once CopyBackup is in progress, the source backup cannot be deleted or + // cleaned up on expiration until CopyBackup is finished. + // Values are of the form: + // `projects//instances//backups/`. + string source_backup = 3 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "spanner.googleapis.com/Backup" + } + ]; + + // Required. The expiration time of the backup in microsecond granularity. + // The expiration time must be at least 6 hours and at most 366 days + // from the `create_time` of the source backup. Once the `expire_time` has + // passed, the backup is eligible to be automatically deleted by Cloud Spanner + // to free the resources used by the backup. + google.protobuf.Timestamp expire_time = 4 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The encryption configuration used to encrypt the backup. If this field is + // not specified, the backup will use the same + // encryption configuration as the source backup by default, namely + // [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] = + // `USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION`. + CopyBackupEncryptionConfig encryption_config = 5 [(google.api.field_behavior) = OPTIONAL]; +} + +// Metadata type for the google.longrunning.Operation returned by +// [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup]. +message CopyBackupMetadata { + // The name of the backup being created through the copy operation. + // Values are of the form + // `projects//instances//backups/`. + string name = 1 [(google.api.resource_reference) = { + type: "spanner.googleapis.com/Backup" + }]; + + // The name of the source backup that is being copied. + // Values are of the form + // `projects//instances//backups/`. + string source_backup = 2 [(google.api.resource_reference) = { + type: "spanner.googleapis.com/Backup" + }]; + + // The progress of the + // [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] operation. + OperationProgress progress = 3; + + // The time at which cancellation of CopyBackup operation was received. + // [Operations.CancelOperation][google.longrunning.Operations.CancelOperation] + // starts asynchronous cancellation on a long-running operation. The server + // makes a best effort to cancel the operation, but success is not guaranteed. + // Clients can use + // [Operations.GetOperation][google.longrunning.Operations.GetOperation] or + // other methods to check whether the cancellation succeeded or whether the + // operation completed despite cancellation. On successful cancellation, + // the operation is not deleted; instead, it becomes an operation with + // an [Operation.error][google.longrunning.Operation.error] value with a + // [google.rpc.Status.code][google.rpc.Status.code] of 1, + // corresponding to `Code.CANCELLED`. + google.protobuf.Timestamp cancel_time = 4; +} + // The request for [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup]. message UpdateBackupRequest { // Required. The backup to update. `backup.name`, and the fields to be updated @@ -327,6 +427,8 @@ message ListBackupOperationsRequest { // for [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] is // `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. // * `metadata.` - any field in metadata.value. + // `metadata.@type` must be specified first if filtering on metadata + // fields. // * `error` - Error associated with the long-running operation. // * `response.@type` - the type of response. // * `response.` - any field in response.value. @@ -338,8 +440,11 @@ message ListBackupOperationsRequest { // Here are a few examples: // // * `done:true` - The operation is complete. - // * `metadata.database:prod` - The database the backup was taken from has - // a name containing the string "prod". + // * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + // `metadata.database:prod` - Returns operations where: + // * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. + // * The database the backup was taken from has a name containing the + // string "prod". // * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ // `(metadata.name:howl) AND` \ // `(metadata.progress.start_time < \"2018-03-28T14:50:00Z\") AND` \ @@ -348,6 +453,29 @@ message ListBackupOperationsRequest { // * The backup name contains the string "howl". // * The operation started before 2018-03-28T14:50:00Z. // * The operation resulted in an error. + // * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) AND` \ + // `(metadata.source_backup:test) AND` \ + // `(metadata.progress.start_time < \"2022-01-18T14:50:00Z\") AND` \ + // `(error:*)` - Returns operations where: + // * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + // * The source backup of the copied backup name contains the string + // "test". + // * The operation started before 2022-01-18T14:50:00Z. + // * The operation resulted in an error. + // * `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \ + // `(metadata.database:test_db)) OR` \ + // `((metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CopyBackupMetadata) + // AND` \ + // `(metadata.source_backup:test_bkp)) AND` \ + // `(error:*)` - Returns operations where: + // * The operation's metadata matches either of criteria: + // * The operation's metadata type is [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata] AND the + // database the backup was taken from has name containing string + // "test_db" + // * The operation's metadata type is [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata] AND the + // backup the backup was copied from has name containing string + // "test_bkp" + // * The operation resulted in an error. string filter = 2; // Number of operations to be returned in the response. If 0 or @@ -366,11 +494,11 @@ message ListBackupOperationsRequest { message ListBackupOperationsResponse { // The list of matching backup [long-running // operations][google.longrunning.Operation]. Each operation's name will be - // prefixed by the backup's name and the operation's - // [metadata][google.longrunning.Operation.metadata] will be of type - // [CreateBackupMetadata][google.spanner.admin.database.v1.CreateBackupMetadata]. Operations returned include those that are - // pending or have completed/failed/canceled within the last 7 days. - // Operations returned are ordered by + // prefixed by the backup's name. The operation's + // [metadata][google.longrunning.Operation.metadata] field type + // `metadata.type_url` describes the type of the metadata. Operations returned + // include those that are pending or have completed/failed/canceled within the + // last 7 days. Operations returned are ordered by // `operation.metadata.value.progress.start_time` in descending order starting // from the most recently started operation. repeated google.longrunning.Operation operations = 1; @@ -442,3 +570,40 @@ message CreateBackupEncryptionConfig { } ]; } + +// Encryption configuration for the copied backup. +message CopyBackupEncryptionConfig { + // Encryption types for the backup. + enum EncryptionType { + // Unspecified. Do not use. + ENCRYPTION_TYPE_UNSPECIFIED = 0; + + // This is the default option for [CopyBackup][google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup] + // when [encryption_config][google.spanner.admin.database.v1.CopyBackupEncryptionConfig] is not specified. + // For example, if the source backup is using `Customer_Managed_Encryption`, + // the backup will be using the same Cloud KMS key as the source backup. + USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION = 1; + + // Use Google default encryption. + GOOGLE_DEFAULT_ENCRYPTION = 2; + + // Use customer managed encryption. If specified, `kms_key_name` + // must contain a valid Cloud KMS key. + CUSTOMER_MANAGED_ENCRYPTION = 3; + } + + // Required. The encryption type of the backup. + EncryptionType encryption_type = 1 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The Cloud KMS key that will be used to protect the backup. + // This field should be set only when + // [encryption_type][google.spanner.admin.database.v1.CopyBackupEncryptionConfig.encryption_type] is + // `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form + // `projects//locations//keyRings//cryptoKeys/`. + string kms_key_name = 2 [ + (google.api.field_behavior) = OPTIONAL, + (google.api.resource_reference) = { + type: "cloudkms.googleapis.com/CryptoKey" + } + ]; +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/common.proto b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/common.proto index 739a486458e..720ebb95dbc 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/common.proto +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/common.proto @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ syntax = "proto3"; package google.spanner.admin.database.v1; -import "google/api/annotations.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/protobuf/timestamp.proto"; diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto index 89d582412db..38023e0721c 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto @@ -1,4 +1,4 @@ -// Copyright 2021 Google LLC +// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -24,7 +24,6 @@ import "google/iam/v1/iam_policy.proto"; import "google/iam/v1/policy.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/empty.proto"; -import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; import "google/spanner/admin/database/v1/backup.proto"; import "google/spanner/admin/database/v1/common.proto"; @@ -216,6 +215,30 @@ service DatabaseAdmin { }; } + // Starts copying a Cloud Spanner Backup. + // The returned backup [long-running operation][google.longrunning.Operation] + // will have a name of the format + // `projects//instances//backups//operations/` + // and can be used to track copying of the backup. The operation is associated + // with the destination backup. + // The [metadata][google.longrunning.Operation.metadata] field type is + // [CopyBackupMetadata][google.spanner.admin.database.v1.CopyBackupMetadata]. + // The [response][google.longrunning.Operation.response] field type is + // [Backup][google.spanner.admin.database.v1.Backup], if successful. Cancelling the returned operation will stop the + // copying and delete the backup. + // Concurrent CopyBackup requests can run on the same source backup. + rpc CopyBackup(CopyBackupRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/instances/*}/backups:copy" + body: "*" + }; + option (google.api.method_signature) = "parent,backup_id,source_backup,expire_time"; + option (google.longrunning.operation_info) = { + response_type: "google.spanner.admin.database.v1.Backup" + metadata_type: "google.spanner.admin.database.v1.CopyBackupMetadata" + }; + } + // Gets metadata on a pending or completed [Backup][google.spanner.admin.database.v1.Backup]. rpc GetBackup(GetBackupRequest) returns (Backup) { option (google.api.http) = { @@ -645,6 +668,8 @@ message ListDatabaseOperationsRequest { // for [RestoreDatabaseMetadata][google.spanner.admin.database.v1.RestoreDatabaseMetadata] is // `type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata`. // * `metadata.` - any field in metadata.value. + // `metadata.@type` must be specified first, if filtering on metadata + // fields. // * `error` - Error associated with the long-running operation. // * `response.@type` - the type of response. // * `response.` - any field in response.value. diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index a7427b26a85..fef4b58ca4d 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/proto-google-cloud-spanner-admin-instance-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.21.2 + 6.22.0 proto-google-cloud-spanner-admin-instance-v1 PROTO library for proto-google-cloud-spanner-admin-instance-v1 com.google.cloud google-cloud-spanner-parent - 6.21.2 + 6.22.0 diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml index a6358c7dbd9..7f0e1bf8ef5 100644 --- a/proto-google-cloud-spanner-v1/pom.xml +++ b/proto-google-cloud-spanner-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.21.2 + 6.22.0 proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.21.2 + 6.22.0 diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java index e093354a31b..8aa46a48cd7 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java @@ -45,26 +45,22 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n\'google/spanner/v1/commit_response.prot" - + "o\022\021google.spanner.v1\032\034google/api/annotat" - + "ions.proto\032\036google/protobuf/duration.pro" - + "to\032\037google/protobuf/timestamp.proto\"\262\001\n\016" - + "CommitResponse\0224\n\020commit_timestamp\030\001 \001(\013" - + "2\032.google.protobuf.Timestamp\022C\n\014commit_s" - + "tats\030\002 \001(\0132-.google.spanner.v1.CommitRes" - + "ponse.CommitStats\032%\n\013CommitStats\022\026\n\016muta" - + "tion_count\030\001 \001(\003B\271\001\n\025com.google.spanner." - + "v1B\023CommitResponseProtoP\001Z8google.golang" - + ".org/genproto/googleapis/spanner/v1;span" - + "ner\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\C" - + "loud\\Spanner\\V1\352\002\032Google::Cloud::Spanner" - + "::V1b\006proto3" + + "o\022\021google.spanner.v1\032\037google/protobuf/ti" + + "mestamp.proto\"\262\001\n\016CommitResponse\0224\n\020comm" + + "it_timestamp\030\001 \001(\0132\032.google.protobuf.Tim" + + "estamp\022C\n\014commit_stats\030\002 \001(\0132-.google.sp" + + "anner.v1.CommitResponse.CommitStats\032%\n\013C" + + "ommitStats\022\026\n\016mutation_count\030\001 \001(\003B\271\001\n\025c" + + "om.google.spanner.v1B\023CommitResponseProt" + + "oP\001Z8google.golang.org/genproto/googleap" + + "is/spanner/v1;spanner\252\002\027Google.Cloud.Spa" + + "nner.V1\312\002\027Google\\Cloud\\Spanner\\V1\352\002\032Goog" + + "le::Cloud::Spanner::V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), - com.google.protobuf.DurationProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), }); internal_static_google_spanner_v1_CommitResponse_descriptor = @@ -83,8 +79,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "MutationCount", }); - com.google.api.AnnotationsProto.getDescriptor(); - com.google.protobuf.DurationProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); } 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 6c95c92573d..b79f3d8169b 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 @@ -45,28 +45,26 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n\034google/spanner/v1/keys.proto\022\021google.s" - + "panner.v1\032\034google/api/annotations.proto\032" - + "\034google/protobuf/struct.proto\"\364\001\n\010KeyRan" - + "ge\0222\n\014start_closed\030\001 \001(\0132\032.google.protob" - + "uf.ListValueH\000\0220\n\nstart_open\030\002 \001(\0132\032.goo" - + "gle.protobuf.ListValueH\000\0220\n\nend_closed\030\003" - + " \001(\0132\032.google.protobuf.ListValueH\001\022.\n\010en" - + "d_open\030\004 \001(\0132\032.google.protobuf.ListValue" - + "H\001B\020\n\016start_key_typeB\016\n\014end_key_type\"l\n\006" - + "KeySet\022(\n\004keys\030\001 \003(\0132\032.google.protobuf.L" - + "istValue\022+\n\006ranges\030\002 \003(\0132\033.google.spanne" - + "r.v1.KeyRange\022\013\n\003all\030\003 \001(\010B\257\001\n\025com.googl" - + "e.spanner.v1B\tKeysProtoP\001Z8google.golang" - + ".org/genproto/googleapis/spanner/v1;span" - + "ner\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\C" - + "loud\\Spanner\\V1\352\002\032Google::Cloud::Spanner" - + "::V1b\006proto3" + + "panner.v1\032\034google/protobuf/struct.proto\"" + + "\364\001\n\010KeyRange\0222\n\014start_closed\030\001 \001(\0132\032.goo" + + "gle.protobuf.ListValueH\000\0220\n\nstart_open\030\002" + + " \001(\0132\032.google.protobuf.ListValueH\000\0220\n\nen" + + "d_closed\030\003 \001(\0132\032.google.protobuf.ListVal" + + "ueH\001\022.\n\010end_open\030\004 \001(\0132\032.google.protobuf" + + ".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" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), com.google.protobuf.StructProto.getDescriptor(), }); internal_static_google_spanner_v1_KeyRange_descriptor = @@ -84,7 +82,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "Keys", "Ranges", "All", }); - com.google.api.AnnotationsProto.getDescriptor(); com.google.protobuf.StructProto.getDescriptor(); } 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 faf23ffff0a..1c10bfaa9ca 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 @@ -49,32 +49,31 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n google/spanner/v1/mutation.proto\022\021goog" - + "le.spanner.v1\032\034google/api/annotations.pr" - + "oto\032\037google/api/field_behavior.proto\032\034go" - + "ogle/protobuf/struct.proto\032\034google/spann" - + "er/v1/keys.proto\"\325\003\n\010Mutation\0223\n\006insert\030" - + "\001 \001(\0132!.google.spanner.v1.Mutation.Write" - + "H\000\0223\n\006update\030\002 \001(\0132!.google.spanner.v1.M" - + "utation.WriteH\000\022=\n\020insert_or_update\030\003 \001(" - + "\0132!.google.spanner.v1.Mutation.WriteH\000\0224" - + "\n\007replace\030\004 \001(\0132!.google.spanner.v1.Muta" - + "tion.WriteH\000\0224\n\006delete\030\005 \001(\0132\".google.sp" - + "anner.v1.Mutation.DeleteH\000\032X\n\005Write\022\022\n\005t" - + "able\030\001 \001(\tB\003\340A\002\022\017\n\007columns\030\002 \003(\t\022*\n\006valu" - + "es\030\003 \003(\0132\032.google.protobuf.ListValue\032M\n\006" - + "Delete\022\022\n\005table\030\001 \001(\tB\003\340A\002\022/\n\007key_set\030\002 " - + "\001(\0132\031.google.spanner.v1.KeySetB\003\340A\002B\013\n\to" - + "perationB\263\001\n\025com.google.spanner.v1B\rMuta" - + "tionProtoP\001Z8google.golang.org/genproto/" - + "googleapis/spanner/v1;spanner\252\002\027Google.C" - + "loud.Spanner.V1\312\002\027Google\\Cloud\\Spanner\\V" - + "1\352\002\032Google::Cloud::Spanner::V1b\006proto3" + + "le.spanner.v1\032\037google/api/field_behavior" + + ".proto\032\034google/protobuf/struct.proto\032\034go" + + "ogle/spanner/v1/keys.proto\"\325\003\n\010Mutation\022" + + "3\n\006insert\030\001 \001(\0132!.google.spanner.v1.Muta" + + "tion.WriteH\000\0223\n\006update\030\002 \001(\0132!.google.sp" + + "anner.v1.Mutation.WriteH\000\022=\n\020insert_or_u" + + "pdate\030\003 \001(\0132!.google.spanner.v1.Mutation" + + ".WriteH\000\0224\n\007replace\030\004 \001(\0132!.google.spann" + + "er.v1.Mutation.WriteH\000\0224\n\006delete\030\005 \001(\0132\"" + + ".google.spanner.v1.Mutation.DeleteH\000\032X\n\005" + + "Write\022\022\n\005table\030\001 \001(\tB\003\340A\002\022\017\n\007columns\030\002 \003" + + "(\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" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), com.google.api.FieldBehaviorProto.getDescriptor(), com.google.protobuf.StructProto.getDescriptor(), com.google.spanner.v1.KeysProto.getDescriptor(), @@ -108,7 +107,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor( descriptor, registry); - com.google.api.AnnotationsProto.getDescriptor(); com.google.api.FieldBehaviorProto.getDescriptor(); com.google.protobuf.StructProto.getDescriptor(); com.google.spanner.v1.KeysProto.getDescriptor(); 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 0a9d2b3583d..21cc5708fbc 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 @@ -57,37 +57,35 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n\"google/spanner/v1/query_plan.proto\022\021go" - + "ogle.spanner.v1\032\034google/api/annotations." - + "proto\032\034google/protobuf/struct.proto\"\370\004\n\010" - + "PlanNode\022\r\n\005index\030\001 \001(\005\022.\n\004kind\030\002 \001(\0162 ." - + "google.spanner.v1.PlanNode.Kind\022\024\n\014displ" - + "ay_name\030\003 \001(\t\022:\n\013child_links\030\004 \003(\0132%.goo" - + "gle.spanner.v1.PlanNode.ChildLink\022M\n\024sho" - + "rt_representation\030\005 \001(\0132/.google.spanner" - + ".v1.PlanNode.ShortRepresentation\022)\n\010meta" - + "data\030\006 \001(\0132\027.google.protobuf.Struct\0220\n\017e" - + "xecution_stats\030\007 \001(\0132\027.google.protobuf.S" - + "truct\032@\n\tChildLink\022\023\n\013child_index\030\001 \001(\005\022" - + "\014\n\004type\030\002 \001(\t\022\020\n\010variable\030\003 \001(\t\032\262\001\n\023Shor" - + "tRepresentation\022\023\n\013description\030\001 \001(\t\022S\n\n" - + "subqueries\030\002 \003(\0132?.google.spanner.v1.Pla" - + "nNode.ShortRepresentation.SubqueriesEntr" - + "y\0321\n\017SubqueriesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005val" - + "ue\030\002 \001(\005:\0028\001\"8\n\004Kind\022\024\n\020KIND_UNSPECIFIED" - + "\020\000\022\016\n\nRELATIONAL\020\001\022\n\n\006SCALAR\020\002\"<\n\tQueryP" - + "lan\022/\n\nplan_nodes\030\001 \003(\0132\033.google.spanner" - + ".v1.PlanNodeB\264\001\n\025com.google.spanner.v1B\016" - + "QueryPlanProtoP\001Z8google.golang.org/genp" - + "roto/googleapis/spanner/v1;spanner\252\002\027Goo" - + "gle.Cloud.Spanner.V1\312\002\027Google\\Cloud\\Span" - + "ner\\V1\352\002\032Google::Cloud::Spanner::V1b\006pro" - + "to3" + + "ogle.spanner.v1\032\034google/protobuf/struct." + + "proto\"\370\004\n\010PlanNode\022\r\n\005index\030\001 \001(\005\022.\n\004kin" + + "d\030\002 \001(\0162 .google.spanner.v1.PlanNode.Kin" + + "d\022\024\n\014display_name\030\003 \001(\t\022:\n\013child_links\030\004" + + " \003(\0132%.google.spanner.v1.PlanNode.ChildL" + + "ink\022M\n\024short_representation\030\005 \001(\0132/.goog" + + "le.spanner.v1.PlanNode.ShortRepresentati" + + "on\022)\n\010metadata\030\006 \001(\0132\027.google.protobuf.S" + + "truct\0220\n\017execution_stats\030\007 \001(\0132\027.google." + + "protobuf.Struct\032@\n\tChildLink\022\023\n\013child_in" + + "dex\030\001 \001(\005\022\014\n\004type\030\002 \001(\t\022\020\n\010variable\030\003 \001(" + + "\t\032\262\001\n\023ShortRepresentation\022\023\n\013description" + + "\030\001 \001(\t\022S\n\nsubqueries\030\002 \003(\0132?.google.span" + + "ner.v1.PlanNode.ShortRepresentation.Subq" + + "ueriesEntry\0321\n\017SubqueriesEntry\022\013\n\003key\030\001 " + + "\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" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), com.google.protobuf.StructProto.getDescriptor(), }); internal_static_google_spanner_v1_PlanNode_descriptor = @@ -138,7 +136,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "PlanNodes", }); - com.google.api.AnnotationsProto.getDescriptor(); com.google.protobuf.StructProto.getDescriptor(); } 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 e6b22d02d80..a5744a50a1f 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 @@ -53,40 +53,38 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n\"google/spanner/v1/result_set.proto\022\021go" - + "ogle.spanner.v1\032\034google/api/annotations." - + "proto\032\034google/protobuf/struct.proto\032\'goo" - + "gle/spanner/v1/commit_response.proto\032\"go" - + "ogle/spanner/v1/query_plan.proto\032#google" - + "/spanner/v1/transaction.proto\032\034google/sp" - + "anner/v1/type.proto\"\237\001\n\tResultSet\0226\n\010met" - + "adata\030\001 \001(\0132$.google.spanner.v1.ResultSe" - + "tMetadata\022(\n\004rows\030\002 \003(\0132\032.google.protobu" - + "f.ListValue\0220\n\005stats\030\003 \001(\0132!.google.span" - + "ner.v1.ResultSetStats\"\321\001\n\020PartialResultS" - + "et\0226\n\010metadata\030\001 \001(\0132$.google.spanner.v1" - + ".ResultSetMetadata\022&\n\006values\030\002 \003(\0132\026.goo" - + "gle.protobuf.Value\022\025\n\rchunked_value\030\003 \001(" - + "\010\022\024\n\014resume_token\030\004 \001(\014\0220\n\005stats\030\005 \001(\0132!" - + ".google.spanner.v1.ResultSetStats\"y\n\021Res" - + "ultSetMetadata\022/\n\010row_type\030\001 \001(\0132\035.googl" - + "e.spanner.v1.StructType\0223\n\013transaction\030\002" - + " \001(\0132\036.google.spanner.v1.Transaction\"\271\001\n" - + "\016ResultSetStats\0220\n\nquery_plan\030\001 \001(\0132\034.go" - + "ogle.spanner.v1.QueryPlan\022,\n\013query_stats" - + "\030\002 \001(\0132\027.google.protobuf.Struct\022\031\n\017row_c" - + "ount_exact\030\003 \001(\003H\000\022\037\n\025row_count_lower_bo" - + "und\030\004 \001(\003H\000B\013\n\trow_countB\267\001\n\025com.google." - + "spanner.v1B\016ResultSetProtoP\001Z8google.gol" - + "ang.org/genproto/googleapis/spanner/v1;s" - + "panner\370\001\001\252\002\027Google.Cloud.Spanner.V1\312\002\027Go" - + "ogle\\Cloud\\Spanner\\V1\352\002\032Google::Cloud::S" - + "panner::V1b\006proto3" + + "ogle.spanner.v1\032\034google/protobuf/struct." + + "proto\032\'google/spanner/v1/commit_response" + + ".proto\032\"google/spanner/v1/query_plan.pro" + + "to\032#google/spanner/v1/transaction.proto\032" + + "\034google/spanner/v1/type.proto\"\237\001\n\tResult" + + "Set\0226\n\010metadata\030\001 \001(\0132$.google.spanner.v" + + "1.ResultSetMetadata\022(\n\004rows\030\002 \003(\0132\032.goog" + + "le.protobuf.ListValue\0220\n\005stats\030\003 \001(\0132!.g" + + "oogle.spanner.v1.ResultSetStats\"\321\001\n\020Part" + + "ialResultSet\0226\n\010metadata\030\001 \001(\0132$.google." + + "spanner.v1.ResultSetMetadata\022&\n\006values\030\002" + + " \003(\0132\026.google.protobuf.Value\022\025\n\rchunked_" + + "value\030\003 \001(\010\022\024\n\014resume_token\030\004 \001(\014\0220\n\005sta" + + "ts\030\005 \001(\0132!.google.spanner.v1.ResultSetSt" + + "ats\"y\n\021ResultSetMetadata\022/\n\010row_type\030\001 \001" + + "(\0132\035.google.spanner.v1.StructType\0223\n\013tra" + + "nsaction\030\002 \001(\0132\036.google.spanner.v1.Trans" + + "action\"\271\001\n\016ResultSetStats\0220\n\nquery_plan\030" + + "\001 \001(\0132\034.google.spanner.v1.QueryPlan\022,\n\013q" + + "uery_stats\030\002 \001(\0132\027.google.protobuf.Struc" + + "t\022\031\n\017row_count_exact\030\003 \001(\003H\000\022\037\n\025row_coun" + + "t_lower_bound\030\004 \001(\003H\000B\013\n\trow_countB\267\001\n\025c" + + "om.google.spanner.v1B\016ResultSetProtoP\001Z8" + + "google.golang.org/genproto/googleapis/sp" + + "anner/v1;spanner\370\001\001\252\002\027Google.Cloud.Spann" + + "er.V1\312\002\027Google\\Cloud\\Spanner\\V1\352\002\032Google" + + "::Cloud::Spanner::V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), com.google.protobuf.StructProto.getDescriptor(), com.google.spanner.v1.CommitResponseProto.getDescriptor(), com.google.spanner.v1.QueryPlanProto.getDescriptor(), @@ -125,7 +123,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "QueryPlan", "QueryStats", "RowCountExact", "RowCountLowerBound", "RowCount", }); - com.google.api.AnnotationsProto.getDescriptor(); com.google.protobuf.StructProto.getDescriptor(); com.google.spanner.v1.CommitResponseProto.getDescriptor(); com.google.spanner.v1.QueryPlanProto.getDescriptor(); diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java index 2655d8e0fb4..4ce4f322c00 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java @@ -61,41 +61,39 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n#google/spanner/v1/transaction.proto\022\021g" - + "oogle.spanner.v1\032\034google/api/annotations" - + ".proto\032\036google/protobuf/duration.proto\032\037" - + "google/protobuf/timestamp.proto\"\303\004\n\022Tran" - + "sactionOptions\022E\n\nread_write\030\001 \001(\0132/.goo" - + "gle.spanner.v1.TransactionOptions.ReadWr" - + "iteH\000\022O\n\017partitioned_dml\030\003 \001(\01324.google." - + "spanner.v1.TransactionOptions.Partitione" - + "dDmlH\000\022C\n\tread_only\030\002 \001(\0132..google.spann" - + "er.v1.TransactionOptions.ReadOnlyH\000\032\013\n\tR" - + "eadWrite\032\020\n\016PartitionedDml\032\250\002\n\010ReadOnly\022" - + "\020\n\006strong\030\001 \001(\010H\000\0228\n\022min_read_timestamp\030" - + "\002 \001(\0132\032.google.protobuf.TimestampH\000\0222\n\rm" - + "ax_staleness\030\003 \001(\0132\031.google.protobuf.Dur" - + "ationH\000\0224\n\016read_timestamp\030\004 \001(\0132\032.google" - + ".protobuf.TimestampH\000\0224\n\017exact_staleness" - + "\030\005 \001(\0132\031.google.protobuf.DurationH\000\022\035\n\025r" - + "eturn_read_timestamp\030\006 \001(\010B\021\n\017timestamp_" - + "boundB\006\n\004mode\"M\n\013Transaction\022\n\n\002id\030\001 \001(\014" - + "\0222\n\016read_timestamp\030\002 \001(\0132\032.google.protob" - + "uf.Timestamp\"\244\001\n\023TransactionSelector\022;\n\n" - + "single_use\030\001 \001(\0132%.google.spanner.v1.Tra" - + "nsactionOptionsH\000\022\014\n\002id\030\002 \001(\014H\000\0226\n\005begin" - + "\030\003 \001(\0132%.google.spanner.v1.TransactionOp" - + "tionsH\000B\n\n\010selectorB\266\001\n\025com.google.spann" - + "er.v1B\020TransactionProtoP\001Z8google.golang" - + ".org/genproto/googleapis/spanner/v1;span" - + "ner\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\C" - + "loud\\Spanner\\V1\352\002\032Google::Cloud::Spanner" - + "::V1b\006proto3" + + "oogle.spanner.v1\032\036google/protobuf/durati" + + "on.proto\032\037google/protobuf/timestamp.prot" + + "o\"\303\004\n\022TransactionOptions\022E\n\nread_write\030\001" + + " \001(\0132/.google.spanner.v1.TransactionOpti" + + "ons.ReadWriteH\000\022O\n\017partitioned_dml\030\003 \001(\013" + + "24.google.spanner.v1.TransactionOptions." + + "PartitionedDmlH\000\022C\n\tread_only\030\002 \001(\0132..go" + + "ogle.spanner.v1.TransactionOptions.ReadO" + + "nlyH\000\032\013\n\tReadWrite\032\020\n\016PartitionedDml\032\250\002\n" + + "\010ReadOnly\022\020\n\006strong\030\001 \001(\010H\000\0228\n\022min_read_" + + "timestamp\030\002 \001(\0132\032.google.protobuf.Timest" + + "ampH\000\0222\n\rmax_staleness\030\003 \001(\0132\031.google.pr" + + "otobuf.DurationH\000\0224\n\016read_timestamp\030\004 \001(" + + "\0132\032.google.protobuf.TimestampH\000\0224\n\017exact" + + "_staleness\030\005 \001(\0132\031.google.protobuf.Durat" + + "ionH\000\022\035\n\025return_read_timestamp\030\006 \001(\010B\021\n\017" + + "timestamp_boundB\006\n\004mode\"M\n\013Transaction\022\n" + + "\n\002id\030\001 \001(\014\0222\n\016read_timestamp\030\002 \001(\0132\032.goo" + + "gle.protobuf.Timestamp\"\244\001\n\023TransactionSe" + + "lector\022;\n\nsingle_use\030\001 \001(\0132%.google.span" + + "ner.v1.TransactionOptionsH\000\022\014\n\002id\030\002 \001(\014H" + + "\000\0226\n\005begin\030\003 \001(\0132%.google.spanner.v1.Tra" + + "nsactionOptionsH\000B\n\n\010selectorB\266\001\n\025com.go" + + "ogle.spanner.v1B\020TransactionProtoP\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" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), com.google.protobuf.DurationProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), }); @@ -149,7 +147,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "SingleUse", "Id", "Begin", "Selector", }); - com.google.api.AnnotationsProto.getDescriptor(); com.google.protobuf.DurationProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java index d0e7dd0f0cc..29e9151b325 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java @@ -49,34 +49,32 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n\034google/spanner/v1/type.proto\022\021google.s" - + "panner.v1\032\034google/api/annotations.proto\032" - + "\037google/api/field_behavior.proto\"\337\001\n\004Typ" - + "e\022.\n\004code\030\001 \001(\0162\033.google.spanner.v1.Type" - + "CodeB\003\340A\002\0223\n\022array_element_type\030\002 \001(\0132\027." - + "google.spanner.v1.Type\0222\n\013struct_type\030\003 " - + "\001(\0132\035.google.spanner.v1.StructType\022>\n\017ty" - + "pe_annotation\030\004 \001(\0162%.google.spanner.v1." - + "TypeAnnotationCode\"\177\n\nStructType\0223\n\006fiel" - + "ds\030\001 \003(\0132#.google.spanner.v1.StructType." - + "Field\032<\n\005Field\022\014\n\004name\030\001 \001(\t\022%\n\004type\030\002 \001" - + "(\0132\027.google.spanner.v1.Type*\245\001\n\010TypeCode" - + "\022\031\n\025TYPE_CODE_UNSPECIFIED\020\000\022\010\n\004BOOL\020\001\022\t\n" - + "\005INT64\020\002\022\013\n\007FLOAT64\020\003\022\r\n\tTIMESTAMP\020\004\022\010\n\004" - + "DATE\020\005\022\n\n\006STRING\020\006\022\t\n\005BYTES\020\007\022\t\n\005ARRAY\020\010" - + "\022\n\n\006STRUCT\020\t\022\013\n\007NUMERIC\020\n\022\010\n\004JSON\020\013*J\n\022T" - + "ypeAnnotationCode\022$\n TYPE_ANNOTATION_COD" - + "E_UNSPECIFIED\020\000\022\016\n\nPG_NUMERIC\020\002B\257\001\n\025com." - + "google.spanner.v1B\tTypeProtoP\001Z8google.g" - + "olang.org/genproto/googleapis/spanner/v1" - + ";spanner\252\002\027Google.Cloud.Spanner.V1\312\002\027Goo" - + "gle\\Cloud\\Spanner\\V1\352\002\032Google::Cloud::Sp" - + "anner::V1b\006proto3" + + "panner.v1\032\037google/api/field_behavior.pro" + + "to\"\337\001\n\004Type\022.\n\004code\030\001 \001(\0162\033.google.spann" + + "er.v1.TypeCodeB\003\340A\002\0223\n\022array_element_typ" + + "e\030\002 \001(\0132\027.google.spanner.v1.Type\0222\n\013stru" + + "ct_type\030\003 \001(\0132\035.google.spanner.v1.Struct" + + "Type\022>\n\017type_annotation\030\004 \001(\0162%.google.s" + + "panner.v1.TypeAnnotationCode\"\177\n\nStructTy" + + "pe\0223\n\006fields\030\001 \003(\0132#.google.spanner.v1.S" + + "tructType.Field\032<\n\005Field\022\014\n\004name\030\001 \001(\t\022%" + + "\n\004type\030\002 \001(\0132\027.google.spanner.v1.Type*\245\001" + + "\n\010TypeCode\022\031\n\025TYPE_CODE_UNSPECIFIED\020\000\022\010\n" + + "\004BOOL\020\001\022\t\n\005INT64\020\002\022\013\n\007FLOAT64\020\003\022\r\n\tTIMES" + + "TAMP\020\004\022\010\n\004DATE\020\005\022\n\n\006STRING\020\006\022\t\n\005BYTES\020\007\022" + + "\t\n\005ARRAY\020\010\022\n\n\006STRUCT\020\t\022\013\n\007NUMERIC\020\n\022\010\n\004J" + + "SON\020\013*J\n\022TypeAnnotationCode\022$\n TYPE_ANNO" + + "TATION_CODE_UNSPECIFIED\020\000\022\016\n\nPG_NUMERIC\020" + + "\002B\257\001\n\025com.google.spanner.v1B\tTypeProtoP\001" + + "Z8google.golang.org/genproto/googleapis/" + + "spanner/v1;spanner\252\002\027Google.Cloud.Spanne" + + "r.V1\312\002\027Google\\Cloud\\Spanner\\V1\352\002\032Google:" + + ":Cloud::Spanner::V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.AnnotationsProto.getDescriptor(), com.google.api.FieldBehaviorProto.getDescriptor(), }); internal_static_google_spanner_v1_Type_descriptor = getDescriptor().getMessageTypes().get(0); @@ -107,7 +105,6 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor( descriptor, registry); - com.google.api.AnnotationsProto.getDescriptor(); com.google.api.FieldBehaviorProto.getDescriptor(); } diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/commit_response.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/commit_response.proto index 4850600f0ef..d43a83a3206 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/commit_response.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/commit_response.proto @@ -16,8 +16,6 @@ syntax = "proto3"; package google.spanner.v1; -import "google/api/annotations.proto"; -import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Spanner.V1"; diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/keys.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/keys.proto index ddcd181266e..12495a616ab 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/keys.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/keys.proto @@ -16,7 +16,6 @@ syntax = "proto3"; package google.spanner.v1; -import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; option csharp_namespace = "Google.Cloud.Spanner.V1"; diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/mutation.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/mutation.proto index f4b722cc12e..ef7e75f8dc8 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/mutation.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/mutation.proto @@ -16,7 +16,6 @@ syntax = "proto3"; package google.spanner.v1; -import "google/api/annotations.proto"; import "google/api/field_behavior.proto"; import "google/protobuf/struct.proto"; import "google/spanner/v1/keys.proto"; diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/query_plan.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/query_plan.proto index 690c36ea92b..f700014e283 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/query_plan.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/query_plan.proto @@ -16,7 +16,6 @@ syntax = "proto3"; package google.spanner.v1; -import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; option csharp_namespace = "Google.Cloud.Spanner.V1"; diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/result_set.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/result_set.proto index d6ba978de2b..89dfa234653 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/result_set.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/result_set.proto @@ -16,7 +16,6 @@ syntax = "proto3"; package google.spanner.v1; -import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; import "google/spanner/v1/commit_response.proto"; import "google/spanner/v1/query_plan.proto"; diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/transaction.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/transaction.proto index debc226e32b..1e4c655ee2c 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/transaction.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/transaction.proto @@ -16,7 +16,6 @@ syntax = "proto3"; package google.spanner.v1; -import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto index f88e7b251df..3d28c331300 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto @@ -16,7 +16,6 @@ syntax = "proto3"; package google.spanner.v1; -import "google/api/annotations.proto"; import "google/api/field_behavior.proto"; option csharp_namespace = "Google.Cloud.Spanner.V1"; diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 42a47627a48..3644b98a2a7 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -22,7 +22,7 @@ 1.8 UTF-8 0.31.0 - 2.1.6 + 2.1.9 3.2.5
@@ -32,7 +32,7 @@ com.google.cloud google-cloud-spanner - 6.20.0 + 6.21.2 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 1032e583d8f..8d9fcc646f7 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -22,7 +22,7 @@ 1.8 UTF-8 0.31.0 - 2.1.6 + 2.1.9 3.2.5 @@ -31,7 +31,7 @@ com.google.cloud google-cloud-spanner - 6.21.2 + 6.22.0 diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index bfe4d24f759..74aaf074d52 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -33,7 +33,7 @@ com.google.cloud libraries-bom - 24.4.0 + 25.0.0 pom import diff --git a/versions.txt b/versions.txt index 369d5728474..915c784a6bc 100644 --- a/versions.txt +++ b/versions.txt @@ -1,10 +1,10 @@ # Format: # module:released-version:current-version -proto-google-cloud-spanner-admin-instance-v1:6.21.2:6.21.2 -proto-google-cloud-spanner-v1:6.21.2:6.21.2 -proto-google-cloud-spanner-admin-database-v1:6.21.2:6.21.2 -grpc-google-cloud-spanner-v1:6.21.2:6.21.2 -grpc-google-cloud-spanner-admin-instance-v1:6.21.2:6.21.2 -grpc-google-cloud-spanner-admin-database-v1:6.21.2:6.21.2 -google-cloud-spanner:6.21.2:6.21.2 +proto-google-cloud-spanner-admin-instance-v1:6.22.0:6.22.0 +proto-google-cloud-spanner-v1:6.22.0:6.22.0 +proto-google-cloud-spanner-admin-database-v1:6.22.0:6.22.0 +grpc-google-cloud-spanner-v1:6.22.0:6.22.0 +grpc-google-cloud-spanner-admin-instance-v1:6.22.0:6.22.0 +grpc-google-cloud-spanner-admin-database-v1:6.22.0:6.22.0 +google-cloud-spanner:6.22.0:6.22.0