diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddAndDropDatabaseRole.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddAndDropDatabaseRole.java index d3de612098d9..826b8c9ddcb7 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddAndDropDatabaseRole.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddAndDropDatabaseRole.java @@ -42,34 +42,39 @@ static void addAndDropDatabaseRole() { } static void addAndDropDatabaseRole( - String projectId, String instanceId, String databaseId, - String parentRole, String childRole, String... tables) { + String projectId, + String instanceId, + String databaseId, + String parentRole, + String childRole, + String... tables) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { System.out.println("Waiting for role create operation to complete..."); - List roleStatements = new ArrayList<>(ImmutableList.of( - String.format("CREATE ROLE %s", parentRole), - String.format("CREATE ROLE %s", childRole), - String.format("GRANT ROLE %s TO ROLE %s", parentRole, childRole))); + List roleStatements = + new ArrayList<>( + ImmutableList.of( + String.format("CREATE ROLE %s", parentRole), + String.format("CREATE ROLE %s", childRole), + String.format("GRANT ROLE %s TO ROLE %s", parentRole, childRole))); for (String table : tables) { roleStatements.add(String.format("GRANT SELECT ON TABLE %s TO ROLE %s", table, parentRole)); } - databaseAdminClient.updateDatabaseDdlAsync( + databaseAdminClient + .updateDatabaseDdlAsync( DatabaseName.of(projectId, instanceId, databaseId), roleStatements) .get(5, TimeUnit.MINUTES); - System.out.printf( - "Created roles %s and %s and granted privileges%n", parentRole, childRole); + System.out.printf("Created roles %s and %s and granted privileges%n", parentRole, childRole); // Delete role and membership. System.out.println("Waiting for role revoke & drop operation to complete..."); - databaseAdminClient.updateDatabaseDdlAsync( - DatabaseName.of(projectId, instanceId, databaseId), - ImmutableList.of( - String.format("REVOKE ROLE %s FROM ROLE %s", parentRole, childRole), - String.format("DROP ROLE %s", childRole))).get(5, TimeUnit.MINUTES); + databaseAdminClient + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), + ImmutableList.of( + String.format("REVOKE ROLE %s FROM ROLE %s", parentRole, childRole), + String.format("DROP ROLE %s", childRole))) + .get(5, TimeUnit.MINUTES); System.out.printf("Revoked privileges and dropped role %s%n", childRole); } catch (ExecutionException | TimeoutException e) { System.out.printf( diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddJsonColumnSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddJsonColumnSample.java index c87b25ff476e..ee0567744002 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddJsonColumnSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddJsonColumnSample.java @@ -39,16 +39,15 @@ static void addJsonColumn() throws InterruptedException, ExecutionException { static void addJsonColumn(String projectId, String instanceId, String databaseId) throws InterruptedException, ExecutionException { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { // Wait for the operation to finish. // This will throw an ExecutionException if the operation fails. - databaseAdminClient.updateDatabaseDdlAsync( - DatabaseName.of(projectId, instanceId, databaseId), - ImmutableList.of("ALTER TABLE Venues ADD COLUMN VenueDetails JSON")).get(); + databaseAdminClient + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), + ImmutableList.of("ALTER TABLE Venues ADD COLUMN VenueDetails JSON")) + .get(); System.out.printf("Successfully added column `VenueDetails`%n"); } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddJsonbColumnSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddJsonbColumnSample.java index ab2607c49867..86720785b648 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddJsonbColumnSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddJsonbColumnSample.java @@ -39,17 +39,16 @@ static void addJsonbColumn() throws InterruptedException, ExecutionException { static void addJsonbColumn(String projectId, String instanceId, String databaseId) throws InterruptedException, ExecutionException { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { // JSONB datatype is only supported with PostgreSQL-dialect databases. // Wait for the operation to finish. // This will throw an ExecutionException if the operation fails. - databaseAdminClient.updateDatabaseDdlAsync( - DatabaseName.of(projectId, instanceId, databaseId), - ImmutableList.of("ALTER TABLE Venues ADD COLUMN VenueDetails JSONB")).get(); + databaseAdminClient + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), + ImmutableList.of("ALTER TABLE Venues ADD COLUMN VenueDetails JSONB")) + .get(); System.out.printf("Successfully added column `VenueDetails`%n"); } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddNumericColumnSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddNumericColumnSample.java index 00cfb848e706..5364006ae084 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddNumericColumnSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AddNumericColumnSample.java @@ -39,16 +39,15 @@ static void addNumericColumn() throws InterruptedException, ExecutionException { static void addNumericColumn(String projectId, String instanceId, String databaseId) throws InterruptedException, ExecutionException { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { // Wait for the operation to finish. // This will throw an ExecutionException if the operation fails. - databaseAdminClient.updateDatabaseDdlAsync( - DatabaseName.of(projectId, instanceId, databaseId), - ImmutableList.of("ALTER TABLE Venues ADD COLUMN Revenue NUMERIC")).get(); + databaseAdminClient + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), + ImmutableList.of("ALTER TABLE Venues ADD COLUMN Revenue NUMERIC")) + .get(); System.out.printf("Successfully added column `Revenue`%n"); } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AlterSequenceSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AlterSequenceSample.java index 641449ace9f6..2b756ff7de61 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AlterSequenceSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AlterSequenceSample.java @@ -45,11 +45,12 @@ static void alterSequence() { static void alterSequence(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient - .updateDatabaseDdlAsync(DatabaseName.of(projectId, instanceId, databaseId), + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), ImmutableList.of( "ALTER SEQUENCE Seq SET OPTIONS " + "(skip_range_min = 1000, skip_range_max = 5000000)")) diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSample.java index 6950e6a4fac6..bc25479749c4 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSample.java @@ -38,10 +38,10 @@ static void alterForeignKeyDeleteCascadeConstraint() { static void alterForeignKeyDeleteCascadeConstraint( String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { - databaseAdminClient.updateDatabaseDdlAsync(DatabaseName.of(projectId, instanceId, - databaseId), + databaseAdminClient.updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), ImmutableList.of( "ALTER TABLE ShoppingCarts\n" + " ADD CONSTRAINT FKShoppingCartsCustomerName\n" diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncDmlExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncDmlExample.java index 83e28589ed3a..15174d371e9b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncDmlExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncDmlExample.java @@ -19,13 +19,11 @@ // [START spanner_async_dml_standard_insert] import com.google.api.core.ApiFuture; import com.google.cloud.spanner.AsyncRunner; -import com.google.cloud.spanner.AsyncRunner.AsyncWork; import com.google.cloud.spanner.DatabaseClient; import com.google.cloud.spanner.DatabaseId; import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; import com.google.cloud.spanner.Statement; -import com.google.cloud.spanner.TransactionContext; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -68,4 +66,4 @@ static void asyncDml(DatabaseClient client) executor.shutdown(); } } -//[END spanner_async_dml_standard_insert] +// [END spanner_async_dml_standard_insert] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncQueryExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncQueryExample.java index 257ea6e4ad73..ed8103b9f4b2 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncQueryExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncQueryExample.java @@ -104,4 +104,4 @@ public CallbackResponse cursorReady(AsyncResultSet resultSet) { executor.shutdown(); } } -//[END spanner_async_query_data] +// [END spanner_async_query_data] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.java index 11da6a13fddb..32e5142d281d 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.java @@ -31,9 +31,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -/** - * Example code for using Async query on Cloud Spanner and convert it to list. - */ +/** Example code for using Async query on Cloud Spanner and convert it to list. */ class AsyncQueryToListAsyncExample { static class Album { final long singerId; @@ -88,4 +86,4 @@ static void asyncQueryToList(DatabaseClient client) executor.shutdown(); } } -//[END spanner_async_query_to_list] +// [END spanner_async_query_to_list] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadExample.java index 26fefb0df996..272fb9194d5b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadExample.java @@ -108,4 +108,4 @@ public CallbackResponse cursorReady(AsyncResultSet resultSet) { executor.shutdown(); } } -//[END spanner_async_read_data] +// [END spanner_async_read_data] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadOnlyTransactionExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadOnlyTransactionExample.java index dc2560ab7842..29574fa482e9 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadOnlyTransactionExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadOnlyTransactionExample.java @@ -132,4 +132,4 @@ public CallbackResponse cursorReady(AsyncResultSet resultSet) { executor.shutdown(); } } -//[END spanner_async_read_only_transaction] +// [END spanner_async_read_only_transaction] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadRowExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadRowExample.java index f05f5c12cff0..779291500215 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadRowExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadRowExample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_async_read_row] +// [START spanner_async_read_row] import com.google.api.core.ApiFuture; import com.google.api.core.ApiFutureCallback; import com.google.api.core.ApiFutures; @@ -81,4 +81,4 @@ public void onSuccess(Struct result) { printed.get(30L, TimeUnit.SECONDS); } } -//[END spanner_async_read_row] +// [END spanner_async_read_row] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadUsingIndexExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadUsingIndexExample.java index ffb3b9cb21c5..60266f8cef3d 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadUsingIndexExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncReadUsingIndexExample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_async_read_data_with_index] +// [START spanner_async_read_data_with_index] import com.google.api.core.ApiFuture; import com.google.cloud.spanner.AsyncResultSet; import com.google.cloud.spanner.AsyncResultSet.CallbackResponse; @@ -109,4 +109,4 @@ public CallbackResponse cursorReady(AsyncResultSet resultSet) { executor.shutdown(); } } -//[END spanner_async_read_data_with_index] +// [END spanner_async_read_data_with_index] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncRunnerExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncRunnerExample.java index afdf8f657275..f3ae2dcd5a9e 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncRunnerExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncRunnerExample.java @@ -16,12 +16,11 @@ package com.example.spanner; -//[START spanner_async_read_write_transaction] +// [START spanner_async_read_write_transaction] import com.google.api.core.ApiFunction; import com.google.api.core.ApiFuture; import com.google.api.core.ApiFutures; import com.google.cloud.spanner.AsyncRunner; -import com.google.cloud.spanner.AsyncRunner.AsyncWork; import com.google.cloud.spanner.DatabaseClient; import com.google.cloud.spanner.DatabaseId; import com.google.cloud.spanner.Key; @@ -30,7 +29,6 @@ import com.google.cloud.spanner.SpannerOptions; import com.google.cloud.spanner.Statement; import com.google.cloud.spanner.Struct; -import com.google.cloud.spanner.TransactionContext; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.MoreExecutors; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -103,8 +101,7 @@ static void asyncRunner(DatabaseClient client) .bind("AlbumBudget") .to(album2Budget) .build(); - return txn.batchUpdateAsync( - ImmutableList.of(updateStatement1, updateStatement2)); + return txn.batchUpdateAsync(ImmutableList.of(updateStatement1, updateStatement2)); } else { return ApiFutures.immediateFuture(new long[] {0L, 0L}); } @@ -131,4 +128,4 @@ public Long apply(long[] input) { executor.shutdown(); } } -//[END spanner_async_read_write_transaction] +// [END spanner_async_read_write_transaction] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncTransactionManagerExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncTransactionManagerExample.java index 5d4087a2fab8..cd8498388f9b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncTransactionManagerExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/AsyncTransactionManagerExample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_async_transaction_manager] +// [START spanner_async_transaction_manager] import com.google.api.core.ApiFunction; import com.google.api.core.ApiFuture; import com.google.api.core.ApiFutures; @@ -72,51 +72,52 @@ static void asyncTransactionManager(DatabaseClient client) try { updateCounts = txn.then( - (transaction, v) -> { - // Execute two reads in parallel and return the result of these as the input - // for the next step of the transaction. - ApiFuture album1BudgetFut = - transaction.readRowAsync( - "Albums", Key.of(1, 1), ImmutableList.of("MarketingBudget")); - ApiFuture album2BudgetFut = - transaction.readRowAsync( - "Albums", Key.of(2, 2), ImmutableList.of("MarketingBudget")); - return ApiFutures.allAsList(Arrays.asList(album1BudgetFut, album2BudgetFut)); - }, - executor) + (transaction, v) -> { + // Execute two reads in parallel and return the result of these as the input + // for the next step of the transaction. + ApiFuture album1BudgetFut = + transaction.readRowAsync( + "Albums", Key.of(1, 1), ImmutableList.of("MarketingBudget")); + ApiFuture album2BudgetFut = + transaction.readRowAsync( + "Albums", Key.of(2, 2), ImmutableList.of("MarketingBudget")); + return ApiFutures.allAsList( + Arrays.asList(album1BudgetFut, album2BudgetFut)); + }, + executor) // The input of the next step of the transaction is the return value of the // previous step, i.e. a list containing the marketing budget of two Albums. .then( - (transaction, budgets) -> { - long album1Budget = budgets.get(0).getLong(0); - long album2Budget = budgets.get(1).getLong(0); - long transfer = 200_000; - if (album2Budget >= transfer) { - album1Budget += transfer; - album2Budget -= transfer; - Statement updateStatement1 = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = @AlbumBudget " - + "WHERE SingerId = 1 and AlbumId = 1") - .bind("AlbumBudget") - .to(album1Budget) - .build(); - Statement updateStatement2 = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = @AlbumBudget " - + "WHERE SingerId = 2 and AlbumId = 2") - .bind("AlbumBudget") - .to(album2Budget) - .build(); - return transaction.batchUpdateAsync( - ImmutableList.of(updateStatement1, updateStatement2)); - } else { - return ApiFutures.immediateFuture(new long[] {0L, 0L}); - } - }, - executor); + (transaction, budgets) -> { + long album1Budget = budgets.get(0).getLong(0); + long album2Budget = budgets.get(1).getLong(0); + long transfer = 200_000; + if (album2Budget >= transfer) { + album1Budget += transfer; + album2Budget -= transfer; + Statement updateStatement1 = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = @AlbumBudget " + + "WHERE SingerId = 1 and AlbumId = 1") + .bind("AlbumBudget") + .to(album1Budget) + .build(); + Statement updateStatement2 = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = @AlbumBudget " + + "WHERE SingerId = 2 and AlbumId = 2") + .bind("AlbumBudget") + .to(album2Budget) + .build(); + return transaction.batchUpdateAsync( + ImmutableList.of(updateStatement1, updateStatement2)); + } else { + return ApiFutures.immediateFuture(new long[] {0L, 0L}); + } + }, + executor); // Commit after the updates. CommitTimestampFuture commitTsFut = updateCounts.commitAsync(); // Wait for the transaction to finish and execute a retry if necessary. @@ -144,4 +145,4 @@ public Long apply(long[] input) { executor.shutdown(); } } -//[END spanner_async_transaction_manager] +// [END spanner_async_transaction_manager] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/BatchWriteAtLeastOnceSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/BatchWriteAtLeastOnceSample.java index bd59562eb285..9920499dcc1b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/BatchWriteAtLeastOnceSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/BatchWriteAtLeastOnceSample.java @@ -60,6 +60,7 @@ public class BatchWriteAtLeastOnceSample { .set("LastName") .to("Terry") .build()); + private static final MutationGroup MUTATION_GROUP2 = MutationGroup.of( Mutation.newInsertOrUpdateBuilder("Singers") @@ -111,8 +112,7 @@ static void batchWriteAtLeastOnce(String projectId, String instanceId, String da // non-atomically and respond back with a stream of BatchWriteResponse. ServerStream responses = dbClient.batchWriteAtLeastOnce( - ImmutableList.of(MUTATION_GROUP1, MUTATION_GROUP2), - Options.tag("batch-write-tag")); + ImmutableList.of(MUTATION_GROUP1, MUTATION_GROUP2), Options.tag("batch-write-tag")); // Iterates through the results in the stream response and prints the MutationGroup indexes, // commit timestamp and status. @@ -124,8 +124,10 @@ static void batchWriteAtLeastOnce(String projectId, String instanceId, String da } else { System.out.printf( "Mutation group indexes %s could not be applied with error code %s and " - + "error message %s", response.getIndexesList(), - Code.forNumber(response.getStatus().getCode()), response.getStatus().getMessage()); + + "error message %s", + response.getIndexesList(), + Code.forNumber(response.getStatus().getCode()), + response.getStatus().getMessage()); } } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CopyBackupSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CopyBackupSample.java index c6ee70668755..ad9e276a5697 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CopyBackupSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CopyBackupSample.java @@ -43,7 +43,7 @@ static void copyBackup() { String destinationBackupId = "my-destination-backup"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { copyBackup(databaseAdminClient, projectId, instanceId, sourceBackupId, destinationBackupId); } @@ -59,8 +59,7 @@ static void copyBackup( Timestamp expireTime = Timestamp.ofTimeMicroseconds( TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), - TimeUnit.MILLISECONDS)); + System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); // Initiate the request which returns an OperationFuture. System.out.println("Copying backup [" + destinationBackupId + "]..."); @@ -68,9 +67,14 @@ static void copyBackup( try { // Creates a copy of an existing backup. // Wait for the backup operation to complete. - destinationBackup = databaseAdminClient.copyBackupAsync( - InstanceName.of(projectId, instanceId), destinationBackupId, - BackupName.of(projectId, instanceId, sourceBackupId), expireTime.toProto()).get(); + destinationBackup = + databaseAdminClient + .copyBackupAsync( + InstanceName.of(projectId, instanceId), + destinationBackupId, + BackupName.of(projectId, instanceId, sourceBackupId), + expireTime.toProto()) + .get(); System.out.println("Copied backup [" + destinationBackup.getName() + "]"); } catch (ExecutionException e) { throw (SpannerException) e.getCause(); @@ -85,11 +89,13 @@ static void copyBackup( destinationBackup.getName(), destinationBackup.getSizeBytes(), OffsetDateTime.ofInstant( - Instant.ofEpochSecond(destinationBackup.getCreateTime().getSeconds(), + Instant.ofEpochSecond( + destinationBackup.getCreateTime().getSeconds(), destinationBackup.getCreateTime().getNanos()), ZoneId.systemDefault()), OffsetDateTime.ofInstant( - Instant.ofEpochSecond(destinationBackup.getVersionTime().getSeconds(), + Instant.ofEpochSecond( + destinationBackup.getVersionTime().getSeconds(), destinationBackup.getVersionTime().getNanos()), ZoneId.systemDefault()))); } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateBackupWithEncryptionKey.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateBackupWithEncryptionKey.java index e2c7b1706173..5cbe4190ccdf 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateBackupWithEncryptionKey.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateBackupWithEncryptionKey.java @@ -48,29 +48,34 @@ static void createBackupWithEncryptionKey() { "projects/" + projectId + "/locations//keyRings//cryptoKeys/"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient adminClient = spanner.createDatabaseAdminClient()) { createBackupWithEncryptionKey( - adminClient, - projectId, - instanceId, - databaseId, - backupId, - kmsKeyName); + adminClient, projectId, instanceId, databaseId, backupId, kmsKeyName); } } - static Void createBackupWithEncryptionKey(DatabaseAdminClient adminClient, - String projectId, String instanceId, String databaseId, String backupId, String kmsKeyName) { + static Void createBackupWithEncryptionKey( + DatabaseAdminClient adminClient, + String projectId, + String instanceId, + String databaseId, + String backupId, + String kmsKeyName) { // Set expire time to 14 days from now. final Timestamp expireTime = - Timestamp.newBuilder().setSeconds(TimeUnit.MILLISECONDS.toSeconds(( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14)))).build(); + Timestamp.newBuilder() + .setSeconds( + TimeUnit.MILLISECONDS.toSeconds( + (System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14)))) + .build(); final BackupName backupName = BackupName.of(projectId, instanceId, backupId); - Backup backup = Backup.newBuilder() - .setName(backupName.toString()) - .setDatabase(DatabaseName.of(projectId, instanceId, databaseId).toString()) - .setExpireTime(expireTime).build(); + Backup backup = + Backup.newBuilder() + .setName(backupName.toString()) + .setDatabase(DatabaseName.of(projectId, instanceId, databaseId).toString()) + .setExpireTime(expireTime) + .build(); final CreateBackupRequest request = CreateBackupRequest.newBuilder() @@ -80,7 +85,9 @@ static Void createBackupWithEncryptionKey(DatabaseAdminClient adminClient, .setEncryptionConfig( CreateBackupEncryptionConfig.newBuilder() .setEncryptionType(EncryptionType.CUSTOMER_MANAGED_ENCRYPTION) - .setKmsKeyName(kmsKeyName).build()).build(); + .setKmsKeyName(kmsKeyName) + .build()) + .build(); try { System.out.println("Waiting for operation to complete..."); backup = adminClient.createBackupAsync(request).get(1200, TimeUnit.SECONDS); @@ -103,8 +110,7 @@ static Void createBackupWithEncryptionKey(DatabaseAdminClient adminClient, backup.getCreateTime().getSeconds(), backup.getCreateTime().getNanos(), OffsetDateTime.now().getOffset()), - kmsKeyName - ); + kmsKeyName); return null; } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithDefaultLeaderSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithDefaultLeaderSample.java index 33917685cd98..b6393b4ac2af 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithDefaultLeaderSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithDefaultLeaderSample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_create_database_with_default_leader] +// [START spanner_create_database_with_default_leader] import com.google.cloud.spanner.SpannerException; import com.google.cloud.spanner.SpannerExceptionFactory; @@ -37,30 +37,38 @@ static void createDatabaseWithDefaultLeader() throws IOException { createDatabaseWithDefaultLeader(instanceName, databaseId, defaultLeader); } - static void createDatabaseWithDefaultLeader(String instanceName, String databaseId, - String defaultLeader) throws IOException { + static void createDatabaseWithDefaultLeader( + String instanceName, String databaseId, String defaultLeader) throws IOException { try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) { Database createdDatabase = - databaseAdminClient.createDatabaseAsync( - CreateDatabaseRequest.newBuilder() - .setParent(instanceName) - .setCreateStatement("CREATE DATABASE `" + databaseId + "`") - .addAllExtraStatements( - ImmutableList.of("CREATE TABLE Singers (" - + " SingerId INT64 NOT NULL," - + " FirstName STRING(1024)," - + " LastName STRING(1024)," - + " SingerInfo BYTES(MAX)" - + ") PRIMARY KEY (SingerId)", - "CREATE TABLE Albums (" - + " SingerId INT64 NOT NULL," - + " AlbumId INT64 NOT NULL," - + " AlbumTitle STRING(MAX)" - + ") PRIMARY KEY (SingerId, AlbumId)," - + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE", - "ALTER DATABASE " + "`" + databaseId + "`" - + " SET OPTIONS ( default_leader = '" + defaultLeader + "' )")) - .build()).get(); + databaseAdminClient + .createDatabaseAsync( + CreateDatabaseRequest.newBuilder() + .setParent(instanceName) + .setCreateStatement("CREATE DATABASE `" + databaseId + "`") + .addAllExtraStatements( + ImmutableList.of( + "CREATE TABLE Singers (" + + " SingerId INT64 NOT NULL," + + " FirstName STRING(1024)," + + " LastName STRING(1024)," + + " SingerInfo BYTES(MAX)" + + ") PRIMARY KEY (SingerId)", + "CREATE TABLE Albums (" + + " SingerId INT64 NOT NULL," + + " AlbumId INT64 NOT NULL," + + " AlbumTitle STRING(MAX)" + + ") PRIMARY KEY (SingerId, AlbumId)," + + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE", + "ALTER DATABASE " + + "`" + + databaseId + + "`" + + " SET OPTIONS ( default_leader = '" + + defaultLeader + + "' )")) + .build()) + .get(); System.out.println("Created database [" + createdDatabase.getName() + "]"); System.out.println("\tDefault leader: " + createdDatabase.getDefaultLeader()); } catch (ExecutionException e) { @@ -73,4 +81,4 @@ static void createDatabaseWithDefaultLeader(String instanceName, String database } } } -//[END spanner_create_database_with_default_leader] \ No newline at end of file +// [END spanner_create_database_with_default_leader] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithEncryptionKey.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithEncryptionKey.java index c06e9c3eba3a..84a913a1aa59 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithEncryptionKey.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithEncryptionKey.java @@ -42,40 +42,39 @@ static void createDatabaseWithEncryptionKey() { "projects/" + projectId + "/locations//keyRings//cryptoKeys/"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient adminClient = spanner.createDatabaseAdminClient()) { - createDatabaseWithEncryptionKey( - adminClient, - projectId, - instanceId, - databaseId, - kmsKeyName); + createDatabaseWithEncryptionKey(adminClient, projectId, instanceId, databaseId, kmsKeyName); } } - static void createDatabaseWithEncryptionKey(DatabaseAdminClient adminClient, - String projectId, String instanceId, String databaseId, String kmsKeyName) { + static void createDatabaseWithEncryptionKey( + DatabaseAdminClient adminClient, + String projectId, + String instanceId, + String databaseId, + String kmsKeyName) { InstanceName instanceName = InstanceName.of(projectId, instanceId); - CreateDatabaseRequest request = CreateDatabaseRequest.newBuilder() - .setParent(instanceName.toString()) - .setCreateStatement("CREATE DATABASE `" + databaseId + "`") - .setEncryptionConfig(EncryptionConfig.newBuilder().setKmsKeyName(kmsKeyName).build()) - .addAllExtraStatements( - ImmutableList.of( - "CREATE TABLE Singers (" - + " SingerId INT64 NOT NULL," - + " FirstName STRING(1024)," - + " LastName STRING(1024)," - + " SingerInfo BYTES(MAX)" - + ") PRIMARY KEY (SingerId)", - "CREATE TABLE Albums (" - + " SingerId INT64 NOT NULL," - + " AlbumId INT64 NOT NULL," - + " AlbumTitle STRING(MAX)" - + ") PRIMARY KEY (SingerId, AlbumId)," - + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE" - )) - .build(); + CreateDatabaseRequest request = + CreateDatabaseRequest.newBuilder() + .setParent(instanceName.toString()) + .setCreateStatement("CREATE DATABASE `" + databaseId + "`") + .setEncryptionConfig(EncryptionConfig.newBuilder().setKmsKeyName(kmsKeyName).build()) + .addAllExtraStatements( + ImmutableList.of( + "CREATE TABLE Singers (" + + " SingerId INT64 NOT NULL," + + " FirstName STRING(1024)," + + " LastName STRING(1024)," + + " SingerInfo BYTES(MAX)" + + ") PRIMARY KEY (SingerId)", + "CREATE TABLE Albums (" + + " SingerId INT64 NOT NULL," + + " AlbumId INT64 NOT NULL," + + " AlbumTitle STRING(MAX)" + + ") PRIMARY KEY (SingerId, AlbumId)," + + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")) + .build(); try { System.out.println("Waiting for operation to complete..."); Database createdDatabase = @@ -83,9 +82,7 @@ static void createDatabaseWithEncryptionKey(DatabaseAdminClient adminClient, System.out.printf( "Database %s created with encryption key %s%n", - createdDatabase.getName(), - createdDatabase.getEncryptionConfig().getKmsKeyName() - ); + createdDatabase.getName(), createdDatabase.getEncryptionConfig().getKmsKeyName()); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. throw SpannerExceptionFactory.asSpannerException(e.getCause()); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSample.java index 888fe6258893..3dfc4b41edcd 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSample.java @@ -38,24 +38,30 @@ static void createDatabaseWithVersionRetentionPeriod() { String databaseId = "my-database"; String versionRetentionPeriod = "7d"; - createDatabaseWithVersionRetentionPeriod(projectId, instanceId, databaseId, - versionRetentionPeriod); + createDatabaseWithVersionRetentionPeriod( + projectId, instanceId, databaseId, versionRetentionPeriod); } - static void createDatabaseWithVersionRetentionPeriod(String projectId, - String instanceId, String databaseId, String versionRetentionPeriod) { + static void createDatabaseWithVersionRetentionPeriod( + String projectId, String instanceId, String databaseId, String versionRetentionPeriod) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { CreateDatabaseRequest request = CreateDatabaseRequest.newBuilder() .setParent(InstanceName.of(projectId, instanceId).toString()) .setCreateStatement("CREATE DATABASE `" + databaseId + "`") - .addAllExtraStatements(Lists.newArrayList("ALTER DATABASE " + "`" + databaseId + "`" - + " SET OPTIONS ( version_retention_period = '" + versionRetentionPeriod + "' )")) + .addAllExtraStatements( + Lists.newArrayList( + "ALTER DATABASE " + + "`" + + databaseId + + "`" + + " SET OPTIONS ( version_retention_period = '" + + versionRetentionPeriod + + "' )")) .build(); - Database database = - databaseAdminClient.createDatabaseAsync(request).get(); + Database database = databaseAdminClient.createDatabaseAsync(request).get(); System.out.println("Created database [" + database.getName() + "]"); System.out.println("\tVersion retention period: " + database.getVersionRetentionPeriod()); System.out.println("\tEarliest version time: " + database.getEarliestVersionTime()); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceConfigSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceConfigSample.java index 426d7c0484f7..7e0e97bfc2a7 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceConfigSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceConfigSample.java @@ -47,38 +47,44 @@ static void createInstanceConfig() { static void createInstanceConfig( String projectId, String baseInstanceConfigId, String instanceConfigId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { - final InstanceConfigName baseInstanceConfigName = InstanceConfigName.of(projectId, - baseInstanceConfigId); + final InstanceConfigName baseInstanceConfigName = + InstanceConfigName.of(projectId, baseInstanceConfigId); final InstanceConfig baseConfig = instanceAdminClient.getInstanceConfig(baseInstanceConfigName.toString()); - final InstanceConfigName instanceConfigName = InstanceConfigName.of(projectId, - instanceConfigId); + final InstanceConfigName instanceConfigName = + InstanceConfigName.of(projectId, instanceConfigId); /** * The replicas for the custom instance configuration must include all the replicas of the * base configuration, in addition to at least one from the list of optional replicas of the * base configuration. */ final List replicas = - Stream.concat(baseConfig.getReplicasList().stream(), - baseConfig.getOptionalReplicasList().stream().limit(1)).collect(Collectors.toList()); + Stream.concat( + baseConfig.getReplicasList().stream(), + baseConfig.getOptionalReplicasList().stream().limit(1)) + .collect(Collectors.toList()); final InstanceConfig instanceConfig = - InstanceConfig.newBuilder().setName(instanceConfigName.toString()) + InstanceConfig.newBuilder() + .setName(instanceConfigName.toString()) .setBaseConfig(baseInstanceConfigName.toString()) - .setDisplayName("Instance Configuration").addAllReplicas(replicas).build(); + .setDisplayName("Instance Configuration") + .addAllReplicas(replicas) + .build(); final CreateInstanceConfigRequest createInstanceConfigRequest = - CreateInstanceConfigRequest.newBuilder().setParent(ProjectName.of(projectId).toString()) - .setInstanceConfigId(instanceConfigId).setInstanceConfig(instanceConfig).build(); + CreateInstanceConfigRequest.newBuilder() + .setParent(ProjectName.of(projectId).toString()) + .setInstanceConfigId(instanceConfigId) + .setInstanceConfig(instanceConfig) + .build(); try { - System.out.printf("Waiting for create operation for %s to complete...\n", - instanceConfigName); + System.out.printf( + "Waiting for create operation for %s to complete...\n", instanceConfigName); InstanceConfig instanceConfigResult = - instanceAdminClient.createInstanceConfigAsync( - createInstanceConfigRequest).get(5, TimeUnit.MINUTES); + instanceAdminClient + .createInstanceConfigAsync(createInstanceConfigRequest) + .get(5, TimeUnit.MINUTES); System.out.printf("Created instance configuration %s\n", instanceConfigResult.getName()); } catch (ExecutionException | TimeoutException e) { System.out.printf( diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAsymmetricAutoscalingConfigExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAsymmetricAutoscalingConfigExample.java index b4c4f8736e28..8d1eb865e29f 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAsymmetricAutoscalingConfigExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAsymmetricAutoscalingConfigExample.java @@ -40,10 +40,7 @@ static void createInstance() { static void createInstance(String projectId, String instanceId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { // Set Instance configuration. String configId = "nam-eur-asia3"; @@ -64,33 +61,38 @@ static void createInstance(String projectId, String instanceId) { .setStorageUtilizationPercent(95)) .addAsymmetricAutoscalingOptions( AutoscalingConfig.AsymmetricAutoscalingOption.newBuilder() - .setReplicaSelection(ReplicaSelection.newBuilder().setLocation("europe-west1"))) + .setReplicaSelection( + ReplicaSelection.newBuilder().setLocation("europe-west1"))) .addAsymmetricAutoscalingOptions( AutoscalingConfig.AsymmetricAutoscalingOption.newBuilder() - .setReplicaSelection(ReplicaSelection.newBuilder().setLocation("europe-west4"))) + .setReplicaSelection( + ReplicaSelection.newBuilder().setLocation("europe-west4"))) .addAsymmetricAutoscalingOptions( AutoscalingConfig.AsymmetricAutoscalingOption.newBuilder() - .setReplicaSelection(ReplicaSelection.newBuilder().setLocation("asia-east1"))) + .setReplicaSelection(ReplicaSelection.newBuilder().setLocation("asia-east1"))) .build(); Instance instance = Instance.newBuilder() .setAutoscalingConfig(autoscalingConfig) .setDisplayName(displayName) - .setConfig( - InstanceConfigName.of(projectId, configId).toString()) + .setConfig(InstanceConfigName.of(projectId, configId).toString()) .build(); // Creates a new instance System.out.printf("Creating instance %s.%n", instanceId); try { // Wait for the createInstance operation to finish. - Instance instanceResult = instanceAdminClient.createInstanceAsync( - CreateInstanceRequest.newBuilder() - .setParent(ProjectName.of(projectId).toString()) - .setInstanceId(instanceId) - .setInstance(instance) - .build()).get(); - System.out.printf("Asymmetric Autoscaling instance %s was successfully created%n", + Instance instanceResult = + instanceAdminClient + .createInstanceAsync( + CreateInstanceRequest.newBuilder() + .setParent(ProjectName.of(projectId).toString()) + .setInstanceId(instanceId) + .setInstance(instance) + .build()) + .get(); + System.out.printf( + "Asymmetric Autoscaling instance %s was successfully created%n", instanceResult.getName()); } catch (ExecutionException e) { System.out.printf( diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAutoscalingConfigExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAutoscalingConfigExample.java index 4d0793820afd..bc9913bf4b3c 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAutoscalingConfigExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAutoscalingConfigExample.java @@ -40,10 +40,7 @@ static void createInstance() { static void createInstance(String projectId, String instanceId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { // Set Instance configuration. String configId = "regional-us-east4"; @@ -65,8 +62,7 @@ static void createInstance(String projectId, String instanceId) { Instance.newBuilder() .setAutoscalingConfig(autoscalingConfig) .setDisplayName(displayName) - .setConfig( - InstanceConfigName.of(projectId, configId).toString()) + .setConfig(InstanceConfigName.of(projectId, configId).toString()) .setEdition(Edition.ENTERPRISE) .build(); @@ -74,14 +70,17 @@ static void createInstance(String projectId, String instanceId) { System.out.printf("Creating instance %s.%n", instanceId); try { // Wait for the createInstance operation to finish. - Instance instanceResult = instanceAdminClient.createInstanceAsync( - CreateInstanceRequest.newBuilder() - .setParent(ProjectName.of(projectId).toString()) - .setInstanceId(instanceId) - .setInstance(instance) - .build()).get(); - System.out.printf("Autoscaler instance %s was successfully created%n", - instanceResult.getName()); + Instance instanceResult = + instanceAdminClient + .createInstanceAsync( + CreateInstanceRequest.newBuilder() + .setParent(ProjectName.of(projectId).toString()) + .setInstanceId(instanceId) + .setInstance(instance) + .build()) + .get(); + System.out.printf( + "Autoscaler instance %s was successfully created%n", instanceResult.getName()); } catch (ExecutionException e) { System.out.printf( "Error: Creating instance %s failed with error message %s%n", diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithProcessingUnitsExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithProcessingUnitsExample.java index 51133194744a..6807f0fbd5c6 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithProcessingUnitsExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithProcessingUnitsExample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_create_instance_with_processing_units] +// [START spanner_create_instance_with_processing_units] import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; @@ -37,10 +37,7 @@ static void createInstance() { static void createInstance(String projectId, String instanceId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { // Set Instance configuration. @@ -56,25 +53,28 @@ static void createInstance(String projectId, String instanceId) { Instance.newBuilder() .setDisplayName(displayName) .setProcessingUnits(processingUnits) - .setConfig( - InstanceConfigName.of(projectId, configId).toString()) + .setConfig(InstanceConfigName.of(projectId, configId).toString()) .build(); // Wait for the createInstance operation to finish. System.out.printf("Waiting for operation on %s to complete...%n", instanceId); - Instance createdInstance = instanceAdminClient.createInstanceAsync( - CreateInstanceRequest.newBuilder() - .setParent(ProjectName.of(projectId).toString()) - .setInstanceId(instanceId) - .setInstance(instance) - .build()).get(); + Instance createdInstance = + instanceAdminClient + .createInstanceAsync( + CreateInstanceRequest.newBuilder() + .setParent(ProjectName.of(projectId).toString()) + .setInstanceId(instanceId) + .setInstance(instance) + .build()) + .get(); System.out.printf("Created instance %s.%n", createdInstance.getName()); - System.out.printf("Instance %s has %d processing units.%n", createdInstance.getName(), - createdInstance.getProcessingUnits()); + System.out.printf( + "Instance %s has %d processing units.%n", + createdInstance.getName(), createdInstance.getProcessingUnits()); } catch (Exception e) { System.out.printf("Error: %s.%n", e.getMessage()); } } } } -//[END spanner_create_instance_with_processing_units] +// [END spanner_create_instance_with_processing_units] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateSequenceSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateSequenceSample.java index 757921080d29..7c5ec62f2948 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateSequenceSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateSequenceSample.java @@ -46,7 +46,7 @@ static void createSequence() { static void createSequence(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient .updateDatabaseDdlAsync( diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSample.java index c9484916a4ed..82ca2d5ba420 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSample.java @@ -38,7 +38,7 @@ static void createForeignKeyDeleteCascadeConstraint() { static void createForeignKeyDeleteCascadeConstraint( String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient.updateDatabaseDdlAsync( DatabaseName.of(projectId, instanceId, databaseId), diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CustomTimeoutAndRetrySettingsExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CustomTimeoutAndRetrySettingsExample.java index 27051e299c98..cf96768c61e6 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/CustomTimeoutAndRetrySettingsExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/CustomTimeoutAndRetrySettingsExample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_set_custom_timeout_and_retry] +// [START spanner_set_custom_timeout_and_retry] import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.StatusCode.Code; @@ -78,14 +78,15 @@ static void executeSqlWithCustomTimeoutAndRetrySettings( spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); client .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName)\n" - + "VALUES (20, 'George', 'Washington')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.%n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName)\n" + + "VALUES (20, 'George', 'Washington')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.%n", rowCount); + return null; + }); } } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/DeleteInstanceConfigSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/DeleteInstanceConfigSample.java index c2da7b300008..bf3be5bd6a51 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/DeleteInstanceConfigSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/DeleteInstanceConfigSample.java @@ -36,13 +36,10 @@ static void deleteInstanceConfig() { static void deleteInstanceConfig(String projectId, String instanceConfigId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { - final InstanceConfigName instanceConfigName = InstanceConfigName.of(projectId, - instanceConfigId); + final InstanceConfigName instanceConfigName = + InstanceConfigName.of(projectId, instanceConfigId); final DeleteInstanceConfigRequest request = DeleteInstanceConfigRequest.newBuilder().setName(instanceConfigName.toString()).build(); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/DeleteUsingDmlReturningSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/DeleteUsingDmlReturningSample.java index c7319677980b..b0e889dffdc3 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/DeleteUsingDmlReturningSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/DeleteUsingDmlReturningSample.java @@ -38,10 +38,7 @@ static void deleteUsingDmlReturningSample() { static void deleteUsingDmlReturningSample( String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); // Delete records from SINGERS table satisfying a diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSample.java index 7c35b9f62186..5a5d14d66b29 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSample.java @@ -38,7 +38,7 @@ static void deleteForeignKeyDeleteCascadeConstraint() { static void deleteForeignKeyDeleteCascadeConstraint( String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient.updateDatabaseDdlAsync( DatabaseName.of(projectId, instanceId, databaseId), diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/DropSequenceSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/DropSequenceSample.java index 9f1b32caed91..72eab07d02e2 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/DropSequenceSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/DropSequenceSample.java @@ -40,10 +40,11 @@ static void dropSequence() { static void dropSequence(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient - .updateDatabaseDdlAsync(DatabaseName.of(projectId, instanceId, databaseId), + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), ImmutableList.of( "ALTER TABLE Customers ALTER COLUMN CustomerId DROP DEFAULT", "DROP SEQUENCE Seq")) diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/EnableFineGrainedAccess.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/EnableFineGrainedAccess.java index e4e35bd95aad..4bc33d9c970b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/EnableFineGrainedAccess.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/EnableFineGrainedAccess.java @@ -51,14 +51,15 @@ static void enableFineGrainedAccess( String title, String role) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { final GetPolicyOptions options = GetPolicyOptions.newBuilder().setRequestedPolicyVersion(3).build(); final GetIamPolicyRequest getRequest = GetIamPolicyRequest.newBuilder() .setResource(DatabaseName.of(projectId, instanceId, databaseId).toString()) - .setOptions(options).build(); + .setOptions(options) + .build(); final Policy policy = databaseAdminClient.getIamPolicy(getRequest); int policyVersion = policy.getVersion(); // The policy in the response from getDatabaseIAMPolicy might use the policy version @@ -80,9 +81,12 @@ static void enableFineGrainedAccess( Binding.newBuilder() .setRole("roles/spanner.databaseRoleUser") .setCondition( - Expr.newBuilder().setDescription(title).setExpression( - String.format("resource.name.endsWith(\"/databaseRoles/%s\")", role) - ).setTitle(title).build()) + Expr.newBuilder() + .setDescription(title) + .setExpression( + String.format("resource.name.endsWith(\"/databaseRoles/%s\")", role)) + .setTitle(title) + .build()) .addAllMembers(ImmutableList.of(iamMember)) .build(); ImmutableList bindings = @@ -100,7 +104,8 @@ static void enableFineGrainedAccess( final SetIamPolicyRequest setRequest = SetIamPolicyRequest.newBuilder() .setResource(DatabaseName.of(projectId, instanceId, databaseId).toString()) - .setPolicy(policyWithConditions).build(); + .setPolicy(policyWithConditions) + .build(); final Policy response = databaseAdminClient.setIamPolicy(setRequest); System.out.printf( "Enabled fine-grained access in IAM with version %d%n", response.getVersion()); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetCommitStatsSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetCommitStatsSample.java index 9adb8449020d..17636ec496d4 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetCommitStatsSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetCommitStatsSample.java @@ -37,31 +37,33 @@ static void getCommitStats() { try (Spanner spanner = SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { - final DatabaseClient databaseClient = spanner - .getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); + final DatabaseClient databaseClient = + spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); getCommitStats(databaseClient); } } static void getCommitStats(DatabaseClient databaseClient) { - final CommitResponse commitResponse = databaseClient.writeWithOptions(Arrays.asList( - Mutation.newInsertOrUpdateBuilder("Albums") - .set("SingerId") - .to("1") - .set("AlbumId") - .to("1") - .set("MarketingBudget") - .to("200000") - .build(), - Mutation.newInsertOrUpdateBuilder("Albums") - .set("SingerId") - .to("2") - .set("AlbumId") - .to("2") - .set("MarketingBudget") - .to("400000") - .build() - ), Options.commitStats()); + final CommitResponse commitResponse = + databaseClient.writeWithOptions( + Arrays.asList( + Mutation.newInsertOrUpdateBuilder("Albums") + .set("SingerId") + .to("1") + .set("AlbumId") + .to("1") + .set("MarketingBudget") + .to("200000") + .build(), + Mutation.newInsertOrUpdateBuilder("Albums") + .set("SingerId") + .to("2") + .set("AlbumId") + .to("2") + .set("MarketingBudget") + .to("400000") + .build()), + Options.commitStats()); System.out.println( "Updated data with " + commitResponse.getCommitStats().getMutationCount() + " mutations."); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetDatabaseDdlSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetDatabaseDdlSample.java index b84f1c0ccc69..316279b9e53a 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetDatabaseDdlSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetDatabaseDdlSample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_get_database_ddl] +// [START spanner_get_database_ddl] import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; @@ -34,10 +34,9 @@ static void getDatabaseDdl() { getDatabaseDdl(projectId, instanceId, databaseId); } - static void getDatabaseDdl( - String projectId, String instanceId, String databaseId) { + static void getDatabaseDdl(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { final GetDatabaseDdlResponse response = databaseAdminClient.getDatabaseDdl(DatabaseName.of(projectId, instanceId, databaseId)); @@ -48,4 +47,4 @@ static void getDatabaseDdl( } } } -//[END spanner_get_database_ddl] +// [END spanner_get_database_ddl] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetInstanceConfigSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetInstanceConfigSample.java index 9dd8690f7523..805c84b8927e 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetInstanceConfigSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/GetInstanceConfigSample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_get_instance_config] +// [START spanner_get_instance_config] import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; @@ -35,23 +35,18 @@ static void getInstanceConfig() { static void getInstanceConfig(String projectId, String instanceConfigId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { - final InstanceConfigName instanceConfigName = InstanceConfigName.of(projectId, - instanceConfigId); + final InstanceConfigName instanceConfigName = + InstanceConfigName.of(projectId, instanceConfigId); final InstanceConfig instanceConfig = instanceAdminClient.getInstanceConfig(instanceConfigName.toString()); System.out.printf( "Available leader options for instance config %s: %s%n", - instanceConfig.getName(), - instanceConfig.getLeaderOptionsList() - ); + instanceConfig.getName(), instanceConfig.getLeaderOptionsList()); } } } -//[END spanner_get_instance_config] +// [END spanner_get_instance_config] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/InsertUsingDmlReturningSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/InsertUsingDmlReturningSample.java index 7a3ddd5e1afd..fcbb26630773 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/InsertUsingDmlReturningSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/InsertUsingDmlReturningSample.java @@ -37,10 +37,7 @@ static void insertUsingDmlReturning() { static void insertUsingDmlReturning(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); // Insert records into the SINGERS table and returns the diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/IsolationLevelAndReadLockModeSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/IsolationLevelAndReadLockModeSample.java index ca2e1a9d7511..a67022b2074d 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/IsolationLevelAndReadLockModeSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/IsolationLevelAndReadLockModeSample.java @@ -38,37 +38,36 @@ static void isolationLevelSetting(DatabaseId db) { .setIsolationLevel(IsolationLevel.SERIALIZABLE) .build(); SpannerOptions options = - SpannerOptions.newBuilder() - .setDefaultTransactionOptions(transactionOptions) - .build(); + SpannerOptions.newBuilder().setDefaultTransactionOptions(transactionOptions).build(); Spanner spanner = options.getService(); DatabaseClient dbClient = spanner.getDatabaseClient(db); dbClient // The isolation level specified at the transaction-level takes precedence // over the isolation level configured at the client-level. .readWriteTransaction(Options.isolationLevel(IsolationLevel.REPEATABLE_READ)) - .run(transaction -> { - // Read an AlbumTitle. - String selectSql = - "SELECT AlbumTitle from Albums WHERE SingerId = 1 and AlbumId = 1"; - String title = null; - try (ResultSet resultSet = transaction.executeQuery(Statement.of(selectSql))) { - if (resultSet.next()) { - title = resultSet.getString("AlbumTitle"); - } - } - System.out.printf("Current album title: %s\n", title); + .run( + transaction -> { + // Read an AlbumTitle. + String selectSql = "SELECT AlbumTitle from Albums WHERE SingerId = 1 and AlbumId = 1"; + String title = null; + try (ResultSet resultSet = transaction.executeQuery(Statement.of(selectSql))) { + if (resultSet.next()) { + title = resultSet.getString("AlbumTitle"); + } + } + System.out.printf("Current album title: %s\n", title); - // Update the title. - String updateSql = - "UPDATE Albums " - + "SET AlbumTitle = 'New Album Title' " - + "WHERE SingerId = 1 and AlbumId = 1"; - long rowCount = transaction.executeUpdate(Statement.of(updateSql)); - System.out.printf("%d record updated.\n", rowCount); - return null; - }); + // Update the title. + String updateSql = + "UPDATE Albums " + + "SET AlbumTitle = 'New Album Title' " + + "WHERE SingerId = 1 and AlbumId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(updateSql)); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); } + // [END spanner_isolation_level] // [START spanner_read_lock_mode] @@ -80,36 +79,34 @@ static void readLockModeSetting(DatabaseId db) { .setReadLockMode(ReadLockMode.OPTIMISTIC) .build(); SpannerOptions options = - SpannerOptions.newBuilder() - .setDefaultTransactionOptions(transactionOptions) - .build(); + SpannerOptions.newBuilder().setDefaultTransactionOptions(transactionOptions).build(); Spanner spanner = options.getService(); DatabaseClient dbClient = spanner.getDatabaseClient(db); dbClient // The read lock mode specified at the transaction-level takes precedence // over the read lock mode configured at the client-level. .readWriteTransaction(Options.readLockMode(ReadLockMode.PESSIMISTIC)) - .run(transaction -> { - // Read an AlbumTitle. - String selectSql = - "SELECT AlbumTitle from Albums WHERE SingerId = 1 and AlbumId = 1"; - String title = null; - try (ResultSet resultSet = transaction.executeQuery(Statement.of(selectSql))) { - if (resultSet.next()) { - title = resultSet.getString("AlbumTitle"); - } - } - System.out.printf("Current album title: %s\n", title); + .run( + transaction -> { + // Read an AlbumTitle. + String selectSql = "SELECT AlbumTitle from Albums WHERE SingerId = 1 and AlbumId = 1"; + String title = null; + try (ResultSet resultSet = transaction.executeQuery(Statement.of(selectSql))) { + if (resultSet.next()) { + title = resultSet.getString("AlbumTitle"); + } + } + System.out.printf("Current album title: %s\n", title); - // Update the title. - String updateSql = - "UPDATE Albums " - + "SET AlbumTitle = 'New Album Title' " - + "WHERE SingerId = 1 and AlbumId = 1"; - long rowCount = transaction.executeUpdate(Statement.of(updateSql)); - System.out.printf("%d record updated.\n", rowCount); - return null; - }); + // Update the title. + String updateSql = + "UPDATE Albums " + + "SET AlbumTitle = 'New Album Title' " + + "WHERE SingerId = 1 and AlbumId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(updateSql)); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); } // [END spanner_read_lock_mode] -} \ No newline at end of file +} diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListDatabaseRoles.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListDatabaseRoles.java index e16a55cb7b7f..63c80e953520 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListDatabaseRoles.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListDatabaseRoles.java @@ -38,11 +38,10 @@ static void listDatabaseRoles() { static void listDatabaseRoles(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { DatabaseName databaseName = DatabaseName.of(projectId, instanceId, databaseId); - ListDatabaseRolesPagedResponse response - = databaseAdminClient.listDatabaseRoles(databaseName); + ListDatabaseRolesPagedResponse response = databaseAdminClient.listDatabaseRoles(databaseName); System.out.println("List of Database roles"); for (ListDatabaseRolesPage page : response.iteratePages()) { for (DatabaseRole role : page.iterateAll()) { diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListDatabasesSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListDatabasesSample.java index 631b72dc1196..961cb252d5cc 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListDatabasesSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListDatabasesSample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_list_databases] +// [START spanner_list_databases] import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; @@ -37,7 +37,7 @@ static void listDatabases() { static void listDatabases(String projectId, String instanceId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { ListDatabasesPagedResponse response = databaseAdminClient.listDatabases(InstanceName.of(projectId, instanceId)); @@ -46,12 +46,14 @@ static void listDatabases(String projectId, String instanceId) { for (ListDatabasesPage page : response.iteratePages()) { for (Database database : page.iterateAll()) { - final String defaultLeader = database.getDefaultLeader().equals("") - ? "" : "(default leader = " + database.getDefaultLeader() + ")"; + final String defaultLeader = + database.getDefaultLeader().equals("") + ? "" + : "(default leader = " + database.getDefaultLeader() + ")"; System.out.println("\t" + database.getName() + " " + defaultLeader); } } } } } -//[END spanner_list_databases] +// [END spanner_list_databases] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListInstanceConfigOperationsSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListInstanceConfigOperationsSample.java index b42c52126b5d..ef124bc2c8ee 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListInstanceConfigOperationsSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListInstanceConfigOperationsSample.java @@ -37,20 +37,18 @@ static void listInstanceConfigOperations() { static void listInstanceConfigOperations(String projectId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { final ProjectName projectName = ProjectName.of(projectId); System.out.printf( - "Getting list of instance config operations for project %s...\n", - projectId); + "Getting list of instance config operations for project %s...\n", projectId); final ListInstanceConfigOperationsRequest request = ListInstanceConfigOperationsRequest.newBuilder() .setParent(projectName.toString()) - .setFilter("(metadata.@type=type.googleapis.com/" - + "google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)").build(); + .setFilter( + "(metadata.@type=type.googleapis.com/" + + "google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)") + .build(); final Iterable instanceConfigOperations = instanceAdminClient.listInstanceConfigOperations(request).iterateAll(); for (Operation operation : instanceConfigOperations) { @@ -61,8 +59,7 @@ static void listInstanceConfigOperations(String projectId) { metadata.getInstanceConfig().getName(), metadata.getProgress().getProgressPercent()); } System.out.printf( - "Obtained list of instance config operations for project %s...\n", - projectName); + "Obtained list of instance config operations for project %s...\n", projectName); } catch (InvalidProtocolBufferException e) { System.out.printf( "Error: Listing instance config operations failed with error message %s\n", diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListInstanceConfigsSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListInstanceConfigsSample.java index 7c5391638b00..ef5f0990d9a1 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListInstanceConfigsSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ListInstanceConfigsSample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_list_instance_configs] +// [START spanner_list_instance_configs] import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; @@ -34,21 +34,16 @@ static void listInstanceConfigs() { static void listInstanceConfigs(String projectId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { final ProjectName projectName = ProjectName.of(projectId); for (InstanceConfig instanceConfig : instanceAdminClient.listInstanceConfigs(projectName).iterateAll()) { System.out.printf( "Available leader options for instance config %s: %s%n", - instanceConfig.getName(), - instanceConfig.getLeaderOptionsList() - ); + instanceConfig.getName(), instanceConfig.getLeaderOptionsList()); } } } } -//[END spanner_list_instance_configs] +// [END spanner_list_instance_configs] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAlterSequenceSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAlterSequenceSample.java index a3e4a9a677c9..0e23b066be4b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAlterSequenceSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAlterSequenceSample.java @@ -45,7 +45,7 @@ static void pgAlterSequence() { static void pgAlterSequence(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncQueryToListAsyncExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncQueryToListAsyncExample.java index 63e7205563b6..5f3feac1a19a 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncQueryToListAsyncExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncQueryToListAsyncExample.java @@ -51,7 +51,7 @@ static void asyncQueryToList() throws InterruptedException, ExecutionException, String databaseId = "my-database"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); asyncQueryToList(client); @@ -64,11 +64,13 @@ static void asyncQueryToList(DatabaseClient client) ExecutorService executor = Executors.newSingleThreadExecutor(); ApiFuture> albums; try (AsyncResultSet resultSet = - client - .singleUse() - .executeQueryAsync(Statement.of("SELECT singerid as \"SingerId\", " - + "albumid as \"AlbumId\", albumtitle as \"AlbumTitle\" " - + "FROM Albums"))) { + client + .singleUse() + .executeQueryAsync( + Statement.of( + "SELECT singerid as \"SingerId\", " + + "albumid as \"AlbumId\", albumtitle as \"AlbumTitle\" " + + "FROM Albums"))) { // Convert the result set to a list of Albums asynchronously. albums = resultSet.toListAsync( @@ -87,4 +89,4 @@ static void asyncQueryToList(DatabaseClient client) executor.shutdown(); } } -//[END spanner_postgresql_async_query_to_list] +// [END spanner_postgresql_async_query_to_list] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncRunnerExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncRunnerExample.java index f05b509d4c82..db73b1d53e8b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncRunnerExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncRunnerExample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_postgresql_async_read_write_transaction] +// [START spanner_postgresql_async_read_write_transaction] import com.google.api.core.ApiFuture; import com.google.api.core.ApiFutures; import com.google.cloud.spanner.AsyncRunner; @@ -46,7 +46,7 @@ static void asyncRunner() throws InterruptedException, ExecutionException, Timeo String databaseId = "my-database"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); asyncRunner(client); @@ -99,8 +99,7 @@ static void asyncRunner(DatabaseClient client) .bind("p1") .to(album2Budget) .build(); - return txn.batchUpdateAsync( - ImmutableList.of(updateStatement1, updateStatement2)); + return txn.batchUpdateAsync(ImmutableList.of(updateStatement1, updateStatement2)); } else { return ApiFutures.immediateFuture(new long[] {0L, 0L}); } @@ -114,11 +113,9 @@ static void asyncRunner(DatabaseClient client) ApiFuture totalUpdateCount = ApiFutures.transform( - rowCounts, - input -> Arrays.stream(input).sum(), - MoreExecutors.directExecutor()); + rowCounts, input -> Arrays.stream(input).sum(), MoreExecutors.directExecutor()); System.out.printf("%d records updated.%n", totalUpdateCount.get(30L, TimeUnit.SECONDS)); executor.shutdown(); } } -//[END spanner_postgresql_async_read_write_transaction] +// [END spanner_postgresql_async_read_write_transaction] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncTransactionManagerExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncTransactionManagerExample.java index d1b20decde6d..2cf77dfb67d2 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncTransactionManagerExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgAsyncTransactionManagerExample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_postgresql_async_transaction_manager] +// [START spanner_postgresql_async_transaction_manager] import com.google.api.core.ApiFuture; import com.google.api.core.ApiFutures; import com.google.cloud.spanner.AbortedException; @@ -51,7 +51,7 @@ static void asyncTransactionManager() String databaseId = "my-database"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); asyncTransactionManager(client); @@ -130,11 +130,9 @@ static void asyncTransactionManager(DatabaseClient client) // Calculate the total update count. ApiFuture totalUpdateCount = ApiFutures.transform( - updateCounts, - input -> Arrays.stream(input).sum(), - MoreExecutors.directExecutor()); + updateCounts, input -> Arrays.stream(input).sum(), MoreExecutors.directExecutor()); System.out.printf("%d records updated.%n", totalUpdateCount.get(30L, TimeUnit.SECONDS)); executor.shutdown(); } } -//[END spanner_postgresql_async_transaction_manager] +// [END spanner_postgresql_async_transaction_manager] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgBatchDmlSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgBatchDmlSample.java index 6851dfd366e5..57773ff6c873 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgBatchDmlSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgBatchDmlSample.java @@ -38,10 +38,7 @@ static void batchDml() { static void batchDml(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); @@ -82,4 +79,4 @@ static void batchDml(String projectId, String instanceId, String databaseId) { } } } -// [END spanner_postgresql_batch_dml] \ No newline at end of file +// [END spanner_postgresql_batch_dml] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgCaseSensitivitySample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgCaseSensitivitySample.java index abebdef39aad..480d8e89303f 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgCaseSensitivitySample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgCaseSensitivitySample.java @@ -45,7 +45,7 @@ static void pgCaseSensitivity() { static void pgCaseSensitivity(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { // Spanner PostgreSQL follows the case sensitivity rules of PostgreSQL. This means that: @@ -53,18 +53,20 @@ static void pgCaseSensitivity(String projectId, String instanceId, String databa // 2. Identifiers that are double-quoted retain their case and are case-sensitive. // See https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS // for more information. - databaseAdminClient.updateDatabaseDdlAsync( - DatabaseName.of(projectId, instanceId, databaseId), - Lists.newArrayList( - "CREATE TABLE Singers (" - // SingerId will be folded to `singerid`. - + " SingerId bigint NOT NULL PRIMARY KEY," - // FirstName and LastName are double-quoted and will therefore retain their - // mixed case and are case-sensitive. This means that any statement that - // references any of these columns must use double quotes. - + " \"FirstName\" varchar(1024) NOT NULL," - + " \"LastName\" varchar(1024) NOT NULL" - + ")")).get(); + databaseAdminClient + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), + Lists.newArrayList( + "CREATE TABLE Singers (" + // SingerId will be folded to `singerid`. + + " SingerId bigint NOT NULL PRIMARY KEY," + // FirstName and LastName are double-quoted and will therefore retain their + // mixed case and are case-sensitive. This means that any statement that + // references any of these columns must use double quotes. + + " \"FirstName\" varchar(1024) NOT NULL," + + " \"LastName\" varchar(1024) NOT NULL" + + ")")) + .get(); DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); @@ -145,4 +147,4 @@ static void pgCaseSensitivity(String projectId, String instanceId, String databa } } } -// [END spanner_postgresql_identifier_case_sensitivity] \ No newline at end of file +// [END spanner_postgresql_identifier_case_sensitivity] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgCreateSequenceSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgCreateSequenceSample.java index 79445aa27275..1a0eb33be428 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgCreateSequenceSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgCreateSequenceSample.java @@ -45,10 +45,11 @@ static void pgCreateSequence() { static void pgCreateSequence(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient - .updateDatabaseDdlAsync(DatabaseName.of(projectId, instanceId, databaseId).toString(), + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId).toString(), ImmutableList.of( "CREATE SEQUENCE Seq BIT_REVERSED_POSITIVE;", "CREATE TABLE Customers (CustomerId BIGINT DEFAULT nextval('Seq'), " diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgDeleteUsingDmlReturningSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgDeleteUsingDmlReturningSample.java index 712ee07975c7..24d4730484f3 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgDeleteUsingDmlReturningSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgDeleteUsingDmlReturningSample.java @@ -38,10 +38,7 @@ static void deleteUsingDmlReturningSample() { static void deleteUsingDmlReturningSample( String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); // Delete records from SINGERS table satisfying a diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgDropSequenceSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgDropSequenceSample.java index 129009e9b2b0..c37948efcf8b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgDropSequenceSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgDropSequenceSample.java @@ -41,7 +41,7 @@ static void pgDropSequence() { static void pgDropSequence(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient .updateDatabaseDdlAsync( diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgInsertUsingDmlReturningSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgInsertUsingDmlReturningSample.java index 38a68c4f8de7..3f2b440283b4 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgInsertUsingDmlReturningSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgInsertUsingDmlReturningSample.java @@ -37,10 +37,7 @@ static void insertUsingDmlReturning() { static void insertUsingDmlReturning(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); // Insert records into SINGERS table and returns the diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgInterleavedTableSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgInterleavedTableSample.java index 30ee48ed6dd0..c4cd44803c95 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgInterleavedTableSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgInterleavedTableSample.java @@ -39,27 +39,28 @@ static void pgInterleavedTable() { static void pgInterleavedTable(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { // The Spanner PostgreSQL dialect extends the PostgreSQL dialect with certain Spanner // specific features, such as interleaved tables. // See https://cloud.google.com/spanner/docs/postgresql/data-definition-language#create_table // for the full CREATE TABLE syntax. - databaseAdminClient.updateDatabaseDdlAsync(DatabaseName.of(projectId, - instanceId, - databaseId), - Arrays.asList( - "CREATE TABLE Singers (" - + " SingerId bigint NOT NULL PRIMARY KEY," - + " FirstName varchar(1024) NOT NULL," - + " LastName varchar(1024) NOT NULL" - + ")", - "CREATE TABLE Albums (" - + " SingerId bigint NOT NULL," - + " AlbumId bigint NOT NULL," - + " Title varchar(1024) NOT NULL," - + " PRIMARY KEY (SingerId, AlbumId)" - + ") INTERLEAVE IN PARENT Singers ON DELETE CASCADE")).get(); + databaseAdminClient + .updateDatabaseDdlAsync( + DatabaseName.of(projectId, instanceId, databaseId), + Arrays.asList( + "CREATE TABLE Singers (" + + " SingerId bigint NOT NULL PRIMARY KEY," + + " FirstName varchar(1024) NOT NULL," + + " LastName varchar(1024) NOT NULL" + + ")", + "CREATE TABLE Albums (" + + " SingerId bigint NOT NULL," + + " AlbumId bigint NOT NULL," + + " Title varchar(1024) NOT NULL," + + " PRIMARY KEY (SingerId, AlbumId)" + + ") INTERLEAVE IN PARENT Singers ON DELETE CASCADE")) + .get(); System.out.println("Created interleaved table hierarchy using PostgreSQL dialect"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -71,4 +72,4 @@ static void pgInterleavedTable(String projectId, String instanceId, String datab } } } -// [END spanner_postgresql_interleaved_table] \ No newline at end of file +// [END spanner_postgresql_interleaved_table] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgPartitionedDmlSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgPartitionedDmlSample.java index ff442e7b2ef2..e9ff9606778d 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgPartitionedDmlSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgPartitionedDmlSample.java @@ -37,10 +37,7 @@ static void partitionedDml() { static void partitionedDml(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); @@ -55,4 +52,4 @@ static void partitionedDml(String projectId, String instanceId, String databaseI } } } -// [END spanner_postgresql_partitioned_dml] \ No newline at end of file +// [END spanner_postgresql_partitioned_dml] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgQueryWithNumericParameterSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgQueryWithNumericParameterSample.java index 144a26def385..32089289487a 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgQueryWithNumericParameterSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgQueryWithNumericParameterSample.java @@ -34,7 +34,7 @@ static void queryWithNumericParameter() { String databaseId = "my-database"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); queryWithNumericParameter(client); @@ -44,15 +44,14 @@ static void queryWithNumericParameter() { static void queryWithNumericParameter(DatabaseClient client) { Statement statement = Statement.newBuilder( - "SELECT venueid as \"VenueId\", revenue as \"Revenue\" FROM Venues WHERE Revenue " - + "< $1") + "SELECT venueid as \"VenueId\", revenue as \"Revenue\" FROM Venues WHERE Revenue " + + "< $1") .bind("p1") .to(Value.pgNumeric("100000")) .build(); try (ResultSet resultSet = client.singleUse().executeQuery(statement)) { while (resultSet.next()) { - System.out.printf( - "%d %s%n", resultSet.getLong("VenueId"), resultSet.getValue("Revenue")); + System.out.printf("%d %s%n", resultSet.getLong("VenueId"), resultSet.getValue("Revenue")); } } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java index b3ad5cd08c44..471a0ddf1965 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java @@ -16,7 +16,6 @@ package com.example.spanner; -import com.google.api.gax.paging.Page; import com.google.cloud.ByteArray; import com.google.cloud.Date; import com.google.cloud.Timestamp; @@ -62,9 +61,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; -/** - * Example code for using the Cloud Spanner PostgreSQL interface. - */ +/** Example code for using the Cloud Spanner PostgreSQL interface. */ public class PgSpannerSample { // [START spanner_postgresql_insert_data] @@ -82,11 +79,10 @@ public class PgSpannerSample { new Album(2, 1, "Green"), new Album(2, 2, "Forever Hold Your Peace"), new Album(2, 3, "Terrified")); + // [END spanner_postgresql_insert_data] - /** - * Class to contain performance sample data. - */ + /** Class to contain performance sample data. */ static class Performance { final long singerId; @@ -160,11 +156,10 @@ static class Performance { false, 0.72598f, new BigDecimal("390650.99"))); + // [END spanner_postgresql_insert_datatypes_data] - /** - * Class to contain venue sample data. - */ + /** Class to contain venue sample data. */ static class Venue { final long venueId; @@ -206,7 +201,8 @@ static void createPostgreSqlDatabase( CreateDatabaseRequest.newBuilder() .setCreateStatement("CREATE DATABASE \"" + databaseId + "\"") .setParent(InstanceName.of(projectId, instanceId).toString()) - .setDatabaseDialect(DatabaseDialect.POSTGRESQL).build(); + .setDatabaseDialect(DatabaseDialect.POSTGRESQL) + .build(); try { // Initiate the request which returns an OperationFuture. @@ -221,6 +217,7 @@ static void createPostgreSqlDatabase( throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_database] // [START spanner_postgresql_insert_data] @@ -250,6 +247,7 @@ static void writeExampleData(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_postgresql_insert_data] // [START spanner_postgresql_delete_data] @@ -275,6 +273,7 @@ static void deleteExampleData(DatabaseClient dbClient) { dbClient.write(mutations); System.out.printf("Records deleted.\n"); } + // [END spanner_postgresql_delete_data] // [START spanner_postgresql_query_data] @@ -285,11 +284,11 @@ static void query(DatabaseClient dbClient) { .executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) { while (resultSet.next()) { System.out.printf( - "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), - resultSet.getString(2)); + "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); } } } + // [END spanner_postgresql_query_data] // [START spanner_postgresql_read_data] @@ -303,20 +302,21 @@ static void read(DatabaseClient dbClient) { Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { while (resultSet.next()) { System.out.printf( - "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), - resultSet.getString(2)); + "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); } } } + // [END spanner_postgresql_read_data] // [START spanner_postgresql_add_column] static void addMarketingBudget(DatabaseAdminClient adminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - adminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList("ALTER TABLE Albums ADD COLUMN MarketingBudget bigint")).get(); + adminClient + .updateDatabaseDdlAsync( + databaseName, Arrays.asList("ALTER TABLE Albums ADD COLUMN MarketingBudget bigint")) + .get(); System.out.println("Added MarketingBudget column"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -327,6 +327,7 @@ static void addMarketingBudget(DatabaseAdminClient adminClient, DatabaseName dat throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_add_column] // Before executing this method, a new column MarketingBudget has to be added to the Albums @@ -356,51 +357,54 @@ static void update(DatabaseClient dbClient) { // This writes all the mutations to Cloud Spanner atomically. dbClient.write(mutations); } + // [END spanner_postgresql_update_data] // [START spanner_postgresql_read_write_transaction] static void writeWithTransaction(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Transfer marketing budget from one album to another. We do it in a transaction to - // ensure that the transfer is atomic. - Struct row = - transaction.readRow("Albums", Key.of(2, 2), Arrays.asList("MarketingBudget")); - long album2Budget = row.getLong(0); - // Transaction will only be committed if this condition still holds at the time of - // commit. Otherwise it will be aborted and the callable will be rerun by the - // client library. - long transfer = 200000; - if (album2Budget >= transfer) { - long album1Budget = - transaction - .readRow("Albums", Key.of(1, 1), Arrays.asList("MarketingBudget")) - .getLong(0); - album1Budget += transfer; - album2Budget -= transfer; - transaction.buffer( - Mutation.newUpdateBuilder("Albums") - .set("SingerId") - .to(1) - .set("AlbumId") - .to(1) - .set("MarketingBudget") - .to(album1Budget) - .build()); - transaction.buffer( - Mutation.newUpdateBuilder("Albums") - .set("SingerId") - .to(2) - .set("AlbumId") - .to(2) - .set("MarketingBudget") - .to(album2Budget) - .build()); - } - return null; - }); + .run( + transaction -> { + // Transfer marketing budget from one album to another. We do it in a transaction to + // ensure that the transfer is atomic. + Struct row = + transaction.readRow("Albums", Key.of(2, 2), Arrays.asList("MarketingBudget")); + long album2Budget = row.getLong(0); + // Transaction will only be committed if this condition still holds at the time of + // commit. Otherwise it will be aborted and the callable will be rerun by the + // client library. + long transfer = 200000; + if (album2Budget >= transfer) { + long album1Budget = + transaction + .readRow("Albums", Key.of(1, 1), Arrays.asList("MarketingBudget")) + .getLong(0); + album1Budget += transfer; + album2Budget -= transfer; + transaction.buffer( + Mutation.newUpdateBuilder("Albums") + .set("SingerId") + .to(1) + .set("AlbumId") + .to(1) + .set("MarketingBudget") + .to(album1Budget) + .build()); + transaction.buffer( + Mutation.newUpdateBuilder("Albums") + .set("SingerId") + .to(2) + .set("AlbumId") + .to(2) + .set("MarketingBudget") + .to(album2Budget) + .build()); + } + return null; + }); } + // [END spanner_postgresql_read_write_transaction] // [START spanner_postgresql_query_data_with_new_column] @@ -411,9 +415,11 @@ static void queryMarketingBudget(DatabaseClient dbClient) { try (ResultSet resultSet = dbClient .singleUse() - .executeQuery(Statement.of("SELECT singerid as \"SingerId\", " - + "albumid as \"AlbumId\", marketingbudget as \"MarketingBudget\" " - + "FROM Albums"))) { + .executeQuery( + Statement.of( + "SELECT singerid as \"SingerId\", " + + "albumid as \"AlbumId\", marketingbudget as \"MarketingBudget\" " + + "FROM Albums"))) { while (resultSet.next()) { System.out.printf( "%d %d %s\n", @@ -421,20 +427,21 @@ static void queryMarketingBudget(DatabaseClient dbClient) { resultSet.getLong("AlbumId"), // We check that the value is non null. ResultSet getters can only be used to retrieve // non null values. - resultSet.isNull("MarketingBudget") ? "NULL" : - resultSet.getLong("MarketingBudget")); + resultSet.isNull("MarketingBudget") ? "NULL" : resultSet.getLong("MarketingBudget")); } } } + // [END spanner_postgresql_query_data_with_new_column] // [START spanner_postgresql_create_index] static void addIndex(DatabaseAdminClient adminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - adminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList("CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)")).get(); + adminClient + .updateDatabaseDdlAsync( + databaseName, Arrays.asList("CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)")) + .get(); System.out.println("Added AlbumsByAlbumTitle index"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -445,6 +452,7 @@ static void addIndex(DatabaseAdminClient adminClient, DatabaseName databaseName) throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_index] // [START spanner_postgresql_read_data_with_index] @@ -462,17 +470,20 @@ static void readUsingIndex(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_read_data_with_index] // [START spanner_postgresql_create_storing_index] static void addStoringIndex(DatabaseAdminClient adminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - adminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList( - "CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) " - + "INCLUDE (MarketingBudget)")).get(); + adminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) " + + "INCLUDE (MarketingBudget)")) + .get(); System.out.println("Added AlbumsByAlbumTitle2 index"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -483,6 +494,7 @@ static void addStoringIndex(DatabaseAdminClient adminClient, DatabaseName databa throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_storing_index] // Before running this example, create a storing index AlbumsByAlbumTitle2 by applying the DDL @@ -507,6 +519,7 @@ static void readStoringIndex(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_read_data_with_storing_index] // [START spanner_postgresql_read_only_transaction] @@ -520,8 +533,7 @@ static void readOnlyTransaction(DatabaseClient dbClient) { while (queryResultSet.next()) { System.out.printf( "%d %d %s\n", - queryResultSet.getLong(0), queryResultSet.getLong(1), - queryResultSet.getString(2)); + queryResultSet.getLong(0), queryResultSet.getLong(1), queryResultSet.getString(2)); } try (ResultSet readResultSet = transaction.read( @@ -529,12 +541,12 @@ static void readOnlyTransaction(DatabaseClient dbClient) { while (readResultSet.next()) { System.out.printf( "%d %d %s\n", - readResultSet.getLong(0), readResultSet.getLong(1), - readResultSet.getString(2)); + readResultSet.getLong(0), readResultSet.getLong(1), readResultSet.getString(2)); } } } } + // [END spanner_postgresql_read_only_transaction] // [START spanner_postgresql_query_singers_table] @@ -542,8 +554,10 @@ static void querySingersTable(DatabaseClient dbClient) { try (ResultSet resultSet = dbClient .singleUse() - .executeQuery(Statement.of("SELECT singerid as \"SingerId\", " - + "firstname as \"FirstName\", lastname as \"LastName\" FROM Singers"))) { + .executeQuery( + Statement.of( + "SELECT singerid as \"SingerId\", " + + "firstname as \"FirstName\", lastname as \"LastName\" FROM Singers"))) { while (resultSet.next()) { System.out.printf( "%s %s %s\n", @@ -553,26 +567,28 @@ static void querySingersTable(DatabaseClient dbClient) { } } } - // [END spanner_postgresql_query_singers_table] + // [END spanner_postgresql_query_singers_table] // [START spanner_postgresql_dml_getting_started_insert] static void writeUsingDml(DatabaseClient dbClient) { // Insert 4 singer records dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) VALUES " - + "(12, 'Melissa', 'Garcia'), " - + "(13, 'Russell', 'Morales'), " - + "(14, 'Jacqueline', 'Long'), " - + "(15, 'Dylan', 'Shaw')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d records inserted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) VALUES " + + "(12, 'Melissa', 'Garcia'), " + + "(13, 'Russell', 'Morales'), " + + "(14, 'Jacqueline', 'Long'), " + + "(15, 'Dylan', 'Shaw')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d records inserted.\n", rowCount); + return null; + }); } + // [END spanner_postgresql_dml_getting_started_insert] // [START spanner_postgresql_query_with_parameter] @@ -596,60 +612,63 @@ static void queryWithParameter(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_parameter] // [START spanner_postgresql_dml_getting_started_update] static void writeWithTransactionUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Transfer marketing budget from one album to another. We do it in a transaction to - // ensure that the transfer is atomic. - String sql1 = - "SELECT marketingbudget as \"MarketingBudget\" from Albums WHERE " - + "SingerId = 2 and AlbumId = 2"; - ResultSet resultSet = transaction.executeQuery(Statement.of(sql1)); - long album2Budget = 0; - while (resultSet.next()) { - album2Budget = resultSet.getLong("MarketingBudget"); - } - // Transaction will only be committed if this condition still holds at the time of - // commit. Otherwise it will be aborted and the callable will be rerun by the - // client library. - long transfer = 200000; - if (album2Budget >= transfer) { - String sql2 = - "SELECT marketingbudget as \"MarketingBudget\" from Albums WHERE " - + "SingerId = 1 and AlbumId = 1"; - ResultSet resultSet2 = transaction.executeQuery(Statement.of(sql2)); - long album1Budget = 0; - while (resultSet2.next()) { - album1Budget = resultSet2.getLong("MarketingBudget"); - } - album1Budget += transfer; - album2Budget -= transfer; - Statement updateStatement = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = $1 " - + "WHERE SingerId = 1 and AlbumId = 1") - .bind("p1") - .to(album1Budget) - .build(); - transaction.executeUpdate(updateStatement); - Statement updateStatement2 = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = $1 " - + "WHERE SingerId = 2 and AlbumId = 2") - .bind("p1") - .to(album2Budget) - .build(); - transaction.executeUpdate(updateStatement2); - } - return null; - }); + .run( + transaction -> { + // Transfer marketing budget from one album to another. We do it in a transaction to + // ensure that the transfer is atomic. + String sql1 = + "SELECT marketingbudget as \"MarketingBudget\" from Albums WHERE " + + "SingerId = 2 and AlbumId = 2"; + ResultSet resultSet = transaction.executeQuery(Statement.of(sql1)); + long album2Budget = 0; + while (resultSet.next()) { + album2Budget = resultSet.getLong("MarketingBudget"); + } + // Transaction will only be committed if this condition still holds at the time of + // commit. Otherwise it will be aborted and the callable will be rerun by the + // client library. + long transfer = 200000; + if (album2Budget >= transfer) { + String sql2 = + "SELECT marketingbudget as \"MarketingBudget\" from Albums WHERE " + + "SingerId = 1 and AlbumId = 1"; + ResultSet resultSet2 = transaction.executeQuery(Statement.of(sql2)); + long album1Budget = 0; + while (resultSet2.next()) { + album1Budget = resultSet2.getLong("MarketingBudget"); + } + album1Budget += transfer; + album2Budget -= transfer; + Statement updateStatement = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = $1 " + + "WHERE SingerId = 1 and AlbumId = 1") + .bind("p1") + .to(album1Budget) + .build(); + transaction.executeUpdate(updateStatement); + Statement updateStatement2 = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = $1 " + + "WHERE SingerId = 2 and AlbumId = 2") + .bind("p1") + .to(album2Budget) + .build(); + transaction.executeUpdate(updateStatement2); + } + return null; + }); } + // [END spanner_postgresql_dml_getting_started_update] // [START spanner_postgresql_create_table_using_ddl] @@ -657,24 +676,26 @@ static void writeWithTransactionUsingDml(DatabaseClient dbClient) { static void createTableUsingDdl(DatabaseAdminClient dbAdminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - dbAdminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList( - "CREATE TABLE Singers (" - + " SingerId bigint NOT NULL," - + " FirstName character varying(1024)," - + " LastName character varying(1024)," - + " SingerInfo bytea," - + " FullName character varying(2048) GENERATED " - + " ALWAYS AS (FirstName || ' ' || LastName) STORED," - + " PRIMARY KEY (SingerId)" - + ")", - "CREATE TABLE Albums (" - + " SingerId bigint NOT NULL," - + " AlbumId bigint NOT NULL," - + " AlbumTitle character varying(1024)," - + " PRIMARY KEY (SingerId, AlbumId)" - + ") INTERLEAVE IN PARENT Singers ON DELETE CASCADE")).get(); + dbAdminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "CREATE TABLE Singers (" + + " SingerId bigint NOT NULL," + + " FirstName character varying(1024)," + + " LastName character varying(1024)," + + " SingerInfo bytea," + + " FullName character varying(2048) GENERATED " + + " ALWAYS AS (FirstName || ' ' || LastName) STORED," + + " PRIMARY KEY (SingerId)" + + ")", + "CREATE TABLE Albums (" + + " SingerId bigint NOT NULL," + + " AlbumId bigint NOT NULL," + + " AlbumTitle character varying(1024)," + + " PRIMARY KEY (SingerId, AlbumId)" + + ") INTERLEAVE IN PARENT Singers ON DELETE CASCADE")) + .get(); System.out.println("Created Singers & Albums tables in database: [" + databaseName + "]"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -685,6 +706,7 @@ static void createTableUsingDdl(DatabaseAdminClient dbAdminClient, DatabaseName throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_database] // [END spanner_postgresql_create_table_using_ddl] @@ -694,8 +716,7 @@ static void readStaleData(DatabaseClient dbClient) { dbClient .singleUse(TimestampBound.ofExactStaleness(15, TimeUnit.SECONDS)) .read( - "Albums", KeySet.all(), - Arrays.asList("SingerId", "AlbumId", "MarketingBudget"))) { + "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "MarketingBudget"))) { while (resultSet.next()) { System.out.printf( "%d %d %s\n", @@ -705,6 +726,7 @@ static void readStaleData(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_read_stale_data] // Before executing this method, a new column MarketingBudget has to be added to the Albums @@ -740,6 +762,7 @@ static void updateWithTimestamp(DatabaseClient dbClient) { // This writes all the mutations to Cloud Spanner atomically. dbClient.write(mutations); } + // [END spanner_postgresql_update_data_with_timestamp_column] // [START spanner_postgresql_add_timestamp_column] @@ -747,10 +770,12 @@ static void addLastUpdateTimestampColumn( DatabaseAdminClient adminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - adminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList( - "ALTER TABLE Albums ADD COLUMN LastUpdateTime spanner.commit_timestamp")).get(); + adminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "ALTER TABLE Albums ADD COLUMN LastUpdateTime spanner.commit_timestamp")) + .get(); System.out.println("Added LastUpdateTime as a timestamp column in Albums table."); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -761,6 +786,7 @@ static void addLastUpdateTimestampColumn( throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_add_timestamp_column] // [START spanner_postgresql_query_data_with_timestamp_column] @@ -789,22 +815,26 @@ static void queryMarketingBudgetWithTimestamp(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_data_with_timestamp_column] // [START spanner_postgresql_create_table_with_timestamp_column] - static void createTableWithTimestamp(DatabaseAdminClient dbAdminClient, - DatabaseName databaseName) { + static void createTableWithTimestamp( + DatabaseAdminClient dbAdminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - dbAdminClient.updateDatabaseDdlAsync(databaseName, - Arrays.asList( - "CREATE TABLE Performances (" - + " SingerId BIGINT NOT NULL," - + " VenueId BIGINT NOT NULL," - + " Revenue BIGINT," - + " LastUpdateTime SPANNER.COMMIT_TIMESTAMP NOT NULL," - + " PRIMARY KEY (SingerId, VenueId))" - + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")).get(); + dbAdminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "CREATE TABLE Performances (" + + " SingerId BIGINT NOT NULL," + + " VenueId BIGINT NOT NULL," + + " Revenue BIGINT," + + " LastUpdateTime SPANNER.COMMIT_TIMESTAMP NOT NULL," + + " PRIMARY KEY (SingerId, VenueId))" + + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")) + .get(); System.out.println("Created Performances table in database: [" + databaseName + "]"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -815,6 +845,7 @@ static void createTableWithTimestamp(DatabaseAdminClient dbAdminClient, throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_table_with_timestamp_column] // [START spanner_postgresql_insert_data_with_timestamp_column] @@ -835,6 +866,7 @@ static void writeExampleDataWithTimestamp(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_postgresql_insert_data_with_timestamp_column] static void queryPerformancesTable(DatabaseClient dbClient) { @@ -866,72 +898,80 @@ static void queryPerformancesTable(DatabaseClient dbClient) { static void insertUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) " - + " VALUES (10, 'Virginia', 'Watson')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + " VALUES (10, 'Virginia', 'Watson')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.\n", rowCount); + return null; + }); } + // [END spanner_postgresql_dml_standard_insert] // [START spanner_postgresql_dml_standard_update] static void updateUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "UPDATE Albums " - + "SET MarketingBudget = MarketingBudget * 2 " - + "WHERE SingerId = 1 and AlbumId = 1"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record updated.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "UPDATE Albums " + + "SET MarketingBudget = MarketingBudget * 2 " + + "WHERE SingerId = 1 and AlbumId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); } + // [END spanner_postgresql_dml_standard_update] // [START spanner_postgresql_dml_standard_delete] static void deleteUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = "DELETE FROM Singers WHERE FirstName = 'Alice'"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record deleted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = "DELETE FROM Singers WHERE FirstName = 'Alice'"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record deleted.\n", rowCount); + return null; + }); } + // [END spanner_postgresql_dml_standard_delete] // [START spanner_postgresql_dml_write_then_read] static void writeAndReadUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Insert record. - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) " - + " VALUES (11, 'Timothy', 'Campbell')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.\n", rowCount); - // Read newly inserted record. - sql = "SELECT firstname as \"FirstName\", lastname as \"LastName\" FROM Singers WHERE " - + "SingerId = 11"; - // We use a try-with-resource block to automatically release resources held by - // ResultSet. - try (ResultSet resultSet = transaction.executeQuery(Statement.of(sql))) { - while (resultSet.next()) { - System.out.printf( - "%s %s\n", - resultSet.getString("FirstName"), resultSet.getString("LastName")); - } - } - return null; - }); + .run( + transaction -> { + // Insert record. + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + " VALUES (11, 'Timothy', 'Campbell')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.\n", rowCount); + // Read newly inserted record. + sql = + "SELECT firstname as \"FirstName\", lastname as \"LastName\" FROM Singers WHERE " + + "SingerId = 11"; + // We use a try-with-resource block to automatically release resources held by + // ResultSet. + try (ResultSet resultSet = transaction.executeQuery(Statement.of(sql))) { + while (resultSet.next()) { + System.out.printf( + "%s %s\n", resultSet.getString("FirstName"), resultSet.getString("LastName")); + } + } + return null; + }); } + // [END spanner_postgresql_dml_write_then_read] // [START spanner_postgresql_dml_partitioned_update] @@ -940,6 +980,7 @@ static void updateUsingPartitionedDml(DatabaseClient dbClient) { long rowCount = dbClient.executePartitionedUpdate(Statement.of(sql)); System.out.printf("%d records updated.\n", rowCount); } + // [END spanner_postgresql_dml_partitioned_update] // [START spanner_postgresql_dml_partitioned_delete] @@ -948,56 +989,61 @@ static void deleteUsingPartitionedDml(DatabaseClient dbClient) { long rowCount = dbClient.executePartitionedUpdate(Statement.of(sql)); System.out.printf("%d records deleted.\n", rowCount); } + // [END spanner_postgresql_dml_partitioned_delete] // [START spanner_postgresql_dml_batch_update] static void updateUsingBatchDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - List stmts = new ArrayList(); - String sql = - "INSERT INTO Albums " - + "(SingerId, AlbumId, AlbumTitle, MarketingBudget) " - + "VALUES (1, 3, 'Test Album Title', 10000) "; - stmts.add(Statement.of(sql)); - sql = - "UPDATE Albums " - + "SET MarketingBudget = MarketingBudget * 2 " - + "WHERE SingerId = 1 and AlbumId = 3"; - stmts.add(Statement.of(sql)); - long[] rowCounts; - try { - rowCounts = transaction.batchUpdate(stmts); - } catch (SpannerBatchUpdateException e) { - rowCounts = e.getUpdateCounts(); - } - for (int i = 0; i < rowCounts.length; i++) { - System.out.printf("%d record updated by stmt %d.\n", rowCounts[i], i); - } - return null; - }); + .run( + transaction -> { + List stmts = new ArrayList(); + String sql = + "INSERT INTO Albums " + + "(SingerId, AlbumId, AlbumTitle, MarketingBudget) " + + "VALUES (1, 3, 'Test Album Title', 10000) "; + stmts.add(Statement.of(sql)); + sql = + "UPDATE Albums " + + "SET MarketingBudget = MarketingBudget * 2 " + + "WHERE SingerId = 1 and AlbumId = 3"; + stmts.add(Statement.of(sql)); + long[] rowCounts; + try { + rowCounts = transaction.batchUpdate(stmts); + } catch (SpannerBatchUpdateException e) { + rowCounts = e.getUpdateCounts(); + } + for (int i = 0; i < rowCounts.length; i++) { + System.out.printf("%d record updated by stmt %d.\n", rowCounts[i], i); + } + return null; + }); } + // [END spanner_postgresql_dml_batch_update] // [START spanner_postgresql_create_table_with_datatypes] - static void createTableWithDatatypes(DatabaseAdminClient dbAdminClient, - DatabaseName databaseName) { + static void createTableWithDatatypes( + DatabaseAdminClient dbAdminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - dbAdminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList( - "CREATE TABLE Venues (" - + " VenueId BIGINT NOT NULL," - + " VenueName character varying(100)," - + " VenueInfo bytea," - + " Capacity BIGINT," - + " OutdoorVenue BOOL, " - + " PopularityScore FLOAT8, " - + " Revenue NUMERIC, " - + " LastUpdateTime SPANNER.COMMIT_TIMESTAMP NOT NULL," - + " PRIMARY KEY (VenueId))")).get(); + dbAdminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "CREATE TABLE Venues (" + + " VenueId BIGINT NOT NULL," + + " VenueName character varying(100)," + + " VenueInfo bytea," + + " Capacity BIGINT," + + " OutdoorVenue BOOL, " + + " PopularityScore FLOAT8, " + + " Revenue NUMERIC, " + + " LastUpdateTime SPANNER.COMMIT_TIMESTAMP NOT NULL," + + " PRIMARY KEY (VenueId))")) + .get(); System.out.println("Created Venues table in database: [" + databaseName + "]"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -1008,6 +1054,7 @@ static void createTableWithDatatypes(DatabaseAdminClient dbAdminClient, throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_table_with_datatypes] // [START spanner_postgresql_insert_datatypes_data] @@ -1036,6 +1083,7 @@ static void writeDatatypesData(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_postgresql_insert_datatypes_data] // [START spanner_postgresql_query_with_bool_parameter] @@ -1059,6 +1107,7 @@ static void queryWithBool(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_bool_parameter] // [START spanner_postgresql_query_with_bytes_parameter] @@ -1079,6 +1128,7 @@ static void queryWithBytes(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_bytes_parameter] // [START spanner_postgresql_query_with_float_parameter] @@ -1102,6 +1152,7 @@ static void queryWithFloat(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_float_parameter] // [START spanner_postgresql_query_with_int_parameter] @@ -1111,7 +1162,8 @@ static void queryWithInt(DatabaseClient dbClient) { Statement.newBuilder( "SELECT venueid as \"VenueId\", venuename as \"VenueName\", " + "capacity as \"Capacity\" " - + "FROM Venues " + "WHERE Capacity >= $1") + + "FROM Venues " + + "WHERE Capacity >= $1") .bind("p1") .to(exampleInt) .build(); @@ -1125,6 +1177,7 @@ static void queryWithInt(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_int_parameter] // [START spanner_postgresql_query_with_string_parameter] @@ -1144,6 +1197,7 @@ static void queryWithString(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_string_parameter] // [START spanner_postgresql_query_with_timestamp_parameter] @@ -1166,6 +1220,7 @@ static void queryWithTimestampParameter(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_timestamp_parameter] // [START spanner_postgresql_query_with_numeric_parameter] @@ -1188,6 +1243,7 @@ static void queryWithNumeric(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_numeric_parameter] // [START spanner_postgresql_create_client_with_query_options] @@ -1195,8 +1251,8 @@ static void clientWithQueryOptions(DatabaseId db) { SpannerOptions options = SpannerOptions.newBuilder() .setDefaultQueryOptions( - db, ExecuteSqlRequest.QueryOptions - .newBuilder() + db, + ExecuteSqlRequest.QueryOptions.newBuilder() .setOptimizerVersion("1") // The list of available statistics packages can be found by querying the // "INFORMATION_SCHEMA.spanner_postgresql_STATISTICS" table. @@ -1215,6 +1271,7 @@ static void clientWithQueryOptions(DatabaseId db) { } } } + // [END spanner_postgresql_create_client_with_query_options] // [START spanner_postgresql_query_with_query_options] @@ -1223,15 +1280,14 @@ static void queryWithQueryOptions(DatabaseClient dbClient) { dbClient .singleUse() .executeQuery( - Statement - .newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums") - .withQueryOptions(ExecuteSqlRequest.QueryOptions - .newBuilder() - .setOptimizerVersion("1") - // The list of available statistics packages can be found by querying - // the "INFORMATION_SCHEMA.spanner_postgresql_STATISTICS" table. - .setOptimizerStatisticsPackage("latest") - .build()) + Statement.newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums") + .withQueryOptions( + ExecuteSqlRequest.QueryOptions.newBuilder() + .setOptimizerVersion("1") + // The list of available statistics packages can be found by querying + // the "INFORMATION_SCHEMA.spanner_postgresql_STATISTICS" table. + .setOptimizerStatisticsPackage("latest") + .build()) .build())) { while (resultSet.next()) { System.out.printf( @@ -1239,13 +1295,16 @@ static void queryWithQueryOptions(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_query_options] // [START spanner_postgresql_list_backup_operations] static void listBackupOperations( DatabaseAdminClient databaseAdminClient, - String projectId, String instanceId, - String databaseId, String backupId) { + String projectId, + String instanceId, + String databaseId, + String backupId) { com.google.spanner.admin.database.v1.InstanceName instanceName = com.google.spanner.admin.database.v1.InstanceName.of(projectId, instanceId); // Get 'CreateBackup' operations for the sample database. @@ -1257,9 +1316,11 @@ static void listBackupOperations( DatabaseName.of(projectId, instanceId, databaseId).toString()); ListBackupOperationsRequest listBackupOperationsRequest = ListBackupOperationsRequest.newBuilder() - .setParent(instanceName.toString()).setFilter(filter).build(); - ListBackupOperationsPagedResponse createBackupOperations - = databaseAdminClient.listBackupOperations(listBackupOperationsRequest); + .setParent(instanceName.toString()) + .setFilter(filter) + .build(); + ListBackupOperationsPagedResponse createBackupOperations = + databaseAdminClient.listBackupOperations(listBackupOperationsRequest); System.out.println("Create Backup Operations:"); for (Operation op : createBackupOperations.iterateAll()) { try { @@ -1276,21 +1337,23 @@ static void listBackupOperations( } } // Get copy backup operations for the sample database. - filter = String.format( - "(metadata.@type:type.googleapis.com/" - + "google.spanner.admin.database.v1.CopyBackupMetadata) " - + "AND (metadata.source_backup:%s)", - BackupName.of(projectId, instanceId, backupId).toString()); + filter = + String.format( + "(metadata.@type:type.googleapis.com/" + + "google.spanner.admin.database.v1.CopyBackupMetadata) " + + "AND (metadata.source_backup:%s)", + BackupName.of(projectId, instanceId, backupId).toString()); listBackupOperationsRequest = ListBackupOperationsRequest.newBuilder() - .setParent(instanceName.toString()).setFilter(filter).build(); + .setParent(instanceName.toString()) + .setFilter(filter) + .build(); ListBackupOperationsPagedResponse copyBackupOperations = databaseAdminClient.listBackupOperations(listBackupOperationsRequest); System.out.println("Copy Backup Operations:"); for (Operation op : copyBackupOperations.iterateAll()) { try { - CopyBackupMetadata copyBackupMetadata = - op.getMetadata().unpack(CopyBackupMetadata.class); + CopyBackupMetadata copyBackupMetadata = op.getMetadata().unpack(CopyBackupMetadata.class); System.out.println( String.format( "Copy Backup %s on backup %s pending: %d%% complete", @@ -1303,40 +1366,51 @@ static void listBackupOperations( } } } + // [END spanner_postgresql_list_backup_operations] // [START spanner_postgresql_list_database_operations] static void listDatabaseOperations( DatabaseAdminClient dbAdminClient, String projectId, String instanceId) { // Get optimize restored database operations. - com.google.cloud.Timestamp last24Hours = com.google.cloud.Timestamp.ofTimeSecondsAndNanos( - TimeUnit.SECONDS.convert( - TimeUnit.HOURS.convert(com.google.cloud.Timestamp.now().getSeconds(), TimeUnit.SECONDS) - - 24, - TimeUnit.HOURS), 0); - String filter = String.format("(metadata.@type:type.googleapis.com/" - + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) AND " - + "(metadata.progress.start_time > \"%s\")", last24Hours); + com.google.cloud.Timestamp last24Hours = + com.google.cloud.Timestamp.ofTimeSecondsAndNanos( + TimeUnit.SECONDS.convert( + TimeUnit.HOURS.convert( + com.google.cloud.Timestamp.now().getSeconds(), TimeUnit.SECONDS) + - 24, + TimeUnit.HOURS), + 0); + String filter = + String.format( + "(metadata.@type:type.googleapis.com/" + + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) AND " + + "(metadata.progress.start_time > \"%s\")", + last24Hours); ListDatabaseOperationsRequest listDatabaseOperationsRequest = ListDatabaseOperationsRequest.newBuilder() - .setParent(com.google.spanner.admin.instance.v1.InstanceName.of( - projectId, instanceId).toString()).setFilter(filter).build(); - ListDatabaseOperationsPagedResponse pagedResponse - = dbAdminClient.listDatabaseOperations(listDatabaseOperationsRequest); + .setParent( + com.google.spanner.admin.instance.v1.InstanceName.of(projectId, instanceId) + .toString()) + .setFilter(filter) + .build(); + ListDatabaseOperationsPagedResponse pagedResponse = + dbAdminClient.listDatabaseOperations(listDatabaseOperationsRequest); for (Operation op : pagedResponse.iterateAll()) { try { OptimizeRestoredDatabaseMetadata metadata = op.getMetadata().unpack(OptimizeRestoredDatabaseMetadata.class); - System.out.println(String.format( - "Database %s restored from backup is %d%% optimized", - metadata.getName(), - metadata.getProgress().getProgressPercent())); + System.out.println( + String.format( + "Database %s restored from backup is %d%% optimized", + metadata.getName(), metadata.getProgress().getProgressPercent())); } catch (InvalidProtocolBufferException e) { // The returned operation does not contain OptimizeRestoredDatabaseMetadata. System.err.println(e.getMessage()); } } } + // [END spanner_postgresql_list_database_operations] static void run( @@ -1345,12 +1419,18 @@ static void run( String command, DatabaseId database, String backupId) { - DatabaseName databaseName = DatabaseName.of(database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase()); + DatabaseName databaseName = + DatabaseName.of( + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase()); switch (command) { case "createpgdatabase": - createPostgreSqlDatabase(dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase()); + createPostgreSqlDatabase( + dbAdminClient, + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase()); break; case "write": writeExampleData(dbClient); @@ -1482,11 +1562,17 @@ static void run( queryWithQueryOptions(dbClient); break; case "listbackupoperations": - listBackupOperations(dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase(), backupId); + listBackupOperations( + dbAdminClient, + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase(), + backupId); break; case "listdatabaseoperations": - listDatabaseOperations(dbAdminClient, database.getInstanceId().getProject(), + listDatabaseOperations( + dbAdminClient, + database.getInstanceId().getProject(), database.getInstanceId().getInstance()); break; default: @@ -1591,9 +1677,7 @@ public static void main(String[] args) { System.out.println("Closed client"); } - /** - * Class to contain singer sample data. - */ + /** Class to contain singer sample data. */ static class Singer { final long singerId; @@ -1607,9 +1691,7 @@ static class Singer { } } - /** - * Class to contain album sample data. - */ + /** Class to contain album sample data. */ static class Album { final long singerId; diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgUpdateUsingDmlReturningSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgUpdateUsingDmlReturningSample.java index d0b5a5795e6d..ea98c9df6949 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgUpdateUsingDmlReturningSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/PgUpdateUsingDmlReturningSample.java @@ -37,10 +37,7 @@ static void updateUsingDmlReturning() { static void updateUsingDmlReturning(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); // Update MarketingBudget column for records satisfying diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/QueryInformationSchemaDatabaseOptionsSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/QueryInformationSchemaDatabaseOptionsSample.java index 814c74542cba..6dedc1c5bf1e 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/QueryInformationSchemaDatabaseOptionsSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/QueryInformationSchemaDatabaseOptionsSample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_query_information_schema_database_options] +// [START spanner_query_information_schema_database_options] import com.google.cloud.spanner.DatabaseClient; import com.google.cloud.spanner.DatabaseId; @@ -37,21 +37,19 @@ static void queryInformationSchemaDatabaseOptions() { static void queryInformationSchemaDatabaseOptions( String projectId, String instanceId, String databaseId) { - try (Spanner spanner = SpannerOptions - .newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseId id = DatabaseId.of(projectId, instanceId, databaseId); final DatabaseClient databaseClient = spanner.getDatabaseClient(id); - try (ResultSet resultSet = databaseClient - .singleUse() - .executeQuery(Statement.of( - "SELECT OPTION_NAME, OPTION_VALUE" - + " FROM INFORMATION_SCHEMA.DATABASE_OPTIONS" - + " WHERE OPTION_NAME = 'default_leader'") - )) { + try (ResultSet resultSet = + databaseClient + .singleUse() + .executeQuery( + Statement.of( + "SELECT OPTION_NAME, OPTION_VALUE" + + " FROM INFORMATION_SCHEMA.DATABASE_OPTIONS" + + " WHERE OPTION_NAME = 'default_leader'"))) { if (resultSet.next()) { final String optionName = resultSet.getString("OPTION_NAME"); final String optionValue = resultSet.getString("OPTION_VALUE"); @@ -59,11 +57,10 @@ static void queryInformationSchemaDatabaseOptions( System.out.println("The " + optionName + " for " + id + " is " + optionValue); } else { System.out.println( - "Database " + id + " does not have a value for option 'default_leader'" - ); + "Database " + id + " does not have a value for option 'default_leader'"); } } } } } -//[END spanner_query_information_schema_database_options] +// [END spanner_query_information_schema_database_options] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/QueryWithNumericParameterSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/QueryWithNumericParameterSample.java index 146ea780fdd3..bcb174385e7e 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/QueryWithNumericParameterSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/QueryWithNumericParameterSample.java @@ -43,8 +43,7 @@ static void queryWithNumericParameter() { static void queryWithNumericParameter(DatabaseClient client) { Statement statement = - Statement.newBuilder( - "SELECT VenueId, Revenue FROM Venues WHERE Revenue < @numeric") + Statement.newBuilder("SELECT VenueId, Revenue FROM Venues WHERE Revenue < @numeric") .bind("numeric") .to(new BigDecimal("100000")) .build(); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ReadDataWithDatabaseRole.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ReadDataWithDatabaseRole.java index a746d54e0e41..b1049714156e 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/ReadDataWithDatabaseRole.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/ReadDataWithDatabaseRole.java @@ -49,10 +49,7 @@ static void readDataWithDatabaseRole( ResultSet resultSet = dbClient .singleUse() - .read( - "Singers", - KeySet.all(), - Arrays.asList("SingerId", "FirstName", "LastName")); + .read("Singers", KeySet.all(), Arrays.asList("SingerId", "FirstName", "LastName")); while (resultSet.next()) { System.out.printf("SingerId: %d\n", resultSet.getLong(0)); System.out.printf("FirstName: %s\n", resultSet.getString(1)); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/RestoreBackupWithEncryptionKey.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/RestoreBackupWithEncryptionKey.java index af101f96cca0..cde44d5a3ff1 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/RestoreBackupWithEncryptionKey.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/RestoreBackupWithEncryptionKey.java @@ -43,27 +43,30 @@ static void restoreBackupWithEncryptionKey() { "projects/" + projectId + "/locations//keyRings//cryptoKeys/"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient adminClient = spanner.createDatabaseAdminClient()) { restoreBackupWithEncryptionKey( - adminClient, - projectId, - instanceId, - backupId, - databaseId, - kmsKeyName); + adminClient, projectId, instanceId, backupId, databaseId, kmsKeyName); } } - static Void restoreBackupWithEncryptionKey(DatabaseAdminClient adminClient, - String projectId, String instanceId, String backupId, String restoreId, String kmsKeyName) { + static Void restoreBackupWithEncryptionKey( + DatabaseAdminClient adminClient, + String projectId, + String instanceId, + String backupId, + String restoreId, + String kmsKeyName) { RestoreDatabaseRequest request = RestoreDatabaseRequest.newBuilder() .setParent(InstanceName.of(projectId, instanceId).toString()) .setDatabaseId(restoreId) .setBackup(BackupName.of(projectId, instanceId, backupId).toString()) - .setEncryptionConfig(RestoreDatabaseEncryptionConfig.newBuilder() - .setEncryptionType(CUSTOMER_MANAGED_ENCRYPTION).setKmsKeyName(kmsKeyName)).build(); + .setEncryptionConfig( + RestoreDatabaseEncryptionConfig.newBuilder() + .setEncryptionType(CUSTOMER_MANAGED_ENCRYPTION) + .setKmsKeyName(kmsKeyName)) + .build(); Database database; try { System.out.println("Waiting for operation to complete..."); @@ -83,8 +86,7 @@ static Void restoreBackupWithEncryptionKey(DatabaseAdminClient adminClient, database.getRestoreInfo().getBackupInfo().getSourceDatabase(), database.getName(), database.getRestoreInfo().getBackupInfo().getBackup(), - database.getEncryptionConfig().getKmsKeyName() - ); + database.getEncryptionConfig().getKmsKeyName()); return null; } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/SetMaxCommitDelaySample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/SetMaxCommitDelaySample.java index 901664829368..445b6da1ccd2 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/SetMaxCommitDelaySample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/SetMaxCommitDelaySample.java @@ -38,31 +38,33 @@ static void setMaxCommitDelay() { try (Spanner spanner = SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { - final DatabaseClient databaseClient = spanner - .getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); + final DatabaseClient databaseClient = + spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); setMaxCommitDelay(databaseClient); } } static void setMaxCommitDelay(DatabaseClient databaseClient) { - final CommitResponse commitResponse = databaseClient.writeWithOptions(Arrays.asList( - Mutation.newInsertOrUpdateBuilder("Albums") - .set("SingerId") - .to("1") - .set("AlbumId") - .to("1") - .set("MarketingBudget") - .to("200000") - .build(), - Mutation.newInsertOrUpdateBuilder("Albums") - .set("SingerId") - .to("2") - .set("AlbumId") - .to("2") - .set("MarketingBudget") - .to("400000") - .build() - ), Options.maxCommitDelay(Duration.ofMillis(100))); + final CommitResponse commitResponse = + databaseClient.writeWithOptions( + Arrays.asList( + Mutation.newInsertOrUpdateBuilder("Albums") + .set("SingerId") + .to("1") + .set("AlbumId") + .to("1") + .set("MarketingBudget") + .to("200000") + .build(), + Mutation.newInsertOrUpdateBuilder("Albums") + .set("SingerId") + .to("2") + .set("AlbumId") + .to("2") + .set("MarketingBudget") + .to("400000") + .build()), + Options.maxCommitDelay(Duration.ofMillis(100))); System.out.println( "Updated data with timestamp + " + commitResponse.getCommitTimestamp() + "."); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/SingerProto.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/SingerProto.java index b962e4bc6b7a..7258fc80b02d 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/SingerProto.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/SingerProto.java @@ -28,6 +28,7 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLi public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) { registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry); } + /** Protobuf enum {@code examples.spanner.music.Genre} */ public enum Genre implements com.google.protobuf.ProtocolMessageEnum { /** POP = 0; */ @@ -43,10 +44,13 @@ public enum Genre implements com.google.protobuf.ProtocolMessageEnum { /** POP = 0; */ public static final int POP_VALUE = 0; + /** JAZZ = 1; */ public static final int JAZZ_VALUE = 1; + /** FOLK = 2; */ public static final int FOLK_VALUE = 2; + /** ROCK = 3; */ public static final int ROCK_VALUE = 3; @@ -144,6 +148,7 @@ public interface SingerInfoOrBuilder * @return Whether the singerId field is set. */ boolean hasSingerId(); + /** * optional int64 singer_id = 1; * @@ -157,12 +162,14 @@ public interface SingerInfoOrBuilder * @return Whether the birthDate field is set. */ boolean hasBirthDate(); + /** * optional string birth_date = 2; * * @return The birthDate. */ String getBirthDate(); + /** * optional string birth_date = 2; * @@ -176,12 +183,14 @@ public interface SingerInfoOrBuilder * @return Whether the nationality field is set. */ boolean hasNationality(); + /** * optional string nationality = 3; * * @return The nationality. */ String getNationality(); + /** * optional string nationality = 3; * @@ -195,12 +204,14 @@ public interface SingerInfoOrBuilder * @return Whether the genre field is set. */ boolean hasGenre(); + /** * optional .examples.spanner.music.Genre genre = 4; * * @return The enum numeric value on the wire for genre. */ int getGenreValue(); + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -208,12 +219,14 @@ public interface SingerInfoOrBuilder */ Genre getGenre(); } + /** Protobuf type {@code examples.spanner.music.SingerInfo} */ public static final class SingerInfo extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:examples.spanner.music.SingerInfo) SingerInfoOrBuilder { private static final long serialVersionUID = 0L; + // Use SingerInfo.newBuilder() to construct. private SingerInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); @@ -244,6 +257,7 @@ protected FieldAccessorTable internalGetFieldAccessorTable() { private int bitField0_; public static final int SINGER_ID_FIELD_NUMBER = 1; private long singerId_ = 0L; + /** * optional int64 singer_id = 1; * @@ -253,6 +267,7 @@ protected FieldAccessorTable internalGetFieldAccessorTable() { public boolean hasSingerId() { return ((bitField0_ & 0x00000001) != 0); } + /** * optional int64 singer_id = 1; * @@ -267,6 +282,7 @@ public long getSingerId() { @SuppressWarnings("serial") private volatile Object birthDate_ = ""; + /** * optional string birth_date = 2; * @@ -276,6 +292,7 @@ public long getSingerId() { public boolean hasBirthDate() { return ((bitField0_ & 0x00000002) != 0); } + /** * optional string birth_date = 2; * @@ -293,6 +310,7 @@ public String getBirthDate() { return s; } } + /** * optional string birth_date = 2; * @@ -315,6 +333,7 @@ public com.google.protobuf.ByteString getBirthDateBytes() { @SuppressWarnings("serial") private volatile Object nationality_ = ""; + /** * optional string nationality = 3; * @@ -324,6 +343,7 @@ public com.google.protobuf.ByteString getBirthDateBytes() { public boolean hasNationality() { return ((bitField0_ & 0x00000004) != 0); } + /** * optional string nationality = 3; * @@ -341,6 +361,7 @@ public String getNationality() { return s; } } + /** * optional string nationality = 3; * @@ -361,6 +382,7 @@ public com.google.protobuf.ByteString getNationalityBytes() { public static final int GENRE_FIELD_NUMBER = 4; private int genre_ = 0; + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -370,6 +392,7 @@ public com.google.protobuf.ByteString getNationalityBytes() { public boolean hasGenre() { return ((bitField0_ & 0x00000008) != 0); } + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -379,6 +402,7 @@ public boolean hasGenre() { public int getGenreValue() { return genre_; } + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -593,6 +617,7 @@ protected Builder newBuilderForType(BuilderParent parent) { Builder builder = new Builder(parent); return builder; } + /** Protobuf type {@code examples.spanner.music.SingerInfo} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder @@ -808,6 +833,7 @@ public Builder mergeFrom( private int bitField0_; private long singerId_; + /** * optional int64 singer_id = 1; * @@ -817,6 +843,7 @@ public Builder mergeFrom( public boolean hasSingerId() { return ((bitField0_ & 0x00000001) != 0); } + /** * optional int64 singer_id = 1; * @@ -826,6 +853,7 @@ public boolean hasSingerId() { public long getSingerId() { return singerId_; } + /** * optional int64 singer_id = 1; * @@ -839,6 +867,7 @@ public Builder setSingerId(long value) { onChanged(); return this; } + /** * optional int64 singer_id = 1; * @@ -852,6 +881,7 @@ public Builder clearSingerId() { } private Object birthDate_ = ""; + /** * optional string birth_date = 2; * @@ -860,6 +890,7 @@ public Builder clearSingerId() { public boolean hasBirthDate() { return ((bitField0_ & 0x00000002) != 0); } + /** * optional string birth_date = 2; * @@ -876,6 +907,7 @@ public String getBirthDate() { return (String) ref; } } + /** * optional string birth_date = 2; * @@ -892,6 +924,7 @@ public com.google.protobuf.ByteString getBirthDateBytes() { return (com.google.protobuf.ByteString) ref; } } + /** * optional string birth_date = 2; * @@ -907,6 +940,7 @@ public Builder setBirthDate(String value) { onChanged(); return this; } + /** * optional string birth_date = 2; * @@ -918,6 +952,7 @@ public Builder clearBirthDate() { onChanged(); return this; } + /** * optional string birth_date = 2; * @@ -936,6 +971,7 @@ public Builder setBirthDateBytes(com.google.protobuf.ByteString value) { } private Object nationality_ = ""; + /** * optional string nationality = 3; * @@ -944,6 +980,7 @@ public Builder setBirthDateBytes(com.google.protobuf.ByteString value) { public boolean hasNationality() { return ((bitField0_ & 0x00000004) != 0); } + /** * optional string nationality = 3; * @@ -960,6 +997,7 @@ public String getNationality() { return (String) ref; } } + /** * optional string nationality = 3; * @@ -976,6 +1014,7 @@ public com.google.protobuf.ByteString getNationalityBytes() { return (com.google.protobuf.ByteString) ref; } } + /** * optional string nationality = 3; * @@ -991,6 +1030,7 @@ public Builder setNationality(String value) { onChanged(); return this; } + /** * optional string nationality = 3; * @@ -1002,6 +1042,7 @@ public Builder clearNationality() { onChanged(); return this; } + /** * optional string nationality = 3; * @@ -1020,6 +1061,7 @@ public Builder setNationalityBytes(com.google.protobuf.ByteString value) { } private int genre_ = 0; + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -1029,6 +1071,7 @@ public Builder setNationalityBytes(com.google.protobuf.ByteString value) { public boolean hasGenre() { return ((bitField0_ & 0x00000008) != 0); } + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -1038,6 +1081,7 @@ public boolean hasGenre() { public int getGenreValue() { return genre_; } + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -1050,6 +1094,7 @@ public Builder setGenreValue(int value) { onChanged(); return this; } + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -1060,6 +1105,7 @@ public Genre getGenre() { Genre result = Genre.forNumber(genre_); return result == null ? Genre.UNRECOGNIZED : result; } + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -1075,6 +1121,7 @@ public Builder setGenre(Genre value) { onChanged(); return this; } + /** * optional .examples.spanner.music.Genre genre = 4; * @@ -1164,15 +1211,25 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { String[] descriptorData = { - "\n\014singer.proto\022\026examples.spanner.music\"\301" - + "\001\n\nSingerInfo\022\026\n\tsinger_id\030\001 \001(\003H\000\210\001\001\022\027\n" - + "\nbirth_date\030\002 \001(\tH\001\210\001\001\022\030\n\013nationality\030\003 " - + "\001(\tH\002\210\001\001\0221\n\005genre\030\004 \001(\0162\035.examples.spann" - + "er.music.GenreH\003\210\001\001B\014\n\n_singer_idB\r\n\013_bi" - + "rth_dateB\016\n\014_nationalityB\010\n\006_genre*.\n\005Ge" - + "nre\022\007\n\003POP\020\000\022\010\n\004JAZZ\020\001\022\010\n\004FOLK\020\002\022\010\n\004ROCK" - + "\020\003B$\n\023com.example.spannerB\013SingerProtoP\000" - + "b\006proto3" + "\n" + + "\014singer.proto\022\026examples.spanner.music\"\301\001\n\n" + + "SingerInfo\022\026\n" + + "\tsinger_id\030\001 \001(\003H\000\210\001\001\022\027\n" + + "\n" + + "birth_date\030\002 \001(\tH\001\210\001\001\022\030\n" + + "\013nationality\030\003 \001(\tH\002\210\001\001\0221\n" + + "\005genre\030\004" + + " \001(\0162\035.examples.spanner.music.GenreH\003\210\001\001B\014\n\n" + + "_singer_idB\r\n" + + "\013_birth_dateB\016\n" + + "\014_nationalityB\010\n" + + "\006_genre*.\n" + + "\005Genre\022\007\n" + + "\003POP\020\000\022\010\n" + + "\004JAZZ\020\001\022\010\n" + + "\004FOLK\020\002\022\010\n" + + "\004ROCK\020\003B$\n" + + "\023com.example.spannerB\013SingerProtoP\000b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java index a01b00c0f6c3..b917bf87fbe5 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java @@ -98,9 +98,7 @@ */ public class SpannerSample { - /** - * Class to contain singer sample data. - */ + /** Class to contain singer sample data. */ static class Singer { final long singerId; @@ -114,9 +112,7 @@ static class Singer { } } - /** - * Class to contain album sample data. - */ + /** Class to contain album sample data. */ static class Album { final long singerId; @@ -130,9 +126,7 @@ static class Album { } } - /** - * Class to contain performance sample data. - */ + /** Class to contain performance sample data. */ static class Performance { final long singerId; @@ -148,9 +142,7 @@ static class Performance { } } - /** - * Class to contain venue sample data. - */ + /** Class to contain venue sample data. */ static class Venue { final long venueId; @@ -271,30 +263,33 @@ static class Venue { "{\"name\":null," + "\"open\":{\"Monday\":true,\"Tuesday\":false}," + "\"tags\":[\"large\",\"airy\"]}"))); + // [END spanner_insert_datatypes_data] // [START spanner_create_database] - static void createDatabase(DatabaseAdminClient dbAdminClient, - InstanceName instanceName, String databaseId) { + static void createDatabase( + DatabaseAdminClient dbAdminClient, InstanceName instanceName, String databaseId) { CreateDatabaseRequest createDatabaseRequest = CreateDatabaseRequest.newBuilder() .setCreateStatement("CREATE DATABASE `" + databaseId + "`") .setParent(instanceName.toString()) - .addAllExtraStatements(Arrays.asList( - "CREATE TABLE Singers (" - + " SingerId INT64 NOT NULL," - + " FirstName STRING(1024)," - + " LastName STRING(1024)," - + " SingerInfo BYTES(MAX)," - + " FullName STRING(2048) AS " - + " (ARRAY_TO_STRING([FirstName, LastName], \" \")) STORED" - + ") PRIMARY KEY (SingerId)", - "CREATE TABLE Albums (" - + " SingerId INT64 NOT NULL," - + " AlbumId INT64 NOT NULL," - + " AlbumTitle STRING(MAX)" - + ") PRIMARY KEY (SingerId, AlbumId)," - + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")).build(); + .addAllExtraStatements( + Arrays.asList( + "CREATE TABLE Singers (" + + " SingerId INT64 NOT NULL," + + " FirstName STRING(1024)," + + " LastName STRING(1024)," + + " SingerInfo BYTES(MAX)," + + " FullName STRING(2048) AS " + + " (ARRAY_TO_STRING([FirstName, LastName], \" \")) STORED" + + ") PRIMARY KEY (SingerId)", + "CREATE TABLE Albums (" + + " SingerId INT64 NOT NULL," + + " AlbumId INT64 NOT NULL," + + " AlbumTitle STRING(MAX)" + + ") PRIMARY KEY (SingerId, AlbumId)," + + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")) + .build(); try { // Initiate the request which returns an OperationFuture. com.google.spanner.admin.database.v1.Database db = @@ -309,24 +304,27 @@ static void createDatabase(DatabaseAdminClient dbAdminClient, throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_database] // [START spanner_create_table_with_timestamp_column] - static void createTableWithTimestamp(DatabaseAdminClient dbAdminClient, - DatabaseName databaseName) { + static void createTableWithTimestamp( + DatabaseAdminClient dbAdminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - dbAdminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList( - "CREATE TABLE Performances (" - + " SingerId INT64 NOT NULL," - + " VenueId INT64 NOT NULL," - + " EventDate Date," - + " Revenue INT64, " - + " LastUpdateTime TIMESTAMP NOT NULL OPTIONS (allow_commit_timestamp=true)" - + ") PRIMARY KEY (SingerId, VenueId, EventDate)," - + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")).get(); + dbAdminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "CREATE TABLE Performances (" + + " SingerId INT64 NOT NULL," + + " VenueId INT64 NOT NULL," + + " EventDate Date," + + " Revenue INT64, " + + " LastUpdateTime TIMESTAMP NOT NULL OPTIONS (allow_commit_timestamp=true)" + + ") PRIMARY KEY (SingerId, VenueId, EventDate)," + + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")) + .get(); System.out.println( "Created Performances table in database: [" + databaseName.toString() + "]"); } catch (ExecutionException e) { @@ -338,6 +336,7 @@ static void createTableWithTimestamp(DatabaseAdminClient dbAdminClient, throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_table_with_timestamp_column] // [START spanner_insert_data_with_timestamp_column] @@ -360,6 +359,7 @@ static void writeExampleDataWithTimestamp(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_insert_data_with_timestamp_column] // [START spanner_insert_data] @@ -389,6 +389,7 @@ static void writeExampleData(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_insert_data] // [START spanner_delete_data] @@ -414,6 +415,7 @@ static void deleteExampleData(DatabaseClient dbClient) { dbClient.write(mutations); System.out.printf("Records deleted.\n"); } + // [END spanner_delete_data] // [START spanner_query_data] @@ -428,6 +430,7 @@ static void query(DatabaseClient dbClient) { } } } + // [END spanner_query_data] // [START spanner_read_data] @@ -445,15 +448,17 @@ static void read(DatabaseClient dbClient) { } } } + // [END spanner_read_data] // [START spanner_add_column] static void addMarketingBudget(DatabaseAdminClient adminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - adminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList("ALTER TABLE Albums ADD COLUMN MarketingBudget INT64")).get(); + adminClient + .updateDatabaseDdlAsync( + databaseName, Arrays.asList("ALTER TABLE Albums ADD COLUMN MarketingBudget INT64")) + .get(); System.out.println("Added MarketingBudget column"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -464,6 +469,7 @@ static void addMarketingBudget(DatabaseAdminClient adminClient, DatabaseName dat throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_add_column] // Before executing this method, a new column MarketingBudget has to be added to the Albums @@ -493,51 +499,54 @@ static void update(DatabaseClient dbClient) { // This writes all the mutations to Cloud Spanner atomically. dbClient.write(mutations); } + // [END spanner_update_data] // [START spanner_read_write_transaction] static void writeWithTransaction(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Transfer marketing budget from one album to another. We do it in a transaction to - // ensure that the transfer is atomic. - Struct row = - transaction.readRow("Albums", Key.of(2, 2), Arrays.asList("MarketingBudget")); - long album2Budget = row.getLong(0); - // Transaction will only be committed if this condition still holds at the time of - // commit. Otherwise it will be aborted and the callable will be rerun by the - // client library. - long transfer = 200000; - if (album2Budget >= transfer) { - long album1Budget = - transaction - .readRow("Albums", Key.of(1, 1), Arrays.asList("MarketingBudget")) - .getLong(0); - album1Budget += transfer; - album2Budget -= transfer; - transaction.buffer( - Mutation.newUpdateBuilder("Albums") - .set("SingerId") - .to(1) - .set("AlbumId") - .to(1) - .set("MarketingBudget") - .to(album1Budget) - .build()); - transaction.buffer( - Mutation.newUpdateBuilder("Albums") - .set("SingerId") - .to(2) - .set("AlbumId") - .to(2) - .set("MarketingBudget") - .to(album2Budget) - .build()); - } - return null; - }); + .run( + transaction -> { + // Transfer marketing budget from one album to another. We do it in a transaction to + // ensure that the transfer is atomic. + Struct row = + transaction.readRow("Albums", Key.of(2, 2), Arrays.asList("MarketingBudget")); + long album2Budget = row.getLong(0); + // Transaction will only be committed if this condition still holds at the time of + // commit. Otherwise it will be aborted and the callable will be rerun by the + // client library. + long transfer = 200000; + if (album2Budget >= transfer) { + long album1Budget = + transaction + .readRow("Albums", Key.of(1, 1), Arrays.asList("MarketingBudget")) + .getLong(0); + album1Budget += transfer; + album2Budget -= transfer; + transaction.buffer( + Mutation.newUpdateBuilder("Albums") + .set("SingerId") + .to(1) + .set("AlbumId") + .to(1) + .set("MarketingBudget") + .to(album1Budget) + .build()); + transaction.buffer( + Mutation.newUpdateBuilder("Albums") + .set("SingerId") + .to(2) + .set("AlbumId") + .to(2) + .set("MarketingBudget") + .to(album2Budget) + .build()); + } + return null; + }); } + // [END spanner_read_write_transaction] // [START spanner_query_data_with_new_column] @@ -560,15 +569,17 @@ static void queryMarketingBudget(DatabaseClient dbClient) { } } } + // [END spanner_query_data_with_new_column] // [START spanner_create_index] static void addIndex(DatabaseAdminClient adminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - adminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList("CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)")).get(); + adminClient + .updateDatabaseDdlAsync( + databaseName, Arrays.asList("CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)")) + .get(); System.out.println("Added AlbumsByAlbumTitle index"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -579,6 +590,7 @@ static void addIndex(DatabaseAdminClient adminClient, DatabaseName databaseName) throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_index] // Before running this example, add the index AlbumsByAlbumTitle by applying the DDL statement @@ -610,6 +622,7 @@ static void queryUsingIndex(DatabaseClient dbClient) { } } } + // [END spanner_query_data_with_index] // [START spanner_read_data_with_index] @@ -627,17 +640,20 @@ static void readUsingIndex(DatabaseClient dbClient) { } } } + // [END spanner_read_data_with_index] // [START spanner_create_storing_index] static void addStoringIndex(DatabaseAdminClient adminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - adminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList( - "CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) " - + "STORING (MarketingBudget)")).get(); + adminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) " + + "STORING (MarketingBudget)")) + .get(); System.out.println("Added AlbumsByAlbumTitle2 index"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -648,6 +664,7 @@ static void addStoringIndex(DatabaseAdminClient adminClient, DatabaseName databa throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_storing_index] // Before running this example, create a storing index AlbumsByAlbumTitle2 by applying the DDL @@ -672,6 +689,7 @@ static void readStoringIndex(DatabaseClient dbClient) { } } } + // [END spanner_read_data_with_storing_index] // [START spanner_read_only_transaction] @@ -690,7 +708,7 @@ static void readOnlyTransaction(DatabaseClient dbClient) { } // queryResultSet.close() is automatically called here try (ResultSet readResultSet = transaction.read( - "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { + "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { while (readResultSet.next()) { System.out.printf( "%d %d %s\n", @@ -699,6 +717,7 @@ static void readOnlyTransaction(DatabaseClient dbClient) { } // readResultSet.close() is automatically called here } // transaction.close() is automatically called here } + // [END spanner_read_only_transaction] // [START spanner_read_stale_data] @@ -717,17 +736,20 @@ static void readStaleData(DatabaseClient dbClient) { } } } + // [END spanner_read_stale_data] // [START spanner_add_timestamp_column] static void addCommitTimestamp(DatabaseAdminClient adminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - adminClient.updateDatabaseDdlAsync( - databaseName, - Arrays.asList( - "ALTER TABLE Albums ADD COLUMN LastUpdateTime TIMESTAMP " - + "OPTIONS (allow_commit_timestamp=true)")).get(); + adminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "ALTER TABLE Albums ADD COLUMN LastUpdateTime TIMESTAMP " + + "OPTIONS (allow_commit_timestamp=true)")) + .get(); System.out.println("Added LastUpdateTime as a commit timestamp column in Albums table."); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -738,6 +760,7 @@ static void addCommitTimestamp(DatabaseAdminClient adminClient, DatabaseName dat throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_add_timestamp_column] // Before executing this method, a new column MarketingBudget has to be added to the Albums @@ -773,6 +796,7 @@ static void updateWithTimestamp(DatabaseClient dbClient) { // This writes all the mutations to Cloud Spanner atomically. dbClient.write(mutations); } + // [END spanner_update_data_with_timestamp_column] // [START spanner_query_data_with_timestamp_column] @@ -799,6 +823,7 @@ static void queryMarketingBudgetWithTimestamp(DatabaseClient dbClient) { } } } + // [END spanner_query_data_with_timestamp_column] static void querySingersTable(DatabaseClient dbClient) { @@ -865,6 +890,7 @@ static void writeStructExampleData(DatabaseClient dbClient) { dbClient.write(mutations); System.out.println("Inserted example data for struct parameter queries."); } + // [END spanner_write_data_for_struct_queries] static void queryWithStruct(DatabaseClient dbClient) { @@ -946,6 +972,7 @@ static void queryStructField(DatabaseClient dbClient) { } } } + // [END spanner_field_access_on_struct_parameters] // [START spanner_field_access_on_nested_struct_parameters] @@ -992,92 +1019,102 @@ static void queryNestedStructField(DatabaseClient dbClient) { } } } + // [END spanner_field_access_on_nested_struct_parameters] // [START spanner_dml_standard_insert] static void insertUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) " - + " VALUES (10, 'Virginia', 'Watson')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + " VALUES (10, 'Virginia', 'Watson')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.\n", rowCount); + return null; + }); } + // [END spanner_dml_standard_insert] // [START spanner_dml_standard_update] static void updateUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "UPDATE Albums " - + "SET MarketingBudget = MarketingBudget * 2 " - + "WHERE SingerId = 1 and AlbumId = 1"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record updated.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "UPDATE Albums " + + "SET MarketingBudget = MarketingBudget * 2 " + + "WHERE SingerId = 1 and AlbumId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); } + // [END spanner_dml_standard_update] // [START spanner_dml_standard_delete] static void deleteUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = "DELETE FROM Singers WHERE FirstName = 'Alice'"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record deleted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = "DELETE FROM Singers WHERE FirstName = 'Alice'"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record deleted.\n", rowCount); + return null; + }); } + // [END spanner_dml_standard_delete] // [START spanner_dml_standard_update_with_timestamp] static void updateUsingDmlWithTimestamp(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "UPDATE Albums " - + "SET LastUpdateTime = PENDING_COMMIT_TIMESTAMP() WHERE SingerId = 1"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d records updated.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "UPDATE Albums " + + "SET LastUpdateTime = PENDING_COMMIT_TIMESTAMP() WHERE SingerId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d records updated.\n", rowCount); + return null; + }); } + // [END spanner_dml_standard_update_with_timestamp] // [START spanner_dml_write_then_read] static void writeAndReadUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Insert record. - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) " - + " VALUES (11, 'Timothy', 'Campbell')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.\n", rowCount); - // Read newly inserted record. - sql = "SELECT FirstName, LastName FROM Singers WHERE SingerId = 11"; - // We use a try-with-resource block to automatically release resources held by - // ResultSet. - try (ResultSet resultSet = transaction.executeQuery(Statement.of(sql))) { - while (resultSet.next()) { - System.out.printf( - "%s %s\n", - resultSet.getString("FirstName"), resultSet.getString("LastName")); - } - } - return null; - }); + .run( + transaction -> { + // Insert record. + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + " VALUES (11, 'Timothy', 'Campbell')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.\n", rowCount); + // Read newly inserted record. + sql = "SELECT FirstName, LastName FROM Singers WHERE SingerId = 11"; + // We use a try-with-resource block to automatically release resources held by + // ResultSet. + try (ResultSet resultSet = transaction.executeQuery(Statement.of(sql))) { + while (resultSet.next()) { + System.out.printf( + "%s %s\n", resultSet.getString("FirstName"), resultSet.getString("LastName")); + } + } + return null; + }); } + // [END spanner_dml_write_then_read] // [START spanner_dml_structs] @@ -1094,12 +1131,14 @@ static void updateUsingDmlWithStruct(DatabaseClient dbClient) { .build(); dbClient .readWriteTransaction() - .run(transaction -> { - long rowCount = transaction.executeUpdate(s); - System.out.printf("%d record updated.\n", rowCount); - return null; - }); + .run( + transaction -> { + long rowCount = transaction.executeUpdate(s); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); } + // [END spanner_dml_structs] // [START spanner_dml_getting_started_insert] @@ -1107,18 +1146,20 @@ static void writeUsingDml(DatabaseClient dbClient) { // Insert 4 singer records dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) VALUES " - + "(12, 'Melissa', 'Garcia'), " - + "(13, 'Russell', 'Morales'), " - + "(14, 'Jacqueline', 'Long'), " - + "(15, 'Dylan', 'Shaw')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d records inserted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) VALUES " + + "(12, 'Melissa', 'Garcia'), " + + "(13, 'Russell', 'Morales'), " + + "(14, 'Jacqueline', 'Long'), " + + "(15, 'Dylan', 'Shaw')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d records inserted.\n", rowCount); + return null; + }); } + // [END spanner_dml_getting_started_insert] // [START spanner_query_with_parameter] @@ -1141,58 +1182,60 @@ static void queryWithParameter(DatabaseClient dbClient) { } } } + // [END spanner_query_with_parameter] // [START spanner_dml_getting_started_update] static void writeWithTransactionUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Transfer marketing budget from one album to another. We do it in a transaction to - // ensure that the transfer is atomic. - String sql1 = - "SELECT MarketingBudget from Albums WHERE SingerId = 2 and AlbumId = 2"; - ResultSet resultSet = transaction.executeQuery(Statement.of(sql1)); - long album2Budget = 0; - while (resultSet.next()) { - album2Budget = resultSet.getLong("MarketingBudget"); - } - // Transaction will only be committed if this condition still holds at the time of - // commit. Otherwise it will be aborted and the callable will be rerun by the - // client library. - long transfer = 200000; - if (album2Budget >= transfer) { - String sql2 = - "SELECT MarketingBudget from Albums WHERE SingerId = 1 and AlbumId = 1"; - ResultSet resultSet2 = transaction.executeQuery(Statement.of(sql2)); - long album1Budget = 0; - while (resultSet2.next()) { - album1Budget = resultSet2.getLong("MarketingBudget"); - } - album1Budget += transfer; - album2Budget -= transfer; - Statement updateStatement = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = @AlbumBudget " - + "WHERE SingerId = 1 and AlbumId = 1") - .bind("AlbumBudget") - .to(album1Budget) - .build(); - transaction.executeUpdate(updateStatement); - Statement updateStatement2 = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = @AlbumBudget " - + "WHERE SingerId = 2 and AlbumId = 2") - .bind("AlbumBudget") - .to(album2Budget) - .build(); - transaction.executeUpdate(updateStatement2); - } - return null; - }); + .run( + transaction -> { + // Transfer marketing budget from one album to another. We do it in a transaction to + // ensure that the transfer is atomic. + String sql1 = "SELECT MarketingBudget from Albums WHERE SingerId = 2 and AlbumId = 2"; + ResultSet resultSet = transaction.executeQuery(Statement.of(sql1)); + long album2Budget = 0; + while (resultSet.next()) { + album2Budget = resultSet.getLong("MarketingBudget"); + } + // Transaction will only be committed if this condition still holds at the time of + // commit. Otherwise it will be aborted and the callable will be rerun by the + // client library. + long transfer = 200000; + if (album2Budget >= transfer) { + String sql2 = + "SELECT MarketingBudget from Albums WHERE SingerId = 1 and AlbumId = 1"; + ResultSet resultSet2 = transaction.executeQuery(Statement.of(sql2)); + long album1Budget = 0; + while (resultSet2.next()) { + album1Budget = resultSet2.getLong("MarketingBudget"); + } + album1Budget += transfer; + album2Budget -= transfer; + Statement updateStatement = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = @AlbumBudget " + + "WHERE SingerId = 1 and AlbumId = 1") + .bind("AlbumBudget") + .to(album1Budget) + .build(); + transaction.executeUpdate(updateStatement); + Statement updateStatement2 = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = @AlbumBudget " + + "WHERE SingerId = 2 and AlbumId = 2") + .bind("AlbumBudget") + .to(album2Budget) + .build(); + transaction.executeUpdate(updateStatement2); + } + return null; + }); } + // [END spanner_dml_getting_started_update] // [START spanner_dml_partitioned_update] @@ -1201,6 +1244,7 @@ static void updateUsingPartitionedDml(DatabaseClient dbClient) { long rowCount = dbClient.executePartitionedUpdate(Statement.of(sql)); System.out.printf("%d records updated.\n", rowCount); } + // [END spanner_dml_partitioned_update] // [START spanner_dml_partitioned_delete] @@ -1209,58 +1253,64 @@ static void deleteUsingPartitionedDml(DatabaseClient dbClient) { long rowCount = dbClient.executePartitionedUpdate(Statement.of(sql)); System.out.printf("%d records deleted.\n", rowCount); } + // [END spanner_dml_partitioned_delete] // [START spanner_dml_batch_update] static void updateUsingBatchDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - List stmts = new ArrayList(); - String sql = - "INSERT INTO Albums " - + "(SingerId, AlbumId, AlbumTitle, MarketingBudget) " - + "VALUES (1, 3, 'Test Album Title', 10000) "; - stmts.add(Statement.of(sql)); - sql = - "UPDATE Albums " - + "SET MarketingBudget = MarketingBudget * 2 " - + "WHERE SingerId = 1 and AlbumId = 3"; - stmts.add(Statement.of(sql)); - long[] rowCounts; - try { - rowCounts = transaction.batchUpdate(stmts); - } catch (SpannerBatchUpdateException e) { - rowCounts = e.getUpdateCounts(); - } - for (int i = 0; i < rowCounts.length; i++) { - System.out.printf("%d record updated by stmt %d.\n", rowCounts[i], i); - } - return null; - }); + .run( + transaction -> { + List stmts = new ArrayList(); + String sql = + "INSERT INTO Albums " + + "(SingerId, AlbumId, AlbumTitle, MarketingBudget) " + + "VALUES (1, 3, 'Test Album Title', 10000) "; + stmts.add(Statement.of(sql)); + sql = + "UPDATE Albums " + + "SET MarketingBudget = MarketingBudget * 2 " + + "WHERE SingerId = 1 and AlbumId = 3"; + stmts.add(Statement.of(sql)); + long[] rowCounts; + try { + rowCounts = transaction.batchUpdate(stmts); + } catch (SpannerBatchUpdateException e) { + rowCounts = e.getUpdateCounts(); + } + for (int i = 0; i < rowCounts.length; i++) { + System.out.printf("%d record updated by stmt %d.\n", rowCounts[i], i); + } + return null; + }); } + // [END spanner_dml_batch_update] // [START spanner_create_table_with_datatypes] - static void createTableWithDatatypes(DatabaseAdminClient dbAdminClient, - DatabaseName databaseName) { + static void createTableWithDatatypes( + DatabaseAdminClient dbAdminClient, DatabaseName databaseName) { try { // Initiate the request which returns an OperationFuture. - dbAdminClient.updateDatabaseDdlAsync(databaseName, - Arrays.asList( - "CREATE TABLE Venues (" - + " VenueId INT64 NOT NULL," - + " VenueName STRING(100)," - + " VenueInfo BYTES(MAX)," - + " Capacity INT64," - + " AvailableDates ARRAY," - + " LastContactDate DATE," - + " OutdoorVenue BOOL, " - + " PopularityScore FLOAT64, " - + " Revenue NUMERIC, " - + " VenueDetails JSON, " - + " LastUpdateTime TIMESTAMP NOT NULL OPTIONS (allow_commit_timestamp=true)" - + ") PRIMARY KEY (VenueId)")).get(); + dbAdminClient + .updateDatabaseDdlAsync( + databaseName, + Arrays.asList( + "CREATE TABLE Venues (" + + " VenueId INT64 NOT NULL," + + " VenueName STRING(100)," + + " VenueInfo BYTES(MAX)," + + " Capacity INT64," + + " AvailableDates ARRAY," + + " LastContactDate DATE," + + " OutdoorVenue BOOL, " + + " PopularityScore FLOAT64, " + + " Revenue NUMERIC, " + + " VenueDetails JSON, " + + " LastUpdateTime TIMESTAMP NOT NULL OPTIONS (allow_commit_timestamp=true)" + + ") PRIMARY KEY (VenueId)")) + .get(); System.out.println("Created Venues table in database: [" + databaseName.toString() + "]"); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -1271,6 +1321,7 @@ static void createTableWithDatatypes(DatabaseAdminClient dbAdminClient, throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_table_with_datatypes] // [START spanner_insert_datatypes_data] @@ -1305,6 +1356,7 @@ static void writeDatatypesData(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_insert_datatypes_data] // [START spanner_query_with_array_parameter] @@ -1330,6 +1382,7 @@ static void queryWithArray(DatabaseClient dbClient) { } } } + // [END spanner_query_with_array_parameter] // [START spanner_query_with_bool_parameter] @@ -1352,6 +1405,7 @@ static void queryWithBool(DatabaseClient dbClient) { } } } + // [END spanner_query_with_bool_parameter] // [START spanner_query_with_bytes_parameter] @@ -1371,6 +1425,7 @@ static void queryWithBytes(DatabaseClient dbClient) { } } } + // [END spanner_query_with_bytes_parameter] // [START spanner_query_with_date_parameter] @@ -1393,6 +1448,7 @@ static void queryWithDate(DatabaseClient dbClient) { } } } + // [END spanner_query_with_date_parameter] // [START spanner_query_with_float_parameter] @@ -1415,6 +1471,7 @@ static void queryWithFloat(DatabaseClient dbClient) { } } } + // [END spanner_query_with_float_parameter] // [START spanner_query_with_int_parameter] @@ -1436,6 +1493,7 @@ static void queryWithInt(DatabaseClient dbClient) { } } } + // [END spanner_query_with_int_parameter] // [START spanner_query_with_string_parameter] @@ -1454,6 +1512,7 @@ static void queryWithString(DatabaseClient dbClient) { } } } + // [END spanner_query_with_string_parameter] // [START spanner_query_with_timestamp_parameter] @@ -1476,6 +1535,7 @@ static void queryWithTimestampParameter(DatabaseClient dbClient) { } } } + // [END spanner_query_with_timestamp_parameter] // [START spanner_query_with_numeric_parameter] @@ -1499,6 +1559,7 @@ static void queryWithNumeric(DatabaseClient dbClient) { } } } + // [END spanner_query_with_numeric_parameter] // [START spanner_create_client_with_query_options] @@ -1506,8 +1567,8 @@ static void clientWithQueryOptions(DatabaseId db) { SpannerOptions options = SpannerOptions.newBuilder() .setDefaultQueryOptions( - db, QueryOptions - .newBuilder() + db, + QueryOptions.newBuilder() .setOptimizerVersion("1") // The list of available statistics packages can be found by querying the // "INFORMATION_SCHEMA.SPANNER_STATISTICS" table. @@ -1526,6 +1587,7 @@ static void clientWithQueryOptions(DatabaseId db) { } } } + // [END spanner_create_client_with_query_options] // [START spanner_query_with_query_options] @@ -1534,15 +1596,15 @@ static void queryWithQueryOptions(DatabaseClient dbClient) { dbClient .singleUse() .executeQuery( - Statement - .newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums") - .withQueryOptions(QueryOptions - .newBuilder() - .setOptimizerVersion("1") - // The list of available statistics packages can be found by querying the - // "INFORMATION_SCHEMA.SPANNER_STATISTICS" table. - .setOptimizerStatisticsPackage("latest") - .build()) + Statement.newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums") + .withQueryOptions( + QueryOptions.newBuilder() + .setOptimizerVersion("1") + // The list of available statistics packages can be found by querying + // the + // "INFORMATION_SCHEMA.SPANNER_STATISTICS" table. + .setOptimizerStatisticsPackage("latest") + .build()) .build())) { while (resultSet.next()) { System.out.printf( @@ -1550,27 +1612,41 @@ static void queryWithQueryOptions(DatabaseClient dbClient) { } } } + // [END spanner_query_with_query_options] // [START spanner_create_backup] - static void createBackup(DatabaseAdminClient dbAdminClient, String projectId, String instanceId, - String databaseId, String backupId, Timestamp versionTime) { + static void createBackup( + DatabaseAdminClient dbAdminClient, + String projectId, + String instanceId, + String databaseId, + String backupId, + Timestamp versionTime) { // Set expire time to 14 days from now. Timestamp expireTime = - Timestamp.newBuilder().setSeconds(TimeUnit.MILLISECONDS.toSeconds(( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14)))).build(); + Timestamp.newBuilder() + .setSeconds( + TimeUnit.MILLISECONDS.toSeconds( + (System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14)))) + .build(); BackupName backupName = BackupName.of(projectId, instanceId, backupId); - Backup backup = Backup.newBuilder() - .setName(backupName.toString()) - .setDatabase(DatabaseName.of(projectId, instanceId, databaseId).toString()) - .setExpireTime(expireTime).setVersionTime(versionTime).build(); + Backup backup = + Backup.newBuilder() + .setName(backupName.toString()) + .setDatabase(DatabaseName.of(projectId, instanceId, databaseId).toString()) + .setExpireTime(expireTime) + .setVersionTime(versionTime) + .build(); // Initiate the request which returns an OperationFuture. System.out.println("Creating backup [" + backupId + "]..."); try { // Wait for the backup operation to complete. - backup = dbAdminClient.createBackupAsync( - InstanceName.of(projectId, instanceId), backup, backupId).get(); + backup = + dbAdminClient + .createBackupAsync(InstanceName.of(projectId, instanceId), backup, backupId) + .get(); System.out.println("Created backup [" + backup.getName() + "]"); } catch (ExecutionException e) { throw SpannerExceptionFactory.asSpannerException(e); @@ -1586,34 +1662,44 @@ static void createBackup(DatabaseAdminClient dbAdminClient, String projectId, St backup.getName(), backup.getSizeBytes(), java.time.OffsetDateTime.ofInstant( - Instant.ofEpochSecond(backup.getCreateTime().getSeconds(), - backup.getCreateTime().getNanos()), ZoneId.systemDefault()), + Instant.ofEpochSecond( + backup.getCreateTime().getSeconds(), backup.getCreateTime().getNanos()), + ZoneId.systemDefault()), java.time.OffsetDateTime.ofInstant( - Instant.ofEpochSecond(backup.getVersionTime().getSeconds(), - backup.getVersionTime().getNanos()), ZoneId.systemDefault())) - ); + Instant.ofEpochSecond( + backup.getVersionTime().getSeconds(), backup.getVersionTime().getNanos()), + ZoneId.systemDefault()))); } + // [END spanner_create_backup] // [START spanner_cancel_backup_create] static void cancelCreateBackup( - DatabaseAdminClient dbAdminClient, String projectId, String instanceId, - String databaseId, String backupId) { + DatabaseAdminClient dbAdminClient, + String projectId, + String instanceId, + String databaseId, + String backupId) { // Set expire time to 14 days from now. Timestamp expireTime = - Timestamp.newBuilder().setSeconds(TimeUnit.MILLISECONDS.toSeconds(( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14)))).build(); + Timestamp.newBuilder() + .setSeconds( + TimeUnit.MILLISECONDS.toSeconds( + (System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14)))) + .build(); BackupName backupName = BackupName.of(projectId, instanceId, backupId); - Backup backup = Backup.newBuilder() - .setName(backupName.toString()) - .setDatabase(DatabaseName.of(projectId, instanceId, databaseId).toString()) - .setExpireTime(expireTime).build(); + Backup backup = + Backup.newBuilder() + .setName(backupName.toString()) + .setDatabase(DatabaseName.of(projectId, instanceId, databaseId).toString()) + .setExpireTime(expireTime) + .build(); try { // Start the creation of a backup. System.out.println("Creating backup [" + backupId + "]..."); - OperationFuture op = dbAdminClient.createBackupAsync( - InstanceName.of(projectId, instanceId), backup, backupId); + OperationFuture op = + dbAdminClient.createBackupAsync(InstanceName.of(projectId, instanceId), backup, backupId); // Try to cancel the backup operation. System.out.println("Cancelling create backup operation for [" + backupId + "]..."); @@ -1633,8 +1719,10 @@ static void cancelCreateBackup( if (pollingFuture.get().getErrorCode() == null) { // Backup was created before it could be cancelled. Delete the backup. dbAdminClient.deleteBackup(backupName); - System.out.println("Backup operation for [" + backupId - + "] successfully finished before it could be cancelled"); + System.out.println( + "Backup operation for [" + + backupId + + "] successfully finished before it could be cancelled"); } else if (pollingFuture.get().getErrorCode().getCode() == StatusCode.Code.CANCELLED) { System.out.println("Backup operation for [" + backupId + "] successfully cancelled"); } @@ -1644,13 +1732,16 @@ static void cancelCreateBackup( throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_cancel_backup_create] // [START spanner_list_backup_operations] static void listBackupOperations( DatabaseAdminClient databaseAdminClient, - String projectId, String instanceId, - String databaseId, String backupId) { + String projectId, + String instanceId, + String databaseId, + String backupId) { InstanceName instanceName = InstanceName.of(projectId, instanceId); // Get 'CreateBackup' operations for the sample database. String filter = @@ -1661,9 +1752,11 @@ static void listBackupOperations( DatabaseName.of(projectId, instanceId, databaseId).toString()); ListBackupOperationsRequest listBackupOperationsRequest = ListBackupOperationsRequest.newBuilder() - .setParent(instanceName.toString()).setFilter(filter).build(); - ListBackupOperationsPagedResponse createBackupOperations - = databaseAdminClient.listBackupOperations(listBackupOperationsRequest); + .setParent(instanceName.toString()) + .setFilter(filter) + .build(); + ListBackupOperationsPagedResponse createBackupOperations = + databaseAdminClient.listBackupOperations(listBackupOperationsRequest); System.out.println("Create Backup Operations:"); for (Operation op : createBackupOperations.iterateAll()) { try { @@ -1680,21 +1773,23 @@ static void listBackupOperations( } } // Get copy backup operations for the sample database. - filter = String.format( - "(metadata.@type:type.googleapis.com/" - + "google.spanner.admin.database.v1.CopyBackupMetadata) " - + "AND (metadata.source_backup:%s)", - BackupName.of(projectId, instanceId, backupId).toString()); + filter = + String.format( + "(metadata.@type:type.googleapis.com/" + + "google.spanner.admin.database.v1.CopyBackupMetadata) " + + "AND (metadata.source_backup:%s)", + BackupName.of(projectId, instanceId, backupId).toString()); listBackupOperationsRequest = ListBackupOperationsRequest.newBuilder() - .setParent(instanceName.toString()).setFilter(filter).build(); + .setParent(instanceName.toString()) + .setFilter(filter) + .build(); ListBackupOperationsPagedResponse copyBackupOperations = databaseAdminClient.listBackupOperations(listBackupOperationsRequest); System.out.println("Copy Backup Operations:"); for (Operation op : copyBackupOperations.iterateAll()) { try { - CopyBackupMetadata copyBackupMetadata = - op.getMetadata().unpack(CopyBackupMetadata.class); + CopyBackupMetadata copyBackupMetadata = op.getMetadata().unpack(CopyBackupMetadata.class); System.out.println( String.format( "Copy Backup %s on backup %s pending: %d%% complete", @@ -1707,84 +1802,102 @@ static void listBackupOperations( } } } + // [END spanner_list_backup_operations] // [START spanner_list_database_operations] static void listDatabaseOperations( DatabaseAdminClient dbAdminClient, String projectId, String instanceId) { // Get optimize restored database operations. - com.google.cloud.Timestamp last24Hours = com.google.cloud.Timestamp.ofTimeSecondsAndNanos( - TimeUnit.SECONDS.convert( - TimeUnit.HOURS.convert(com.google.cloud.Timestamp.now().getSeconds(), TimeUnit.SECONDS) - - 24, - TimeUnit.HOURS), 0); - String filter = String.format("(metadata.@type:type.googleapis.com/" - + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) AND " - + "(metadata.progress.start_time > \"%s\")", last24Hours); + com.google.cloud.Timestamp last24Hours = + com.google.cloud.Timestamp.ofTimeSecondsAndNanos( + TimeUnit.SECONDS.convert( + TimeUnit.HOURS.convert( + com.google.cloud.Timestamp.now().getSeconds(), TimeUnit.SECONDS) + - 24, + TimeUnit.HOURS), + 0); + String filter = + String.format( + "(metadata.@type:type.googleapis.com/" + + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) AND " + + "(metadata.progress.start_time > \"%s\")", + last24Hours); ListDatabaseOperationsRequest listDatabaseOperationsRequest = ListDatabaseOperationsRequest.newBuilder() - .setParent(com.google.spanner.admin.instance.v1.InstanceName.of( - projectId, instanceId).toString()).setFilter(filter).build(); - ListDatabaseOperationsPagedResponse pagedResponse - = dbAdminClient.listDatabaseOperations(listDatabaseOperationsRequest); + .setParent( + com.google.spanner.admin.instance.v1.InstanceName.of(projectId, instanceId) + .toString()) + .setFilter(filter) + .build(); + ListDatabaseOperationsPagedResponse pagedResponse = + dbAdminClient.listDatabaseOperations(listDatabaseOperationsRequest); for (Operation op : pagedResponse.iterateAll()) { try { OptimizeRestoredDatabaseMetadata metadata = op.getMetadata().unpack(OptimizeRestoredDatabaseMetadata.class); - System.out.println(String.format( - "Database %s restored from backup is %d%% optimized", - metadata.getName(), - metadata.getProgress().getProgressPercent())); + System.out.println( + String.format( + "Database %s restored from backup is %d%% optimized", + metadata.getName(), metadata.getProgress().getProgressPercent())); } catch (InvalidProtocolBufferException e) { // The returned operation does not contain OptimizeRestoredDatabaseMetadata. System.err.println(e.getMessage()); } } } + // [END spanner_list_database_operations] // [START spanner_list_backups] static void listBackups( - DatabaseAdminClient dbAdminClient, String projectId, - String instanceId, String databaseId, String backupId) { + DatabaseAdminClient dbAdminClient, + String projectId, + String instanceId, + String databaseId, + String backupId) { InstanceName instanceName = InstanceName.of(projectId, instanceId); // List all backups. System.out.println("All backups:"); - for (Backup backup : dbAdminClient.listBackups( - instanceName.toString()).iterateAll()) { + for (Backup backup : dbAdminClient.listBackups(instanceName.toString()).iterateAll()) { System.out.println(backup); } // List all backups with a specific name. - System.out.println( - String.format("All backups with backup name containing \"%s\":", backupId)); + System.out.println(String.format("All backups with backup name containing \"%s\":", backupId)); ListBackupsRequest listBackupsRequest = - ListBackupsRequest.newBuilder().setParent(instanceName.toString()) - .setFilter(String.format("name:%s", backupId)).build(); + ListBackupsRequest.newBuilder() + .setParent(instanceName.toString()) + .setFilter(String.format("name:%s", backupId)) + .build(); for (Backup backup : dbAdminClient.listBackups(listBackupsRequest).iterateAll()) { System.out.println(backup); } // List all backups for databases whose name contains a certain text. System.out.println( - String.format( - "All backups for databases with a name containing \"%s\":", databaseId)); + String.format("All backups for databases with a name containing \"%s\":", databaseId)); listBackupsRequest = - ListBackupsRequest.newBuilder().setParent(instanceName.toString()) - .setFilter(String.format("database:%s", databaseId)).build(); + ListBackupsRequest.newBuilder() + .setParent(instanceName.toString()) + .setFilter(String.format("database:%s", databaseId)) + .build(); for (Backup backup : dbAdminClient.listBackups(listBackupsRequest).iterateAll()) { System.out.println(backup); } // List all backups that expire before a certain time. - com.google.cloud.Timestamp expireTime = com.google.cloud.Timestamp.ofTimeMicroseconds( - TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(30), TimeUnit.MILLISECONDS)); + com.google.cloud.Timestamp expireTime = + com.google.cloud.Timestamp.ofTimeMicroseconds( + TimeUnit.MICROSECONDS.convert( + System.currentTimeMillis() + TimeUnit.DAYS.toMillis(30), TimeUnit.MILLISECONDS)); System.out.println(String.format("All backups that expire before %s:", expireTime)); listBackupsRequest = - ListBackupsRequest.newBuilder().setParent(instanceName.toString()) - .setFilter(String.format("expire_time < \"%s\"", expireTime)).build(); + ListBackupsRequest.newBuilder() + .setParent(instanceName.toString()) + .setFilter(String.format("expire_time < \"%s\"", expireTime)) + .build(); for (Backup backup : dbAdminClient.listBackups(listBackupsRequest).iterateAll()) { System.out.println(backup); @@ -1792,8 +1905,10 @@ static void listBackups( // List all backups with size greater than a certain number of bytes. listBackupsRequest = - ListBackupsRequest.newBuilder().setParent(instanceName.toString()) - .setFilter("size_bytes > 100").build(); + ListBackupsRequest.newBuilder() + .setParent(instanceName.toString()) + .setFilter("size_bytes > 100") + .build(); System.out.println("All backups with size greater than 100 bytes:"); for (Backup backup : dbAdminClient.listBackups(listBackupsRequest).iterateAll()) { @@ -1801,17 +1916,19 @@ static void listBackups( } // List all backups with a create time after a certain timestamp and that are also ready. - com.google.cloud.Timestamp createTime = com.google.cloud.Timestamp.ofTimeMicroseconds( - TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1), TimeUnit.MILLISECONDS)); + com.google.cloud.Timestamp createTime = + com.google.cloud.Timestamp.ofTimeMicroseconds( + TimeUnit.MICROSECONDS.convert( + System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1), TimeUnit.MILLISECONDS)); System.out.println( - String.format( - "All databases created after %s and that are ready:", createTime.toString())); + String.format("All databases created after %s and that are ready:", createTime.toString())); listBackupsRequest = - ListBackupsRequest.newBuilder().setParent(instanceName.toString()) - .setFilter(String.format( - "create_time >= \"%s\" AND state:READY", createTime.toString())).build(); + ListBackupsRequest.newBuilder() + .setParent(instanceName.toString()) + .setFilter( + String.format("create_time >= \"%s\" AND state:READY", createTime.toString())) + .build(); for (Backup backup : dbAdminClient.listBackups(listBackupsRequest).iterateAll()) { System.out.println(backup); } @@ -1833,6 +1950,7 @@ static void listBackups( } } } + // [END spanner_list_backups] // [START spanner_restore_backup] @@ -1845,14 +1963,16 @@ static void restoreBackup( BackupName backupName = BackupName.of(projectId, instanceId, backupId); Backup backup = dbAdminClient.getBackup(backupName); // Initiate the request which returns an OperationFuture. - System.out.println(String.format( - "Restoring backup [%s] to database [%s]...", backup.getName(), restoreToDatabaseId)); + System.out.println( + String.format( + "Restoring backup [%s] to database [%s]...", backup.getName(), restoreToDatabaseId)); try { RestoreDatabaseRequest request = RestoreDatabaseRequest.newBuilder() .setParent(InstanceName.of(projectId, instanceId).toString()) .setDatabaseId(restoreToDatabaseId) - .setBackup(backupName.toString()).build(); + .setBackup(backupName.toString()) + .build(); OperationFuture op = dbAdminClient.restoreDatabaseAsync(request); // Wait until the database has been restored. @@ -1866,18 +1986,21 @@ static void restoreBackup( + db.getName() + "] from [" + restoreInfo.getBackupInfo().getBackup() - + "] with version time [" + backupInfo.getVersionTime() + "]"); + + "] with version time [" + + backupInfo.getVersionTime() + + "]"); } catch (ExecutionException e) { throw SpannerExceptionFactory.newSpannerException(e.getCause()); } catch (InterruptedException e) { throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_restore_backup] // [START spanner_update_backup] - static void updateBackup(DatabaseAdminClient dbAdminClient, String projectId, - String instanceId, String backupId) { + static void updateBackup( + DatabaseAdminClient dbAdminClient, String projectId, String instanceId, String backupId) { BackupName backupName = BackupName.of(projectId, instanceId, backupId); // Get current backup metadata. @@ -1893,27 +2016,30 @@ static void updateBackup(DatabaseAdminClient dbAdminClient, String projectId, // New Expire Time must be less than Max Expire Time newExpireTime = - newExpireTime.compareTo(com.google.cloud.Timestamp.fromProto(backup.getMaxExpireTime())) - < 0 ? newExpireTime : com.google.cloud.Timestamp.fromProto(backup.getMaxExpireTime()); + newExpireTime.compareTo(com.google.cloud.Timestamp.fromProto(backup.getMaxExpireTime())) < 0 + ? newExpireTime + : com.google.cloud.Timestamp.fromProto(backup.getMaxExpireTime()); - System.out.println(String.format( - "Updating expire time of backup [%s] to %s...", - backupId.toString(), - java.time.OffsetDateTime.ofInstant( - Instant.ofEpochSecond(newExpireTime.getSeconds(), - newExpireTime.getNanos()), ZoneId.systemDefault()))); + System.out.println( + String.format( + "Updating expire time of backup [%s] to %s...", + backupId.toString(), + java.time.OffsetDateTime.ofInstant( + Instant.ofEpochSecond(newExpireTime.getSeconds(), newExpireTime.getNanos()), + ZoneId.systemDefault()))); // Update expire time. backup = backup.toBuilder().setExpireTime(newExpireTime.toProto()).build(); - dbAdminClient.updateBackup(backup, - FieldMask.newBuilder().addAllPaths(Lists.newArrayList("expire_time")).build()); + dbAdminClient.updateBackup( + backup, FieldMask.newBuilder().addAllPaths(Lists.newArrayList("expire_time")).build()); System.out.println("Updated backup [" + backupId + "]"); } + // [END spanner_update_backup] // [START spanner_delete_backup] - static void deleteBackup(DatabaseAdminClient dbAdminClient, - String project, String instance, String backupId) { + static void deleteBackup( + DatabaseAdminClient dbAdminClient, String project, String instance, String backupId) { BackupName backupName = BackupName.of(project, instance, backupId); // Delete the backup. @@ -1931,6 +2057,7 @@ static void deleteBackup(DatabaseAdminClient dbAdminClient, } } } + // [END spanner_delete_backup] static void run( @@ -1941,8 +2068,11 @@ static void run( String backupId) { switch (command) { case "createdatabase": - createDatabase(dbAdminClient, InstanceName.of(database.getInstanceId().getProject(), - database.getInstanceId().getInstance()), database.getDatabase()); + createDatabase( + dbAdminClient, + InstanceName.of( + database.getInstanceId().getProject(), database.getInstanceId().getInstance()), + database.getDatabase()); break; case "write": writeExampleData(dbClient); @@ -1957,8 +2087,12 @@ static void run( read(dbClient); break; case "addmarketingbudget": - addMarketingBudget(dbAdminClient, DatabaseName.of(database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase())); + addMarketingBudget( + dbAdminClient, + DatabaseName.of( + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase())); break; case "update": update(dbClient); @@ -1970,8 +2104,12 @@ static void run( queryMarketingBudget(dbClient); break; case "addindex": - addIndex(dbAdminClient, DatabaseName.of(database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase())); + addIndex( + dbAdminClient, + DatabaseName.of( + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase())); break; case "readindex": readUsingIndex(dbClient); @@ -1980,8 +2118,12 @@ static void run( queryUsingIndex(dbClient); break; case "addstoringindex": - addStoringIndex(dbAdminClient, DatabaseName.of(database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase())); + addStoringIndex( + dbAdminClient, + DatabaseName.of( + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase())); break; case "readstoringindex": readStoringIndex(dbClient); @@ -1993,8 +2135,12 @@ static void run( readStaleData(dbClient); break; case "addcommittimestamp": - addCommitTimestamp(dbAdminClient, DatabaseName.of(database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase())); + addCommitTimestamp( + dbAdminClient, + DatabaseName.of( + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase())); break; case "updatewithtimestamp": updateWithTimestamp(dbClient); @@ -2003,9 +2149,12 @@ static void run( queryMarketingBudgetWithTimestamp(dbClient); break; case "createtablewithtimestamp": - createTableWithTimestamp(dbAdminClient, - DatabaseName.of(database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase())); + createTableWithTimestamp( + dbAdminClient, + DatabaseName.of( + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase())); break; case "writewithtimestamp": writeExampleDataWithTimestamp(dbClient); @@ -2068,9 +2217,12 @@ static void run( updateUsingBatchDml(dbClient); break; case "createtablewithdatatypes": - createTableWithDatatypes(dbAdminClient, - DatabaseName.of(database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase())); + createTableWithDatatypes( + dbAdminClient, + DatabaseName.of( + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase())); break; case "writedatatypesdata": writeDatatypesData(dbClient); @@ -2109,41 +2261,65 @@ static void run( queryWithQueryOptions(dbClient); break; case "createbackup": - createBackup(dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase(), - backupId, getVersionTime(dbClient)); + createBackup( + dbAdminClient, + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase(), + backupId, + getVersionTime(dbClient)); break; case "cancelcreatebackup": cancelCreateBackup( dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase(), + database.getInstanceId().getInstance(), + database.getDatabase(), backupId + "_cancel"); break; case "listbackupoperations": - listBackupOperations(dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase(), backupId); + listBackupOperations( + dbAdminClient, + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase(), + backupId); break; case "listdatabaseoperations": - listDatabaseOperations(dbAdminClient, database.getInstanceId().getProject(), + listDatabaseOperations( + dbAdminClient, + database.getInstanceId().getProject(), database.getInstanceId().getInstance()); break; case "listbackups": - listBackups(dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), database.getDatabase(), backupId); + listBackups( + dbAdminClient, + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + database.getDatabase(), + backupId); break; case "restorebackup": restoreBackup( - dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), backupId, database.getDatabase()); + dbAdminClient, + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + backupId, + database.getDatabase()); break; case "updatebackup": - updateBackup(dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), backupId); + updateBackup( + dbAdminClient, + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + backupId); break; case "deletebackup": - deleteBackup(dbAdminClient, database.getInstanceId().getProject(), - database.getInstanceId().getInstance(), backupId); + deleteBackup( + dbAdminClient, + database.getInstanceId().getProject(), + database.getInstanceId().getInstance(), + backupId); break; default: printUsageAndExit(); @@ -2153,8 +2329,8 @@ static void run( static Timestamp getVersionTime(DatabaseClient dbClient) { // Generates a version time for the backup com.google.cloud.Timestamp versionTime; - try (ResultSet resultSet = dbClient.singleUse() - .executeQuery(Statement.of("SELECT CURRENT_TIMESTAMP()"))) { + try (ResultSet resultSet = + dbClient.singleUse().executeQuery(Statement.of("SELECT CURRENT_TIMESTAMP()"))) { resultSet.next(); versionTime = resultSet.getTimestamp(0); } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/StatementTimeoutExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/StatementTimeoutExample.java index 3e75b2fed6a0..7ed32ef34628 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/StatementTimeoutExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/StatementTimeoutExample.java @@ -49,35 +49,40 @@ static void executeSqlWithTimeout() { } static void executeSqlWithTimeout(DatabaseClient client) { - CallContextConfigurator configurator = new CallContextConfigurator() { - public ApiCallContext configure(ApiCallContext context, ReqT request, - MethodDescriptor method) { - // DML uses the ExecuteSql RPC. - if (method == SpannerGrpc.getExecuteSqlMethod()) { - // NOTE: You can use a GrpcCallContext to set a custom timeout for a single RPC - // invocation. This timeout can however ONLY BE SHORTER than the default timeout - // for the RPC. If you set a timeout that is longer than the default timeout, then - // the default timeout will be used. - return GrpcCallContext.createDefault() - .withCallOptions(CallOptions.DEFAULT.withDeadlineAfter(60L, TimeUnit.SECONDS)); - } - // Return null to indicate that the default should be used for other methods. - return null; - } - }; + CallContextConfigurator configurator = + new CallContextConfigurator() { + public ApiCallContext configure( + ApiCallContext context, ReqT request, MethodDescriptor method) { + // DML uses the ExecuteSql RPC. + if (method == SpannerGrpc.getExecuteSqlMethod()) { + // NOTE: You can use a GrpcCallContext to set a custom timeout for a single RPC + // invocation. This timeout can however ONLY BE SHORTER than the default timeout + // for the RPC. If you set a timeout that is longer than the default timeout, then + // the default timeout will be used. + return GrpcCallContext.createDefault() + .withCallOptions(CallOptions.DEFAULT.withDeadlineAfter(60L, TimeUnit.SECONDS)); + } + // Return null to indicate that the default should be used for other methods. + return null; + } + }; // Create a context that uses the custom call configuration. Context context = Context.current().withValue(SpannerOptions.CALL_CONTEXT_CONFIGURATOR_KEY, configurator); // Run the transaction in the custom context. - context.run(() -> - client.readWriteTransaction().run(transaction -> { - String sql = "INSERT INTO Singers (SingerId, FirstName, LastName)\n" - + "VALUES (20, 'George', 'Washington')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.%n", rowCount); - return null; - }) - ); + context.run( + () -> + client + .readWriteTransaction() + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName)\n" + + "VALUES (20, 'George', 'Washington')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.%n", rowCount); + return null; + })); } // [END spanner_set_statement_timeout] } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/TagSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/TagSample.java index d8124d3ae267..4752ce242e58 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/TagSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/TagSample.java @@ -21,9 +21,7 @@ import com.google.cloud.spanner.ResultSet; import com.google.cloud.spanner.Statement; -/** - * Sample showing how to add transaction and query tags to Cloud Spanner operations. - */ +/** Sample showing how to add transaction and query tags to Cloud Spanner operations. */ public class TagSample { // [START spanner_set_transaction_tag] @@ -33,59 +31,59 @@ static void setTransactionTag(DatabaseClient databaseClient) { // transaction. databaseClient .readWriteTransaction(Options.tag("app=concert,env=dev")) - .run(transaction -> { - // Sets the request tag to "app=concert,env=dev,action=update". - // This request tag will only be set on this request. - transaction.executeUpdate( - Statement.of("UPDATE Venues" - + " SET Capacity = CAST(Capacity/4 AS INT64)" - + " WHERE OutdoorVenue = false"), - Options.tag("app=concert,env=dev,action=update")); - System.out.println("Venue capacities updated."); + .run( + transaction -> { + // Sets the request tag to "app=concert,env=dev,action=update". + // This request tag will only be set on this request. + transaction.executeUpdate( + Statement.of( + "UPDATE Venues" + + " SET Capacity = CAST(Capacity/4 AS INT64)" + + " WHERE OutdoorVenue = false"), + Options.tag("app=concert,env=dev,action=update")); + System.out.println("Venue capacities updated."); - Statement insertStatement = Statement.newBuilder( - "INSERT INTO Venues" - + " (VenueId, VenueName, Capacity, OutdoorVenue, LastUpdateTime)" - + " VALUES (" - + " @venueId, @venueName, @capacity, @outdoorVenue, PENDING_COMMIT_TIMESTAMP()" - + " )") - .bind("venueId") - .to(81) - .bind("venueName") - .to("Venue 81") - .bind("capacity") - .to(1440) - .bind("outdoorVenue") - .to(true) - .build(); + Statement insertStatement = + Statement.newBuilder( + "INSERT INTO Venues (VenueId, VenueName, Capacity, OutdoorVenue," + + " LastUpdateTime) VALUES ( @venueId, @venueName, @capacity," + + " @outdoorVenue, PENDING_COMMIT_TIMESTAMP() )") + .bind("venueId") + .to(81) + .bind("venueName") + .to("Venue 81") + .bind("capacity") + .to(1440) + .bind("outdoorVenue") + .to(true) + .build(); - // Sets the request tag to "app=concert,env=dev,action=insert". - // This request tag will only be set on this request. - transaction.executeUpdate( - insertStatement, - Options.tag("app=concert,env=dev,action=insert")); - System.out.println("New venue inserted."); + // Sets the request tag to "app=concert,env=dev,action=insert". + // This request tag will only be set on this request. + transaction.executeUpdate( + insertStatement, Options.tag("app=concert,env=dev,action=insert")); + System.out.println("New venue inserted."); - return null; - }); + return null; + }); } + // [END spanner_set_transaction_tag] // [START spanner_set_request_tag] static void setRequestTag(DatabaseClient databaseClient) { // Sets the request tag to "app=concert,env=dev,action=select". // This request tag will only be set on this request. - try (ResultSet resultSet = databaseClient - .singleUse() - .executeQuery( - Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"), - Options.tag("app=concert,env=dev,action=select"))) { + try (ResultSet resultSet = + databaseClient + .singleUse() + .executeQuery( + Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"), + Options.tag("app=concert,env=dev,action=select"))) { while (resultSet.next()) { System.out.printf( "SingerId: %d, AlbumId: %d, AlbumTitle: %s\n", - resultSet.getLong(0), - resultSet.getLong(1), - resultSet.getString(2)); + resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); } } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/TransactionTimeoutExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/TransactionTimeoutExample.java index c9b92c74fbb5..5fe8bccf1108 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/TransactionTimeoutExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/TransactionTimeoutExample.java @@ -52,8 +52,8 @@ static void executeTransactionWithTimeout( String databaseId, long timeoutValue, TimeUnit timeoutUnit) { - try (Spanner spanner = SpannerOptions.newBuilder().setProjectId(projectId).build() - .getService()) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseClient client = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); // Create a gRPC context with a deadline and with cancellation. diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java index 3c73a7591d19..cbc1534bd222 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java @@ -51,8 +51,9 @@ static void executeQueryWithUnnamedParameters( .readWriteTransaction() .run( transaction -> { - Statement statement = statementFactory - .withUnnamedParameters("INSERT INTO Students(StudentId, Name, IsNRI, AvgMarks, " + Statement statement = + statementFactory.withUnnamedParameters( + "INSERT INTO Students(StudentId, Name, IsNRI, AvgMarks, " + "JoinedAt, PinCode, CreatedAt) VALUES(?, ?, ?, ?, ?, ?, ?)", 1000001, "Google", diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java index 57bb8e9159bd..c5deb624aeb4 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java @@ -44,21 +44,22 @@ static void updateDatabase() { updateDatabase(projectId, instanceId, databaseId); } - static void updateDatabase( - String projectId, String instanceId, String databaseId) { + static void updateDatabase(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { final Database database = Database.newBuilder() .setName(DatabaseName.of(projectId, instanceId, databaseId).toString()) - .setEnableDropProtection(true).build(); + .setEnableDropProtection(true) + .build(); final UpdateDatabaseRequest updateDatabaseRequest = UpdateDatabaseRequest.newBuilder() .setDatabase(database) .setUpdateMask( - FieldMask.newBuilder().addAllPaths( - Lists.newArrayList("enable_drop_protection")).build()) + FieldMask.newBuilder() + .addAllPaths(Lists.newArrayList("enable_drop_protection")) + .build()) .build(); OperationFuture operation = databaseAdminClient.updateDatabaseAsync(updateDatabaseRequest); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSample.java index 701240cb1290..c9d0719bd568 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSample.java @@ -16,7 +16,7 @@ package com.example.spanner; -//[START spanner_update_database_with_default_leader] +// [START spanner_update_database_with_default_leader] import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerException; @@ -41,7 +41,7 @@ static void updateDatabaseWithDefaultLeader() { static void updateDatabaseWithDefaultLeader( String projectId, String instanceId, String databaseId, String defaultLeader) { try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) { databaseAdminClient .updateDatabaseDdlAsync( @@ -49,11 +49,8 @@ static void updateDatabaseWithDefaultLeader( Collections.singletonList( String.format( "ALTER DATABASE `%s` SET OPTIONS (default_leader = '%s')", - databaseId, - defaultLeader - ) - ) - ).get(); + databaseId, defaultLeader))) + .get(); System.out.println("Updated default leader to " + defaultLeader); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. @@ -65,4 +62,4 @@ static void updateDatabaseWithDefaultLeader( } } } -//[END spanner_update_database_with_default_leader] +// [END spanner_update_database_with_default_leader] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateInstanceConfigSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateInstanceConfigSample.java index c10175abe1bf..f7632ac05ae9 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateInstanceConfigSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateInstanceConfigSample.java @@ -41,10 +41,7 @@ static void updateInstanceConfig() { static void updateInstanceConfig(String projectId, String instanceConfigId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { final InstanceConfigName instanceConfigName = InstanceConfigName.of(projectId, instanceConfigId); @@ -52,24 +49,28 @@ static void updateInstanceConfig(String projectId, String instanceConfigId) { InstanceConfig.newBuilder() .setName(instanceConfigName.toString()) .setDisplayName("updated custom instance config") - .putLabels("updated", "true").build(); + .putLabels("updated", "true") + .build(); /** - * The field mask must always be specified; this prevents any future - * fields in [InstanceConfig][google.spanner.admin.instance.v1.InstanceConfig] - * from being erased accidentally by clients that do not know about them. + * The field mask must always be specified; this prevents any future fields in + * [InstanceConfig][google.spanner.admin.instance.v1.InstanceConfig] from being erased + * accidentally by clients that do not know about them. */ final UpdateInstanceConfigRequest updateInstanceConfigRequest = UpdateInstanceConfigRequest.newBuilder() .setInstanceConfig(instanceConfig) .setUpdateMask( - FieldMask.newBuilder().addAllPaths(ImmutableList.of("display_name", "labels")) - .build()).build(); + FieldMask.newBuilder() + .addAllPaths(ImmutableList.of("display_name", "labels")) + .build()) + .build(); try { - System.out.printf("Waiting for update operation on %s to complete...\n", - instanceConfigName); + System.out.printf( + "Waiting for update operation on %s to complete...\n", instanceConfigName); InstanceConfig instanceConfigResult = - instanceAdminClient.updateInstanceConfigAsync( - updateInstanceConfigRequest).get(5, TimeUnit.MINUTES); + instanceAdminClient + .updateInstanceConfigAsync(updateInstanceConfigRequest) + .get(5, TimeUnit.MINUTES); System.out.printf( "Updated instance configuration %s with new display name %s\n", instanceConfigResult.getName(), instanceConfig.getDisplayName()); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateUsingDmlReturningSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateUsingDmlReturningSample.java index 7632148dea05..987a4fc7827d 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateUsingDmlReturningSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/UpdateUsingDmlReturningSample.java @@ -37,10 +37,7 @@ static void updateUsingDmlReturning() { static void updateUsingDmlReturning(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); // Update MarketingBudget column for records satisfying diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/AddAndDropDatabaseRole.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/AddAndDropDatabaseRole.java index 8df22402c21d..66e38cdcdd61 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/AddAndDropDatabaseRole.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/AddAndDropDatabaseRole.java @@ -42,10 +42,7 @@ static void addAndDropDatabaseRole() { static void addAndDropDatabaseRole( String projectId, String instanceId, String databaseId, String parentRole, String childRole) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient(); OperationFuture operation = adminClient.updateDatabaseDdl( diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CopyBackupSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CopyBackupSample.java index 3b3c192a5a52..1fa3273ce153 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CopyBackupSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CopyBackupSample.java @@ -41,36 +41,35 @@ static void copyBackup() { String sourceBackupId = "my-backup"; String destinationBackupId = "my-destination-backup"; try (Spanner spanner = - SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); copyBackup(databaseAdminClient, projectId, instanceId, sourceBackupId, destinationBackupId); } } static void copyBackup( - DatabaseAdminClient databaseAdminClient, - String projectId, - String instanceId, - String sourceBackupId, - String destinationBackupId) { + DatabaseAdminClient databaseAdminClient, + String projectId, + String instanceId, + String sourceBackupId, + String destinationBackupId) { Timestamp expireTime = - Timestamp.ofTimeMicroseconds( - TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), - TimeUnit.MILLISECONDS)); + Timestamp.ofTimeMicroseconds( + TimeUnit.MICROSECONDS.convert( + System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); // Creates a copy of an existing backup. Backup destinationBackup = - databaseAdminClient - .newBackupBuilder(BackupId.of(projectId, instanceId, destinationBackupId)) - .setExpireTime(expireTime) - .build(); + databaseAdminClient + .newBackupBuilder(BackupId.of(projectId, instanceId, destinationBackupId)) + .setExpireTime(expireTime) + .build(); // Initiate the request which returns an OperationFuture. System.out.println("Copying backup [" + destinationBackup.getId() + "]..."); OperationFuture operation = - databaseAdminClient.copyBackup( - BackupId.of(projectId, instanceId, sourceBackupId), destinationBackup); + databaseAdminClient.copyBackup( + BackupId.of(projectId, instanceId, sourceBackupId), destinationBackup); try { // Wait for the backup operation to complete. destinationBackup = operation.get(); @@ -83,18 +82,18 @@ static void copyBackup( // Load the metadata of the new backup from the server. destinationBackup = destinationBackup.reload(); System.out.println( - String.format( - "Backup %s of size %d bytes was copied at %s for version of database at %s", - destinationBackup.getId().getName(), - destinationBackup.getSize(), - LocalDateTime.ofEpochSecond( - destinationBackup.getProto().getCreateTime().getSeconds(), - destinationBackup.getProto().getCreateTime().getNanos(), - OffsetDateTime.now().getOffset()), - LocalDateTime.ofEpochSecond( - destinationBackup.getProto().getVersionTime().getSeconds(), - destinationBackup.getProto().getVersionTime().getNanos(), - OffsetDateTime.now().getOffset()))); + String.format( + "Backup %s of size %d bytes was copied at %s for version of database at %s", + destinationBackup.getId().getName(), + destinationBackup.getSize(), + LocalDateTime.ofEpochSecond( + destinationBackup.getProto().getCreateTime().getSeconds(), + destinationBackup.getProto().getCreateTime().getNanos(), + OffsetDateTime.now().getOffset()), + LocalDateTime.ofEpochSecond( + destinationBackup.getProto().getVersionTime().getSeconds(), + destinationBackup.getProto().getVersionTime().getNanos(), + OffsetDateTime.now().getOffset()))); return; } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateBackupWithEncryptionKey.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateBackupWithEncryptionKey.java index 23ddd6991750..041d20cf8223 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateBackupWithEncryptionKey.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateBackupWithEncryptionKey.java @@ -50,29 +50,32 @@ static void createBackupWithEncryptionKey() throws InterruptedException { SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient(); createBackupWithEncryptionKey( - adminClient, - projectId, - instanceId, - databaseId, - backupId, - kmsKeyName); + adminClient, projectId, instanceId, databaseId, backupId, kmsKeyName); } } - static Void createBackupWithEncryptionKey(DatabaseAdminClient adminClient, - String projectId, String instanceId, String databaseId, String backupId, String kmsKeyName) + static Void createBackupWithEncryptionKey( + DatabaseAdminClient adminClient, + String projectId, + String instanceId, + String databaseId, + String backupId, + String kmsKeyName) throws InterruptedException { // Set expire time to 14 days from now. - final Timestamp expireTime = Timestamp.ofTimeMicroseconds(TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); - final Backup backupToCreate = adminClient - .newBackupBuilder(BackupId.of(projectId, instanceId, backupId)) - .setDatabase(DatabaseId.of(projectId, instanceId, databaseId)) - .setExpireTime(expireTime) - .setEncryptionConfig(EncryptionConfigs.customerManagedEncryption(kmsKeyName)) - .build(); - final OperationFuture operation = adminClient - .createBackup(backupToCreate); + final Timestamp expireTime = + Timestamp.ofTimeMicroseconds( + TimeUnit.MICROSECONDS.convert( + System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); + final Backup backupToCreate = + adminClient + .newBackupBuilder(BackupId.of(projectId, instanceId, backupId)) + .setDatabase(DatabaseId.of(projectId, instanceId, databaseId)) + .setExpireTime(expireTime) + .setEncryptionConfig(EncryptionConfigs.customerManagedEncryption(kmsKeyName)) + .build(); + final OperationFuture operation = + adminClient.createBackup(backupToCreate); Backup backup; try { @@ -98,8 +101,7 @@ static Void createBackupWithEncryptionKey(DatabaseAdminClient adminClient, backup.getProto().getCreateTime().getSeconds(), backup.getProto().getCreateTime().getNanos(), OffsetDateTime.now().getOffset()), - kmsKeyName - ); + kmsKeyName); return null; } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithDefaultLeaderSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithDefaultLeaderSample.java index 8bfc6422cff6..61c7d5967e0b 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithDefaultLeaderSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithDefaultLeaderSample.java @@ -16,7 +16,7 @@ package com.example.spanner.admin.archived; -//[START spanner_create_database_with_default_leader] +// [START spanner_create_database_with_default_leader] import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.spanner.Database; @@ -42,14 +42,11 @@ static void createDatabaseWithDefaultLeader() { static void createDatabaseWithDefaultLeader( String projectId, String instanceId, String databaseId, String defaultLeader) { - try (Spanner spanner = SpannerOptions - .newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); - final OperationFuture operation = databaseAdminClient - .createDatabase( + final OperationFuture operation = + databaseAdminClient.createDatabase( instanceId, databaseId, Arrays.asList( @@ -65,10 +62,13 @@ static void createDatabaseWithDefaultLeader( + " AlbumTitle STRING(MAX)" + ") PRIMARY KEY (SingerId, AlbumId)," + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE", - "ALTER DATABASE " + "`" + databaseId + "`" - + " SET OPTIONS ( default_leader = '" + defaultLeader + "' )" - ) - ); + "ALTER DATABASE " + + "`" + + databaseId + + "`" + + " SET OPTIONS ( default_leader = '" + + defaultLeader + + "' )")); final Database database = operation.get(); System.out.println("Created database [" + database.getId() + "]"); System.out.println("\tDefault leader: " + database.getDefaultLeader()); @@ -82,4 +82,4 @@ static void createDatabaseWithDefaultLeader( } } } -//[END spanner_create_database_with_default_leader] +// [END spanner_create_database_with_default_leader] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithEncryptionKey.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithEncryptionKey.java index 2064423547e4..faeccbbe01c2 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithEncryptionKey.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithEncryptionKey.java @@ -45,45 +45,44 @@ static void createDatabaseWithEncryptionKey() { try (Spanner spanner = SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient(); - createDatabaseWithEncryptionKey( - adminClient, - projectId, - instanceId, - databaseId, - kmsKeyName); + createDatabaseWithEncryptionKey(adminClient, projectId, instanceId, databaseId, kmsKeyName); } } - static void createDatabaseWithEncryptionKey(DatabaseAdminClient adminClient, - String projectId, String instanceId, String databaseId, String kmsKeyName) { - final Database databaseToCreate = adminClient - .newDatabaseBuilder(DatabaseId.of(projectId, instanceId, databaseId)) - .setEncryptionConfig(EncryptionConfigs.customerManagedEncryption(kmsKeyName)) - .build(); - final OperationFuture operation = adminClient - .createDatabase(databaseToCreate, Arrays.asList( - "CREATE TABLE Singers (" - + " SingerId INT64 NOT NULL," - + " FirstName STRING(1024)," - + " LastName STRING(1024)," - + " SingerInfo BYTES(MAX)" - + ") PRIMARY KEY (SingerId)", - "CREATE TABLE Albums (" - + " SingerId INT64 NOT NULL," - + " AlbumId INT64 NOT NULL," - + " AlbumTitle STRING(MAX)" - + ") PRIMARY KEY (SingerId, AlbumId)," - + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE" - )); + static void createDatabaseWithEncryptionKey( + DatabaseAdminClient adminClient, + String projectId, + String instanceId, + String databaseId, + String kmsKeyName) { + final Database databaseToCreate = + adminClient + .newDatabaseBuilder(DatabaseId.of(projectId, instanceId, databaseId)) + .setEncryptionConfig(EncryptionConfigs.customerManagedEncryption(kmsKeyName)) + .build(); + final OperationFuture operation = + adminClient.createDatabase( + databaseToCreate, + Arrays.asList( + "CREATE TABLE Singers (" + + " SingerId INT64 NOT NULL," + + " FirstName STRING(1024)," + + " LastName STRING(1024)," + + " SingerInfo BYTES(MAX)" + + ") PRIMARY KEY (SingerId)", + "CREATE TABLE Albums (" + + " SingerId INT64 NOT NULL," + + " AlbumId INT64 NOT NULL," + + " AlbumTitle STRING(MAX)" + + ") PRIMARY KEY (SingerId, AlbumId)," + + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")); try { System.out.println("Waiting for operation to complete..."); Database createdDatabase = operation.get(120, TimeUnit.SECONDS); System.out.printf( "Database %s created with encryption key %s%n", - createdDatabase.getId(), - createdDatabase.getEncryptionConfig().getKmsKeyName() - ); + createdDatabase.getId(), createdDatabase.getEncryptionConfig().getKmsKeyName()); } catch (ExecutionException e) { // If the operation failed during execution, expose the cause. throw SpannerExceptionFactory.asSpannerException(e.getCause()); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithVersionRetentionPeriodSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithVersionRetentionPeriodSample.java index 1dea5af2045c..0de9d979e827 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithVersionRetentionPeriodSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateDatabaseWithVersionRetentionPeriodSample.java @@ -41,13 +41,16 @@ static void createDatabaseWithVersionRetentionPeriod() { try (Spanner spanner = SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient(); - createDatabaseWithVersionRetentionPeriod(adminClient, instanceId, databaseId, - versionRetentionPeriod); + createDatabaseWithVersionRetentionPeriod( + adminClient, instanceId, databaseId, versionRetentionPeriod); } } - static void createDatabaseWithVersionRetentionPeriod(DatabaseAdminClient adminClient, - String instanceId, String databaseId, String versionRetentionPeriod) { + static void createDatabaseWithVersionRetentionPeriod( + DatabaseAdminClient adminClient, + String instanceId, + String databaseId, + String versionRetentionPeriod) { OperationFuture op = adminClient.createDatabase( instanceId, @@ -65,9 +68,13 @@ static void createDatabaseWithVersionRetentionPeriod(DatabaseAdminClient adminCl + " AlbumTitle STRING(MAX)" + ") PRIMARY KEY (SingerId, AlbumId)," + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE", - "ALTER DATABASE " + "`" + databaseId + "`" - + " SET OPTIONS ( version_retention_period = '" + versionRetentionPeriod + "' )" - )); + "ALTER DATABASE " + + "`" + + databaseId + + "`" + + " SET OPTIONS ( version_retention_period = '" + + versionRetentionPeriod + + "' )")); try { Database database = op.get(); System.out.println("Created database [" + database.getId() + "]"); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateInstanceExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateInstanceExample.java index a17784d874b4..43bd733c11b1 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateInstanceExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateInstanceExample.java @@ -16,7 +16,7 @@ package com.example.spanner.admin.archived; -//[START spanner_create_instance] +// [START spanner_create_instance] import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.spanner.Instance; import com.google.cloud.spanner.InstanceAdminClient; @@ -70,4 +70,4 @@ static void createInstance(String projectId, String instanceId) { } } } -//[END spanner_create_instance] +// [END spanner_create_instance] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateInstanceWithProcessingUnitsExample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateInstanceWithProcessingUnitsExample.java index 95d4f1b67375..e9db98089a93 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateInstanceWithProcessingUnitsExample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/CreateInstanceWithProcessingUnitsExample.java @@ -16,7 +16,7 @@ package com.example.spanner.admin.archived; -//[START spanner_create_instance_with_processing_units] +// [START spanner_create_instance_with_processing_units] import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.spanner.Instance; @@ -51,12 +51,12 @@ static void createInstance(String projectId, String instanceId) { // Creates a new instance System.out.printf("Creating instance %s.%n", instanceId); OperationFuture operation = - instanceAdminClient.createInstance(InstanceInfo - .newBuilder(InstanceId.of(projectId, instanceId)) - .setInstanceConfigId(InstanceConfigId.of(projectId, configId)) - .setProcessingUnits(processingUnits) - .setDisplayName(displayName) - .build()); + instanceAdminClient.createInstance( + InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId)) + .setInstanceConfigId(InstanceConfigId.of(projectId, configId)) + .setProcessingUnits(processingUnits) + .setDisplayName(displayName) + .build()); // Wait for the createInstance operation to finish. System.out.printf("Waiting for operation on %s to complete...%n", instanceId); @@ -65,12 +65,13 @@ static void createInstance(String projectId, String instanceId) { System.out.printf("Created instance %s.%n", createdInstance.getId().getInstance()); Instance instance = instanceAdminClient.getInstance(instanceId); - System.out.printf("Instance %s has %d processing units.%n", instance.getId().getInstance(), - instance.getProcessingUnits()); + System.out.printf( + "Instance %s has %d processing units.%n", + instance.getId().getInstance(), instance.getProcessingUnits()); } catch (Exception e) { System.out.printf("Error: %s.%n", e.getMessage()); } spanner.close(); } } -//[END spanner_create_instance_with_processing_units] +// [END spanner_create_instance_with_processing_units] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/EnableFineGrainedAccess.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/EnableFineGrainedAccess.java index cc373f50f60b..96a0ec7f9b2a 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/EnableFineGrainedAccess.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/EnableFineGrainedAccess.java @@ -46,10 +46,7 @@ static void enableFineGrainedAccess( String title, String role) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient(); Policy policy = adminClient.getDatabaseIAMPolicy(instanceId, databaseId, 3); int policyVersion = policy.getVersion(); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/GetDatabaseDdlSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/GetDatabaseDdlSample.java index c7f56f496950..1f01a0fcf3a7 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/GetDatabaseDdlSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/GetDatabaseDdlSample.java @@ -16,7 +16,7 @@ package com.example.spanner.admin.archived; -//[START spanner_get_database_ddl] +// [START spanner_get_database_ddl] import com.google.cloud.spanner.DatabaseAdminClient; import com.google.cloud.spanner.Spanner; @@ -33,13 +33,9 @@ static void getDatabaseDdl() { getDatabaseDdl(projectId, instanceId, databaseId); } - static void getDatabaseDdl( - String projectId, String instanceId, String databaseId) { - try (Spanner spanner = SpannerOptions - .newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + static void getDatabaseDdl(String projectId, String instanceId, String databaseId) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); final List ddls = databaseAdminClient.getDatabaseDdl(instanceId, databaseId); System.out.println("Retrieved database DDL for " + databaseId); @@ -49,4 +45,4 @@ static void getDatabaseDdl( } } } -//[END spanner_get_database_ddl] +// [END spanner_get_database_ddl] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/GetInstanceConfigSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/GetInstanceConfigSample.java index 38b6230b97bf..8f3c0084d027 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/GetInstanceConfigSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/GetInstanceConfigSample.java @@ -16,7 +16,7 @@ package com.example.spanner.admin.archived; -//[START spanner_get_instance_config] +// [START spanner_get_instance_config] import com.google.cloud.spanner.InstanceAdminClient; import com.google.cloud.spanner.InstanceConfig; @@ -33,22 +33,17 @@ static void getInstanceConfig() { } static void getInstanceConfig(String projectId, String instanceConfigName) { - try (Spanner spanner = SpannerOptions - .newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final InstanceAdminClient instanceAdminClient = spanner.getInstanceAdminClient(); - final InstanceConfig instanceConfig = instanceAdminClient - .getInstanceConfig(instanceConfigName); + final InstanceConfig instanceConfig = + instanceAdminClient.getInstanceConfig(instanceConfigName); System.out.printf( "Available leader options for instance config %s: %s%n", - instanceConfig.getId(), - instanceConfig.getLeaderOptions() - ); + instanceConfig.getId(), instanceConfig.getLeaderOptions()); } } } -//[END spanner_get_instance_config] +// [END spanner_get_instance_config] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListDatabaseRoles.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListDatabaseRoles.java index ee31d874ec1a..e0a65a14084d 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListDatabaseRoles.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListDatabaseRoles.java @@ -36,10 +36,7 @@ static void listDatabaseRoles() throws InterruptedException, ExecutionException static void listDatabaseRoles(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient(); String databasePath = DatabaseId.of(projectId, instanceId, databaseId).getName(); System.out.println("List of Database roles"); diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListDatabasesSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListDatabasesSample.java index 4abd2c6f2523..df5e1fb650ba 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListDatabasesSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListDatabasesSample.java @@ -16,7 +16,7 @@ package com.example.spanner.admin.archived; -//[START spanner_list_databases] +// [START spanner_list_databases] import com.google.api.gax.paging.Page; import com.google.cloud.spanner.Database; @@ -34,18 +34,17 @@ static void listDatabases() { } static void listDatabases(String projectId, String instanceId) { - try (Spanner spanner = SpannerOptions - .newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); Page page = databaseAdminClient.listDatabases(instanceId); System.out.println("Databases for projects/" + projectId + "/instances/" + instanceId); while (page != null) { for (Database database : page.iterateAll()) { - final String defaultLeader = database.getDefaultLeader().equals("") - ? "" : "(default leader = " + database.getDefaultLeader() + ")"; + final String defaultLeader = + database.getDefaultLeader().equals("") + ? "" + : "(default leader = " + database.getDefaultLeader() + ")"; System.out.println("\t" + database.getId() + " " + defaultLeader); } page = page.getNextPage(); @@ -53,4 +52,4 @@ static void listDatabases(String projectId, String instanceId) { } } } -//[END spanner_list_databases] +// [END spanner_list_databases] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListInstanceConfigOperationsSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListInstanceConfigOperationsSample.java index 2cf683b4c94f..a960fc74ffd7 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListInstanceConfigOperationsSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListInstanceConfigOperationsSample.java @@ -39,14 +39,13 @@ static void listInstanceConfigOperations(String projectId) { try { System.out.printf( - "Getting list of instance config operations for project %s...\n", - projectId); + "Getting list of instance config operations for project %s...\n", projectId); final Iterable instanceConfigOperations = instanceAdminClient .listInstanceConfigOperations( Options.filter( "(metadata.@type=type.googleapis.com/" - + "google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)")) + + "google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)")) .iterateAll(); for (Operation operation : instanceConfigOperations) { CreateInstanceConfigMetadata metadata = diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListInstanceConfigsSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListInstanceConfigsSample.java index b7753502bace..648ba9ebfc97 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListInstanceConfigsSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/ListInstanceConfigsSample.java @@ -16,7 +16,7 @@ package com.example.spanner.admin.archived; -//[START spanner_list_instance_configs] +// [START spanner_list_instance_configs] import com.google.cloud.spanner.InstanceAdminClient; import com.google.cloud.spanner.InstanceConfig; @@ -32,21 +32,16 @@ static void listInstanceConfigs() { } static void listInstanceConfigs(String projectId) { - try (Spanner spanner = SpannerOptions - .newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final InstanceAdminClient instanceAdminClient = spanner.getInstanceAdminClient(); for (InstanceConfig instanceConfig : instanceAdminClient.listInstanceConfigs().iterateAll()) { System.out.printf( "Available leader options for instance config %s: %s%n", - instanceConfig.getId(), - instanceConfig.getLeaderOptions() - ); + instanceConfig.getId(), instanceConfig.getLeaderOptions()); } } } } -//[END spanner_list_instance_configs] +// [END spanner_list_instance_configs] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgCaseSensitivitySample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgCaseSensitivitySample.java index a9096c0c2e5c..6b036b4f11a0 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgCaseSensitivitySample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgCaseSensitivitySample.java @@ -44,10 +44,7 @@ static void pgCaseSensitivity() { static void pgCaseSensitivity(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); // Spanner PostgreSQL follows the case sensitivity rules of PostgreSQL. This means that: @@ -151,4 +148,4 @@ static void pgCaseSensitivity(String projectId, String instanceId, String databa } } } -// [END spanner_postgresql_identifier_case_sensitivity] \ No newline at end of file +// [END spanner_postgresql_identifier_case_sensitivity] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgInterleavedTableSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgInterleavedTableSample.java index 007843a4a2c5..2868b556fc36 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgInterleavedTableSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgInterleavedTableSample.java @@ -39,10 +39,7 @@ static void pgInterleavedTable() { static void pgInterleavedTable(String projectId, String instanceId, String databaseId) { try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); // The Spanner PostgreSQL dialect extends the PostgreSQL dialect with certain Spanner @@ -78,4 +75,4 @@ static void pgInterleavedTable(String projectId, String instanceId, String datab } } } -// [END spanner_postgresql_interleaved_table] \ No newline at end of file +// [END spanner_postgresql_interleaved_table] diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgSpannerSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgSpannerSample.java index 0ab3a75c9670..a62fbce88708 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgSpannerSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/PgSpannerSample.java @@ -54,7 +54,6 @@ import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; import com.google.spanner.v1.ExecuteSqlRequest; import java.math.BigDecimal; -import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -62,9 +61,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; -/** - * Example code for using the Cloud Spanner PostgreSQL interface. - */ +/** Example code for using the Cloud Spanner PostgreSQL interface. */ public class PgSpannerSample { // [START spanner_postgresql_insert_data] static final List SINGERS = @@ -81,6 +78,7 @@ public class PgSpannerSample { new Album(2, 1, "Green"), new Album(2, 2, "Forever Hold Your Peace"), new Album(2, 3, "Terrified")); + // [END spanner_postgresql_insert_data] /** Class to contain performance sample data. */ @@ -157,6 +155,7 @@ static class Performance { false, 0.72598f, new BigDecimal("390650.99"))); + // [END spanner_postgresql_insert_datatypes_data] /** Class to contain venue sample data. */ @@ -196,9 +195,10 @@ static class Venue { // [START spanner_postgresql_create_database] static void createPostgreSqlDatabase(DatabaseAdminClient dbAdminClient, DatabaseId id) { - OperationFuture op = dbAdminClient.createDatabase( - dbAdminClient.newDatabaseBuilder(id).setDialect(Dialect.POSTGRESQL).build(), - Collections.emptyList()); + OperationFuture op = + dbAdminClient.createDatabase( + dbAdminClient.newDatabaseBuilder(id).setDialect(Dialect.POSTGRESQL).build(), + Collections.emptyList()); try { // Initiate the request which returns an OperationFuture. Database db = op.get(); @@ -212,6 +212,7 @@ static void createPostgreSqlDatabase(DatabaseAdminClient dbAdminClient, Database throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_database] // [START spanner_postgresql_insert_data] @@ -241,6 +242,7 @@ static void writeExampleData(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_postgresql_insert_data] // [START spanner_postgresql_delete_data] @@ -266,48 +268,50 @@ static void deleteExampleData(DatabaseClient dbClient) { dbClient.write(mutations); System.out.printf("Records deleted.\n"); } + // [END spanner_postgresql_delete_data] // [START spanner_postgresql_query_data] static void query(DatabaseClient dbClient) { try (ResultSet resultSet = - dbClient - .singleUse() // Execute a single read or query against Cloud Spanner. - .executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) { + dbClient + .singleUse() // Execute a single read or query against Cloud Spanner. + .executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) { while (resultSet.next()) { System.out.printf( - "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), - resultSet.getString(2)); + "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); } } } + // [END spanner_postgresql_query_data] // [START spanner_postgresql_read_data] static void read(DatabaseClient dbClient) { try (ResultSet resultSet = - dbClient - .singleUse() - .read( - "Albums", - KeySet.all(), // Read all rows in a table. - Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { + dbClient + .singleUse() + .read( + "Albums", + KeySet.all(), // Read all rows in a table. + Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { while (resultSet.next()) { System.out.printf( - "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), - resultSet.getString(2)); + "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); } } } + // [END spanner_postgresql_read_data] // [START spanner_postgresql_add_column] static void addMarketingBudget(DatabaseAdminClient adminClient, DatabaseId dbId) { - OperationFuture op = adminClient.updateDatabaseDdl( - dbId.getInstanceId().getInstance(), - dbId.getDatabase(), - Arrays.asList("ALTER TABLE Albums ADD COLUMN MarketingBudget bigint"), - null); + OperationFuture op = + adminClient.updateDatabaseDdl( + dbId.getInstanceId().getInstance(), + dbId.getDatabase(), + Arrays.asList("ALTER TABLE Albums ADD COLUMN MarketingBudget bigint"), + null); try { // Initiate the request which returns an OperationFuture. op.get(); @@ -321,6 +325,7 @@ static void addMarketingBudget(DatabaseAdminClient adminClient, DatabaseId dbId) throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_add_column] // Before executing this method, a new column MarketingBudget has to be added to the Albums @@ -350,51 +355,54 @@ static void update(DatabaseClient dbClient) { // This writes all the mutations to Cloud Spanner atomically. dbClient.write(mutations); } + // [END spanner_postgresql_update_data] // [START spanner_postgresql_read_write_transaction] static void writeWithTransaction(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Transfer marketing budget from one album to another. We do it in a transaction to - // ensure that the transfer is atomic. - Struct row = - transaction.readRow("Albums", Key.of(2, 2), Arrays.asList("MarketingBudget")); - long album2Budget = row.getLong(0); - // Transaction will only be committed if this condition still holds at the time of - // commit. Otherwise it will be aborted and the callable will be rerun by the - // client library. - long transfer = 200000; - if (album2Budget >= transfer) { - long album1Budget = - transaction - .readRow("Albums", Key.of(1, 1), Arrays.asList("MarketingBudget")) - .getLong(0); - album1Budget += transfer; - album2Budget -= transfer; - transaction.buffer( - Mutation.newUpdateBuilder("Albums") - .set("SingerId") - .to(1) - .set("AlbumId") - .to(1) - .set("MarketingBudget") - .to(album1Budget) - .build()); - transaction.buffer( - Mutation.newUpdateBuilder("Albums") - .set("SingerId") - .to(2) - .set("AlbumId") - .to(2) - .set("MarketingBudget") - .to(album2Budget) - .build()); - } - return null; - }); + .run( + transaction -> { + // Transfer marketing budget from one album to another. We do it in a transaction to + // ensure that the transfer is atomic. + Struct row = + transaction.readRow("Albums", Key.of(2, 2), Arrays.asList("MarketingBudget")); + long album2Budget = row.getLong(0); + // Transaction will only be committed if this condition still holds at the time of + // commit. Otherwise it will be aborted and the callable will be rerun by the + // client library. + long transfer = 200000; + if (album2Budget >= transfer) { + long album1Budget = + transaction + .readRow("Albums", Key.of(1, 1), Arrays.asList("MarketingBudget")) + .getLong(0); + album1Budget += transfer; + album2Budget -= transfer; + transaction.buffer( + Mutation.newUpdateBuilder("Albums") + .set("SingerId") + .to(1) + .set("AlbumId") + .to(1) + .set("MarketingBudget") + .to(album1Budget) + .build()); + transaction.buffer( + Mutation.newUpdateBuilder("Albums") + .set("SingerId") + .to(2) + .set("AlbumId") + .to(2) + .set("MarketingBudget") + .to(album2Budget) + .build()); + } + return null; + }); } + // [END spanner_postgresql_read_write_transaction] // [START spanner_postgresql_query_data_with_new_column] @@ -403,11 +411,13 @@ static void queryMarketingBudget(DatabaseClient dbClient) { // null. A try-with-resource block is used to automatically release resources held by // ResultSet. try (ResultSet resultSet = - dbClient - .singleUse() - .executeQuery(Statement.of("SELECT singerid as \"SingerId\", " - + "albumid as \"AlbumId\", marketingbudget as \"MarketingBudget\" " - + "FROM Albums"))) { + dbClient + .singleUse() + .executeQuery( + Statement.of( + "SELECT singerid as \"SingerId\", " + + "albumid as \"AlbumId\", marketingbudget as \"MarketingBudget\" " + + "FROM Albums"))) { while (resultSet.next()) { System.out.printf( "%d %d %s\n", @@ -415,11 +425,11 @@ static void queryMarketingBudget(DatabaseClient dbClient) { resultSet.getLong("AlbumId"), // We check that the value is non null. ResultSet getters can only be used to retrieve // non null values. - resultSet.isNull("MarketingBudget") ? "NULL" : - resultSet.getLong("MarketingBudget")); + resultSet.isNull("MarketingBudget") ? "NULL" : resultSet.getLong("MarketingBudget")); } } } + // [END spanner_postgresql_query_data_with_new_column] // [START spanner_postgresql_create_index] @@ -443,34 +453,37 @@ static void addIndex(DatabaseAdminClient adminClient, DatabaseId dbId) { throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_index] // [START spanner_postgresql_read_data_with_index] static void readUsingIndex(DatabaseClient dbClient) { try (ResultSet resultSet = - dbClient - .singleUse() - .readUsingIndex( - "Albums", - "AlbumsByAlbumTitle", - KeySet.all(), - Arrays.asList("AlbumId", "AlbumTitle"))) { + dbClient + .singleUse() + .readUsingIndex( + "Albums", + "AlbumsByAlbumTitle", + KeySet.all(), + Arrays.asList("AlbumId", "AlbumTitle"))) { while (resultSet.next()) { System.out.printf("%d %s\n", resultSet.getLong(0), resultSet.getString(1)); } } } + // [END spanner_postgresql_read_data_with_index] // [START spanner_postgresql_create_storing_index] static void addStoringIndex(DatabaseAdminClient adminClient, DatabaseId dbId) { - OperationFuture op = adminClient.updateDatabaseDdl( - dbId.getInstanceId().getInstance(), - dbId.getDatabase(), - Arrays.asList( - "CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) " - + "INCLUDE (MarketingBudget)"), - null); + OperationFuture op = + adminClient.updateDatabaseDdl( + dbId.getInstanceId().getInstance(), + dbId.getDatabase(), + Arrays.asList( + "CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) " + + "INCLUDE (MarketingBudget)"), + null); try { // Initiate the request which returns an OperationFuture. op.get(); @@ -484,6 +497,7 @@ static void addStoringIndex(DatabaseAdminClient adminClient, DatabaseId dbId) { throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_storing_index] // Before running this example, create a storing index AlbumsByAlbumTitle2 by applying the DDL @@ -492,13 +506,13 @@ static void addStoringIndex(DatabaseAdminClient adminClient, DatabaseId dbId) { static void readStoringIndex(DatabaseClient dbClient) { // We can read MarketingBudget also from the index since it stores a copy of MarketingBudget. try (ResultSet resultSet = - dbClient - .singleUse() - .readUsingIndex( - "Albums", - "AlbumsByAlbumTitle2", - KeySet.all(), - Arrays.asList("AlbumId", "AlbumTitle", "MarketingBudget"))) { + dbClient + .singleUse() + .readUsingIndex( + "Albums", + "AlbumsByAlbumTitle2", + KeySet.all(), + Arrays.asList("AlbumId", "AlbumTitle", "MarketingBudget"))) { while (resultSet.next()) { System.out.printf( "%d %s %s\n", @@ -508,6 +522,7 @@ static void readStoringIndex(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_read_data_with_storing_index] // [START spanner_postgresql_read_only_transaction] @@ -521,30 +536,31 @@ static void readOnlyTransaction(DatabaseClient dbClient) { while (queryResultSet.next()) { System.out.printf( "%d %d %s\n", - queryResultSet.getLong(0), queryResultSet.getLong(1), - queryResultSet.getString(2)); + queryResultSet.getLong(0), queryResultSet.getLong(1), queryResultSet.getString(2)); } try (ResultSet readResultSet = - transaction.read( - "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { + transaction.read( + "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { while (readResultSet.next()) { System.out.printf( "%d %d %s\n", - readResultSet.getLong(0), readResultSet.getLong(1), - readResultSet.getString(2)); + readResultSet.getLong(0), readResultSet.getLong(1), readResultSet.getString(2)); } } } } + // [END spanner_postgresql_read_only_transaction] // [START spanner_postgresql_query_singers_table] static void querySingersTable(DatabaseClient dbClient) { try (ResultSet resultSet = - dbClient - .singleUse() - .executeQuery(Statement.of("SELECT singerid as \"SingerId\", " - + "firstname as \"FirstName\", lastname as \"LastName\" FROM Singers"))) { + dbClient + .singleUse() + .executeQuery( + Statement.of( + "SELECT singerid as \"SingerId\", " + + "firstname as \"FirstName\", lastname as \"LastName\" FROM Singers"))) { while (resultSet.next()) { System.out.printf( "%s %s %s\n", @@ -554,26 +570,28 @@ static void querySingersTable(DatabaseClient dbClient) { } } } - // [END spanner_postgresql_query_singers_table] + // [END spanner_postgresql_query_singers_table] // [START spanner_postgresql_dml_getting_started_insert] static void writeUsingDml(DatabaseClient dbClient) { // Insert 4 singer records dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) VALUES " - + "(12, 'Melissa', 'Garcia'), " - + "(13, 'Russell', 'Morales'), " - + "(14, 'Jacqueline', 'Long'), " - + "(15, 'Dylan', 'Shaw')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d records inserted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) VALUES " + + "(12, 'Melissa', 'Garcia'), " + + "(13, 'Russell', 'Morales'), " + + "(14, 'Jacqueline', 'Long'), " + + "(15, 'Dylan', 'Shaw')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d records inserted.\n", rowCount); + return null; + }); } + // [END spanner_postgresql_dml_getting_started_insert] // [START spanner_postgresql_query_with_parameter] @@ -597,60 +615,63 @@ static void queryWithParameter(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_parameter] // [START spanner_postgresql_dml_getting_started_update] static void writeWithTransactionUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Transfer marketing budget from one album to another. We do it in a transaction to - // ensure that the transfer is atomic. - String sql1 = - "SELECT marketingbudget as \"MarketingBudget\" from Albums WHERE " - + "SingerId = 2 and AlbumId = 2"; - ResultSet resultSet = transaction.executeQuery(Statement.of(sql1)); - long album2Budget = 0; - while (resultSet.next()) { - album2Budget = resultSet.getLong("MarketingBudget"); - } - // Transaction will only be committed if this condition still holds at the time of - // commit. Otherwise it will be aborted and the callable will be rerun by the - // client library. - long transfer = 200000; - if (album2Budget >= transfer) { - String sql2 = - "SELECT marketingbudget as \"MarketingBudget\" from Albums WHERE " - + "SingerId = 1 and AlbumId = 1"; - ResultSet resultSet2 = transaction.executeQuery(Statement.of(sql2)); - long album1Budget = 0; - while (resultSet2.next()) { - album1Budget = resultSet2.getLong("MarketingBudget"); - } - album1Budget += transfer; - album2Budget -= transfer; - Statement updateStatement = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = $1 " - + "WHERE SingerId = 1 and AlbumId = 1") - .bind("p1") - .to(album1Budget) - .build(); - transaction.executeUpdate(updateStatement); - Statement updateStatement2 = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = $1 " - + "WHERE SingerId = 2 and AlbumId = 2") - .bind("p1") - .to(album2Budget) - .build(); - transaction.executeUpdate(updateStatement2); - } - return null; - }); + .run( + transaction -> { + // Transfer marketing budget from one album to another. We do it in a transaction to + // ensure that the transfer is atomic. + String sql1 = + "SELECT marketingbudget as \"MarketingBudget\" from Albums WHERE " + + "SingerId = 2 and AlbumId = 2"; + ResultSet resultSet = transaction.executeQuery(Statement.of(sql1)); + long album2Budget = 0; + while (resultSet.next()) { + album2Budget = resultSet.getLong("MarketingBudget"); + } + // Transaction will only be committed if this condition still holds at the time of + // commit. Otherwise it will be aborted and the callable will be rerun by the + // client library. + long transfer = 200000; + if (album2Budget >= transfer) { + String sql2 = + "SELECT marketingbudget as \"MarketingBudget\" from Albums WHERE " + + "SingerId = 1 and AlbumId = 1"; + ResultSet resultSet2 = transaction.executeQuery(Statement.of(sql2)); + long album1Budget = 0; + while (resultSet2.next()) { + album1Budget = resultSet2.getLong("MarketingBudget"); + } + album1Budget += transfer; + album2Budget -= transfer; + Statement updateStatement = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = $1 " + + "WHERE SingerId = 1 and AlbumId = 1") + .bind("p1") + .to(album1Budget) + .build(); + transaction.executeUpdate(updateStatement); + Statement updateStatement2 = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = $1 " + + "WHERE SingerId = 2 and AlbumId = 2") + .bind("p1") + .to(album2Budget) + .build(); + transaction.executeUpdate(updateStatement2); + } + return null; + }); } + // [END spanner_postgresql_dml_getting_started_update] // [START spanner_postgresql_create_table_using_ddl] @@ -690,17 +711,17 @@ static void createTableUsingDdl(DatabaseAdminClient dbAdminClient, DatabaseId id throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_database] // [END spanner_postgresql_create_table_using_ddl] // [START spanner_postgresql_read_stale_data] static void readStaleData(DatabaseClient dbClient) { try (ResultSet resultSet = - dbClient - .singleUse(TimestampBound.ofExactStaleness(15, TimeUnit.SECONDS)) - .read( - "Albums", KeySet.all(), - Arrays.asList("SingerId", "AlbumId", "MarketingBudget"))) { + dbClient + .singleUse(TimestampBound.ofExactStaleness(15, TimeUnit.SECONDS)) + .read( + "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "MarketingBudget"))) { while (resultSet.next()) { System.out.printf( "%d %d %s\n", @@ -710,6 +731,7 @@ static void readStaleData(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_read_stale_data] // Before executing this method, a new column MarketingBudget has to be added to the Albums @@ -745,6 +767,7 @@ static void updateWithTimestamp(DatabaseClient dbClient) { // This writes all the mutations to Cloud Spanner atomically. dbClient.write(mutations); } + // [END spanner_postgresql_update_data_with_timestamp_column] // [START spanner_postgresql_add_timestamp_column] @@ -753,8 +776,7 @@ static void addLastUpdateTimestampColumn(DatabaseAdminClient adminClient, Databa adminClient.updateDatabaseDdl( dbId.getInstanceId().getInstance(), dbId.getDatabase(), - Arrays.asList( - "ALTER TABLE Albums ADD COLUMN LastUpdateTime spanner.commit_timestamp"), + Arrays.asList("ALTER TABLE Albums ADD COLUMN LastUpdateTime spanner.commit_timestamp"), null); try { // Initiate the request which returns an OperationFuture. @@ -769,6 +791,7 @@ static void addLastUpdateTimestampColumn(DatabaseAdminClient adminClient, Databa throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_add_timestamp_column] // [START spanner_postgresql_query_data_with_timestamp_column] @@ -777,14 +800,14 @@ static void queryMarketingBudgetWithTimestamp(DatabaseClient dbClient) { // null. A try-with-resource block is used to automatically release resources held by // ResultSet. try (ResultSet resultSet = - dbClient - .singleUse() - .executeQuery( - Statement.of( - "SELECT singerid as \"SingerId\", albumid as \"AlbumId\", " - + "marketingbudget as \"MarketingBudget\"," - + "lastupdatetime as \"LastUpdateTime\" FROM Albums" - + " ORDER BY LastUpdateTime DESC"))) { + dbClient + .singleUse() + .executeQuery( + Statement.of( + "SELECT singerid as \"SingerId\", albumid as \"AlbumId\", " + + "marketingbudget as \"MarketingBudget\"," + + "lastupdatetime as \"LastUpdateTime\" FROM Albums" + + " ORDER BY LastUpdateTime DESC"))) { while (resultSet.next()) { System.out.printf( "%d %d %s %s\n", @@ -797,6 +820,7 @@ static void queryMarketingBudgetWithTimestamp(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_data_with_timestamp_column] // [START spanner_postgresql_create_table_with_timestamp_column] @@ -827,6 +851,7 @@ static void createTableWithTimestamp(DatabaseAdminClient dbAdminClient, Database throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_table_with_timestamp_column] // [START spanner_postgresql_insert_data_with_timestamp_column] @@ -847,6 +872,7 @@ static void writeExampleDataWithTimestamp(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_postgresql_insert_data_with_timestamp_column] static void queryPerformancesTable(DatabaseClient dbClient) { @@ -854,13 +880,13 @@ static void queryPerformancesTable(DatabaseClient dbClient) { // null. A try-with-resource block is used to automatically release resources held by // ResultSet. try (ResultSet resultSet = - dbClient - .singleUse() - .executeQuery( - Statement.of( - "SELECT singerid as \"SingerId\", venueid as \"VenueId\", " - + "revenue as \"Revenue\", lastupdatetime as \"LastUpdateTime\" " - + "FROM Performances ORDER BY LastUpdateTime DESC"))) { + dbClient + .singleUse() + .executeQuery( + Statement.of( + "SELECT singerid as \"SingerId\", venueid as \"VenueId\", " + + "revenue as \"Revenue\", lastupdatetime as \"LastUpdateTime\" " + + "FROM Performances ORDER BY LastUpdateTime DESC"))) { while (resultSet.next()) { System.out.printf( "%d %d %s %s\n", @@ -878,72 +904,80 @@ static void queryPerformancesTable(DatabaseClient dbClient) { static void insertUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) " - + " VALUES (10, 'Virginia', 'Watson')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + " VALUES (10, 'Virginia', 'Watson')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.\n", rowCount); + return null; + }); } + // [END spanner_postgresql_dml_standard_insert] // [START spanner_postgresql_dml_standard_update] static void updateUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "UPDATE Albums " - + "SET MarketingBudget = MarketingBudget * 2 " - + "WHERE SingerId = 1 and AlbumId = 1"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record updated.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "UPDATE Albums " + + "SET MarketingBudget = MarketingBudget * 2 " + + "WHERE SingerId = 1 and AlbumId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); } + // [END spanner_postgresql_dml_standard_update] // [START spanner_postgresql_dml_standard_delete] static void deleteUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = "DELETE FROM Singers WHERE FirstName = 'Alice'"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record deleted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = "DELETE FROM Singers WHERE FirstName = 'Alice'"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record deleted.\n", rowCount); + return null; + }); } + // [END spanner_postgresql_dml_standard_delete] // [START spanner_postgresql_dml_write_then_read] static void writeAndReadUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Insert record. - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) " - + " VALUES (11, 'Timothy', 'Campbell')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.\n", rowCount); - // Read newly inserted record. - sql = "SELECT firstname as \"FirstName\", lastname as \"LastName\" FROM Singers WHERE " - + "SingerId = 11"; - // We use a try-with-resource block to automatically release resources held by - // ResultSet. - try (ResultSet resultSet = transaction.executeQuery(Statement.of(sql))) { - while (resultSet.next()) { - System.out.printf( - "%s %s\n", - resultSet.getString("FirstName"), resultSet.getString("LastName")); - } - } - return null; - }); + .run( + transaction -> { + // Insert record. + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + " VALUES (11, 'Timothy', 'Campbell')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.\n", rowCount); + // Read newly inserted record. + sql = + "SELECT firstname as \"FirstName\", lastname as \"LastName\" FROM Singers WHERE " + + "SingerId = 11"; + // We use a try-with-resource block to automatically release resources held by + // ResultSet. + try (ResultSet resultSet = transaction.executeQuery(Statement.of(sql))) { + while (resultSet.next()) { + System.out.printf( + "%s %s\n", resultSet.getString("FirstName"), resultSet.getString("LastName")); + } + } + return null; + }); } + // [END spanner_postgresql_dml_write_then_read] // [START spanner_postgresql_dml_partitioned_update] @@ -952,6 +986,7 @@ static void updateUsingPartitionedDml(DatabaseClient dbClient) { long rowCount = dbClient.executePartitionedUpdate(Statement.of(sql)); System.out.printf("%d records updated.\n", rowCount); } + // [END spanner_postgresql_dml_partitioned_update] // [START spanner_postgresql_dml_partitioned_delete] @@ -960,36 +995,39 @@ static void deleteUsingPartitionedDml(DatabaseClient dbClient) { long rowCount = dbClient.executePartitionedUpdate(Statement.of(sql)); System.out.printf("%d records deleted.\n", rowCount); } + // [END spanner_postgresql_dml_partitioned_delete] // [START spanner_postgresql_dml_batch_update] static void updateUsingBatchDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - List stmts = new ArrayList(); - String sql = - "INSERT INTO Albums " - + "(SingerId, AlbumId, AlbumTitle, MarketingBudget) " - + "VALUES (1, 3, 'Test Album Title', 10000) "; - stmts.add(Statement.of(sql)); - sql = - "UPDATE Albums " - + "SET MarketingBudget = MarketingBudget * 2 " - + "WHERE SingerId = 1 and AlbumId = 3"; - stmts.add(Statement.of(sql)); - long[] rowCounts; - try { - rowCounts = transaction.batchUpdate(stmts); - } catch (SpannerBatchUpdateException e) { - rowCounts = e.getUpdateCounts(); - } - for (int i = 0; i < rowCounts.length; i++) { - System.out.printf("%d record updated by stmt %d.\n", rowCounts[i], i); - } - return null; - }); + .run( + transaction -> { + List stmts = new ArrayList(); + String sql = + "INSERT INTO Albums " + + "(SingerId, AlbumId, AlbumTitle, MarketingBudget) " + + "VALUES (1, 3, 'Test Album Title', 10000) "; + stmts.add(Statement.of(sql)); + sql = + "UPDATE Albums " + + "SET MarketingBudget = MarketingBudget * 2 " + + "WHERE SingerId = 1 and AlbumId = 3"; + stmts.add(Statement.of(sql)); + long[] rowCounts; + try { + rowCounts = transaction.batchUpdate(stmts); + } catch (SpannerBatchUpdateException e) { + rowCounts = e.getUpdateCounts(); + } + for (int i = 0; i < rowCounts.length; i++) { + System.out.printf("%d record updated by stmt %d.\n", rowCounts[i], i); + } + return null; + }); } + // [END spanner_postgresql_dml_batch_update] // [START spanner_postgresql_create_table_with_datatypes] @@ -1023,6 +1061,7 @@ static void createTableWithDatatypes(DatabaseAdminClient dbAdminClient, Database throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_postgresql_create_table_with_datatypes] // [START spanner_postgresql_insert_datatypes_data] @@ -1051,6 +1090,7 @@ static void writeDatatypesData(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_postgresql_insert_datatypes_data] // [START spanner_postgresql_query_with_bool_parameter] @@ -1074,6 +1114,7 @@ static void queryWithBool(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_bool_parameter] // [START spanner_postgresql_query_with_bytes_parameter] @@ -1094,6 +1135,7 @@ static void queryWithBytes(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_bytes_parameter] // [START spanner_postgresql_query_with_float_parameter] @@ -1117,6 +1159,7 @@ static void queryWithFloat(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_float_parameter] // [START spanner_postgresql_query_with_int_parameter] @@ -1126,7 +1169,8 @@ static void queryWithInt(DatabaseClient dbClient) { Statement.newBuilder( "SELECT venueid as \"VenueId\", venuename as \"VenueName\", " + "capacity as \"Capacity\" " - + "FROM Venues " + "WHERE Capacity >= $1") + + "FROM Venues " + + "WHERE Capacity >= $1") .bind("p1") .to(exampleInt) .build(); @@ -1140,6 +1184,7 @@ static void queryWithInt(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_int_parameter] // [START spanner_postgresql_query_with_string_parameter] @@ -1159,6 +1204,7 @@ static void queryWithString(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_string_parameter] // [START spanner_postgresql_query_with_timestamp_parameter] @@ -1181,6 +1227,7 @@ static void queryWithTimestampParameter(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_timestamp_parameter] // [START spanner_postgresql_query_with_numeric_parameter] @@ -1203,6 +1250,7 @@ static void queryWithNumeric(DatabaseClient dbClient) { } } } + // [END spanner_postgresql_query_with_numeric_parameter] // [START spanner_postgresql_create_client_with_query_options] @@ -1210,8 +1258,8 @@ static void clientWithQueryOptions(DatabaseId db) { SpannerOptions options = SpannerOptions.newBuilder() .setDefaultQueryOptions( - db, ExecuteSqlRequest.QueryOptions - .newBuilder() + db, + ExecuteSqlRequest.QueryOptions.newBuilder() .setOptimizerVersion("1") // The list of available statistics packages can be found by querying the // "INFORMATION_SCHEMA.spanner_postgresql_STATISTICS" table. @@ -1221,48 +1269,52 @@ static void clientWithQueryOptions(DatabaseId db) { Spanner spanner = options.getService(); DatabaseClient dbClient = spanner.getDatabaseClient(db); try (ResultSet resultSet = - dbClient - .singleUse() - .executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) { + dbClient + .singleUse() + .executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) { while (resultSet.next()) { System.out.printf( "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); } } } + // [END spanner_postgresql_create_client_with_query_options] // [START spanner_postgresql_query_with_query_options] static void queryWithQueryOptions(DatabaseClient dbClient) { try (ResultSet resultSet = - dbClient - .singleUse() - .executeQuery( - Statement - .newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums") - .withQueryOptions(ExecuteSqlRequest.QueryOptions - .newBuilder() - .setOptimizerVersion("1") - // The list of available statistics packages can be found by querying - // the "INFORMATION_SCHEMA.spanner_postgresql_STATISTICS" table. - .setOptimizerStatisticsPackage("latest") - .build()) - .build())) { + dbClient + .singleUse() + .executeQuery( + Statement.newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums") + .withQueryOptions( + ExecuteSqlRequest.QueryOptions.newBuilder() + .setOptimizerVersion("1") + // The list of available statistics packages can be found by querying + // the "INFORMATION_SCHEMA.spanner_postgresql_STATISTICS" table. + .setOptimizerStatisticsPackage("latest") + .build()) + .build())) { while (resultSet.next()) { System.out.printf( "%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); } } } + // [END spanner_postgresql_query_with_query_options] // [START spanner_postgresql_list_backup_operations] static void listBackupOperations(InstanceAdminClient instanceAdminClient, DatabaseId databaseId) { Instance instance = instanceAdminClient.getInstance(databaseId.getInstanceId().getInstance()); // Get create backup operations for the sample database. - Timestamp last24Hours = Timestamp.ofTimeSecondsAndNanos(TimeUnit.SECONDS.convert( - TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24, - TimeUnit.HOURS), 0); + Timestamp last24Hours = + Timestamp.ofTimeSecondsAndNanos( + TimeUnit.SECONDS.convert( + TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24, + TimeUnit.HOURS), + 0); String filter = String.format( "(metadata.database:%s) AND " @@ -1270,8 +1322,8 @@ static void listBackupOperations(InstanceAdminClient instanceAdminClient, Databa + "google.spanner.admin.database.v1.CreateBackupMetadata) AND " + "(metadata.progress.start_time > \"%s\")", databaseId.getName(), last24Hours); - Page operations = instance - .listBackupOperations(Options.filter(filter)); + Page operations = + instance.listBackupOperations(Options.filter(filter)); for (com.google.longrunning.Operation op : operations.iterateAll()) { try { CreateBackupMetadata metadata = op.getMetadata().unpack(CreateBackupMetadata.class); @@ -1287,6 +1339,7 @@ static void listBackupOperations(InstanceAdminClient instanceAdminClient, Databa } } } + // [END spanner_postgresql_list_backup_operations] // [START spanner_postgresql_list_database_operations] @@ -1296,26 +1349,33 @@ static void listDatabaseOperations( InstanceId instanceId) { Instance instance = instanceAdminClient.getInstance(instanceId.getInstance()); // Get optimize restored database operations. - Timestamp last24Hours = Timestamp.ofTimeSecondsAndNanos(TimeUnit.SECONDS.convert( - TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24, - TimeUnit.HOURS), 0); - String filter = String.format("(metadata.@type:type.googleapis.com/" - + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) AND " - + "(metadata.progress.start_time > \"%s\")", last24Hours); + Timestamp last24Hours = + Timestamp.ofTimeSecondsAndNanos( + TimeUnit.SECONDS.convert( + TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24, + TimeUnit.HOURS), + 0); + String filter = + String.format( + "(metadata.@type:type.googleapis.com/" + + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) AND " + + "(metadata.progress.start_time > \"%s\")", + last24Hours); for (Operation op : instance.listDatabaseOperations(Options.filter(filter)).iterateAll()) { try { OptimizeRestoredDatabaseMetadata metadata = op.getMetadata().unpack(OptimizeRestoredDatabaseMetadata.class); - System.out.println(String.format( - "Database %s restored from backup is %d%% optimized", - metadata.getName(), - metadata.getProgress().getProgressPercent())); + System.out.println( + String.format( + "Database %s restored from backup is %d%% optimized", + metadata.getName(), metadata.getProgress().getProgressPercent())); } catch (InvalidProtocolBufferException e) { // The returned operation does not contain OptimizeRestoredDatabaseMetadata. System.err.println(e.getMessage()); } } } + // [END spanner_postgresql_list_database_operations] static void run( diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/RestoreBackupWithEncryptionKey.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/RestoreBackupWithEncryptionKey.java index 087413dbe59f..3f940ca8afde 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/RestoreBackupWithEncryptionKey.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/RestoreBackupWithEncryptionKey.java @@ -46,25 +46,26 @@ static void restoreBackupWithEncryptionKey() { SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient(); restoreBackupWithEncryptionKey( - adminClient, - projectId, - instanceId, - backupId, - databaseId, - kmsKeyName); + adminClient, projectId, instanceId, backupId, databaseId, kmsKeyName); } } - static Void restoreBackupWithEncryptionKey(DatabaseAdminClient adminClient, - String projectId, String instanceId, String backupId, String restoreId, String kmsKeyName) { - final Restore restore = adminClient - .newRestoreBuilder( - BackupId.of(projectId, instanceId, backupId), - DatabaseId.of(projectId, instanceId, restoreId)) - .setEncryptionConfig(EncryptionConfigs.customerManagedEncryption(kmsKeyName)) - .build(); - final OperationFuture operation = adminClient - .restoreDatabase(restore); + static Void restoreBackupWithEncryptionKey( + DatabaseAdminClient adminClient, + String projectId, + String instanceId, + String backupId, + String restoreId, + String kmsKeyName) { + final Restore restore = + adminClient + .newRestoreBuilder( + BackupId.of(projectId, instanceId, backupId), + DatabaseId.of(projectId, instanceId, restoreId)) + .setEncryptionConfig(EncryptionConfigs.customerManagedEncryption(kmsKeyName)) + .build(); + final OperationFuture operation = + adminClient.restoreDatabase(restore); Database database; try { @@ -84,8 +85,7 @@ static Void restoreBackupWithEncryptionKey(DatabaseAdminClient adminClient, database.getRestoreInfo().getSourceDatabase(), database.getId(), database.getRestoreInfo().getBackup(), - database.getEncryptionConfig().getKmsKeyName() - ); + database.getEncryptionConfig().getKmsKeyName()); return null; } } diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/SpannerSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/SpannerSample.java index 98eba6d9442e..915f1c08b529 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/SpannerSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/SpannerSample.java @@ -269,6 +269,7 @@ static String createRestoredSampleDbId(DatabaseId database) { "{\"name\":null," + "\"open\":{\"Monday\":true,\"Tuesday\":false}," + "\"tags\":[\"large\",\"airy\"]}"))); + // [END spanner_insert_datatypes_data] // [START spanner_create_database] @@ -305,6 +306,7 @@ static void createDatabase(DatabaseAdminClient dbAdminClient, DatabaseId id) { throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_database] // [START spanner_create_table_with_timestamp_column] @@ -336,6 +338,7 @@ static void createTableWithTimestamp(DatabaseAdminClient dbAdminClient, Database throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_table_with_timestamp_column] // [START spanner_insert_data_with_timestamp_column] @@ -358,6 +361,7 @@ static void writeExampleDataWithTimestamp(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_insert_data_with_timestamp_column] // [START spanner_insert_data] @@ -387,6 +391,7 @@ static void writeExampleData(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_insert_data] // [START spanner_delete_data] @@ -412,6 +417,7 @@ static void deleteExampleData(DatabaseClient dbClient) { dbClient.write(mutations); System.out.printf("Records deleted.\n"); } + // [END spanner_delete_data] // [START spanner_query_data] @@ -426,6 +432,7 @@ static void query(DatabaseClient dbClient) { } } } + // [END spanner_query_data] // [START spanner_read_data] @@ -443,6 +450,7 @@ static void read(DatabaseClient dbClient) { } } } + // [END spanner_read_data] // [START spanner_add_column] @@ -466,6 +474,7 @@ static void addMarketingBudget(DatabaseAdminClient adminClient, DatabaseId dbId) throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_add_column] // Before executing this method, a new column MarketingBudget has to be added to the Albums @@ -495,51 +504,54 @@ static void update(DatabaseClient dbClient) { // This writes all the mutations to Cloud Spanner atomically. dbClient.write(mutations); } + // [END spanner_update_data] // [START spanner_read_write_transaction] static void writeWithTransaction(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Transfer marketing budget from one album to another. We do it in a transaction to - // ensure that the transfer is atomic. - Struct row = - transaction.readRow("Albums", Key.of(2, 2), Arrays.asList("MarketingBudget")); - long album2Budget = row.getLong(0); - // Transaction will only be committed if this condition still holds at the time of - // commit. Otherwise it will be aborted and the callable will be rerun by the - // client library. - long transfer = 200000; - if (album2Budget >= transfer) { - long album1Budget = - transaction - .readRow("Albums", Key.of(1, 1), Arrays.asList("MarketingBudget")) - .getLong(0); - album1Budget += transfer; - album2Budget -= transfer; - transaction.buffer( - Mutation.newUpdateBuilder("Albums") - .set("SingerId") - .to(1) - .set("AlbumId") - .to(1) - .set("MarketingBudget") - .to(album1Budget) - .build()); - transaction.buffer( - Mutation.newUpdateBuilder("Albums") - .set("SingerId") - .to(2) - .set("AlbumId") - .to(2) - .set("MarketingBudget") - .to(album2Budget) - .build()); - } - return null; - }); + .run( + transaction -> { + // Transfer marketing budget from one album to another. We do it in a transaction to + // ensure that the transfer is atomic. + Struct row = + transaction.readRow("Albums", Key.of(2, 2), Arrays.asList("MarketingBudget")); + long album2Budget = row.getLong(0); + // Transaction will only be committed if this condition still holds at the time of + // commit. Otherwise it will be aborted and the callable will be rerun by the + // client library. + long transfer = 200000; + if (album2Budget >= transfer) { + long album1Budget = + transaction + .readRow("Albums", Key.of(1, 1), Arrays.asList("MarketingBudget")) + .getLong(0); + album1Budget += transfer; + album2Budget -= transfer; + transaction.buffer( + Mutation.newUpdateBuilder("Albums") + .set("SingerId") + .to(1) + .set("AlbumId") + .to(1) + .set("MarketingBudget") + .to(album1Budget) + .build()); + transaction.buffer( + Mutation.newUpdateBuilder("Albums") + .set("SingerId") + .to(2) + .set("AlbumId") + .to(2) + .set("MarketingBudget") + .to(album2Budget) + .build()); + } + return null; + }); } + // [END spanner_read_write_transaction] // [START spanner_query_data_with_new_column] @@ -562,6 +574,7 @@ static void queryMarketingBudget(DatabaseClient dbClient) { } } } + // [END spanner_query_data_with_new_column] // [START spanner_create_index] @@ -585,6 +598,7 @@ static void addIndex(DatabaseAdminClient adminClient, DatabaseId dbId) { throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_index] // Before running this example, add the index AlbumsByAlbumTitle by applying the DDL statement @@ -616,6 +630,7 @@ static void queryUsingIndex(DatabaseClient dbClient) { } } } + // [END spanner_query_data_with_index] // [START spanner_read_data_with_index] @@ -633,6 +648,7 @@ static void readUsingIndex(DatabaseClient dbClient) { } } } + // [END spanner_read_data_with_index] // [START spanner_create_storing_index] @@ -658,6 +674,7 @@ static void addStoringIndex(DatabaseAdminClient adminClient, DatabaseId dbId) { throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_storing_index] // Before running this example, create a storing index AlbumsByAlbumTitle2 by applying the DDL @@ -682,6 +699,7 @@ static void readStoringIndex(DatabaseClient dbClient) { } } } + // [END spanner_read_data_with_storing_index] // [START spanner_read_only_transaction] @@ -708,6 +726,7 @@ static void readOnlyTransaction(DatabaseClient dbClient) { } } } + // [END spanner_read_only_transaction] // [START spanner_read_stale_data] @@ -726,6 +745,7 @@ static void readStaleData(DatabaseClient dbClient) { } } } + // [END spanner_read_stale_data] // [START spanner_add_timestamp_column] @@ -751,6 +771,7 @@ static void addCommitTimestamp(DatabaseAdminClient adminClient, DatabaseId dbId) throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_add_timestamp_column] // Before executing this method, a new column MarketingBudget has to be added to the Albums @@ -786,6 +807,7 @@ static void updateWithTimestamp(DatabaseClient dbClient) { // This writes all the mutations to Cloud Spanner atomically. dbClient.write(mutations); } + // [END spanner_update_data_with_timestamp_column] // [START spanner_query_data_with_timestamp_column] @@ -812,6 +834,7 @@ static void queryMarketingBudgetWithTimestamp(DatabaseClient dbClient) { } } } + // [END spanner_query_data_with_timestamp_column] static void querySingersTable(DatabaseClient dbClient) { @@ -878,6 +901,7 @@ static void writeStructExampleData(DatabaseClient dbClient) { dbClient.write(mutations); System.out.println("Inserted example data for struct parameter queries."); } + // [END spanner_write_data_for_struct_queries] static void queryWithStruct(DatabaseClient dbClient) { @@ -959,6 +983,7 @@ static void queryStructField(DatabaseClient dbClient) { } } } + // [END spanner_field_access_on_struct_parameters] // [START spanner_field_access_on_nested_struct_parameters] @@ -1005,92 +1030,102 @@ static void queryNestedStructField(DatabaseClient dbClient) { } } } + // [END spanner_field_access_on_nested_struct_parameters] // [START spanner_dml_standard_insert] static void insertUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) " - + " VALUES (10, 'Virginia', 'Watson')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + " VALUES (10, 'Virginia', 'Watson')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.\n", rowCount); + return null; + }); } + // [END spanner_dml_standard_insert] // [START spanner_dml_standard_update] static void updateUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "UPDATE Albums " - + "SET MarketingBudget = MarketingBudget * 2 " - + "WHERE SingerId = 1 and AlbumId = 1"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record updated.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "UPDATE Albums " + + "SET MarketingBudget = MarketingBudget * 2 " + + "WHERE SingerId = 1 and AlbumId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); } + // [END spanner_dml_standard_update] // [START spanner_dml_standard_delete] static void deleteUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = "DELETE FROM Singers WHERE FirstName = 'Alice'"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record deleted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = "DELETE FROM Singers WHERE FirstName = 'Alice'"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record deleted.\n", rowCount); + return null; + }); } + // [END spanner_dml_standard_delete] // [START spanner_dml_standard_update_with_timestamp] static void updateUsingDmlWithTimestamp(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "UPDATE Albums " - + "SET LastUpdateTime = PENDING_COMMIT_TIMESTAMP() WHERE SingerId = 1"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d records updated.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "UPDATE Albums " + + "SET LastUpdateTime = PENDING_COMMIT_TIMESTAMP() WHERE SingerId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d records updated.\n", rowCount); + return null; + }); } + // [END spanner_dml_standard_update_with_timestamp] // [START spanner_dml_write_then_read] static void writeAndReadUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Insert record. - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) " - + " VALUES (11, 'Timothy', 'Campbell')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d record inserted.\n", rowCount); - // Read newly inserted record. - sql = "SELECT FirstName, LastName FROM Singers WHERE SingerId = 11"; - // We use a try-with-resource block to automatically release resources held by - // ResultSet. - try (ResultSet resultSet = transaction.executeQuery(Statement.of(sql))) { - while (resultSet.next()) { - System.out.printf( - "%s %s\n", - resultSet.getString("FirstName"), resultSet.getString("LastName")); - } - } - return null; - }); + .run( + transaction -> { + // Insert record. + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + " VALUES (11, 'Timothy', 'Campbell')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d record inserted.\n", rowCount); + // Read newly inserted record. + sql = "SELECT FirstName, LastName FROM Singers WHERE SingerId = 11"; + // We use a try-with-resource block to automatically release resources held by + // ResultSet. + try (ResultSet resultSet = transaction.executeQuery(Statement.of(sql))) { + while (resultSet.next()) { + System.out.printf( + "%s %s\n", resultSet.getString("FirstName"), resultSet.getString("LastName")); + } + } + return null; + }); } + // [END spanner_dml_write_then_read] // [START spanner_dml_structs] @@ -1107,12 +1142,14 @@ static void updateUsingDmlWithStruct(DatabaseClient dbClient) { .build(); dbClient .readWriteTransaction() - .run(transaction -> { - long rowCount = transaction.executeUpdate(s); - System.out.printf("%d record updated.\n", rowCount); - return null; - }); + .run( + transaction -> { + long rowCount = transaction.executeUpdate(s); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); } + // [END spanner_dml_structs] // [START spanner_dml_getting_started_insert] @@ -1120,18 +1157,20 @@ static void writeUsingDml(DatabaseClient dbClient) { // Insert 4 singer records dbClient .readWriteTransaction() - .run(transaction -> { - String sql = - "INSERT INTO Singers (SingerId, FirstName, LastName) VALUES " - + "(12, 'Melissa', 'Garcia'), " - + "(13, 'Russell', 'Morales'), " - + "(14, 'Jacqueline', 'Long'), " - + "(15, 'Dylan', 'Shaw')"; - long rowCount = transaction.executeUpdate(Statement.of(sql)); - System.out.printf("%d records inserted.\n", rowCount); - return null; - }); + .run( + transaction -> { + String sql = + "INSERT INTO Singers (SingerId, FirstName, LastName) VALUES " + + "(12, 'Melissa', 'Garcia'), " + + "(13, 'Russell', 'Morales'), " + + "(14, 'Jacqueline', 'Long'), " + + "(15, 'Dylan', 'Shaw')"; + long rowCount = transaction.executeUpdate(Statement.of(sql)); + System.out.printf("%d records inserted.\n", rowCount); + return null; + }); } + // [END spanner_dml_getting_started_insert] // [START spanner_query_with_parameter] @@ -1154,58 +1193,60 @@ static void queryWithParameter(DatabaseClient dbClient) { } } } + // [END spanner_query_with_parameter] // [START spanner_dml_getting_started_update] static void writeWithTransactionUsingDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - // Transfer marketing budget from one album to another. We do it in a transaction to - // ensure that the transfer is atomic. - String sql1 = - "SELECT MarketingBudget from Albums WHERE SingerId = 2 and AlbumId = 2"; - ResultSet resultSet = transaction.executeQuery(Statement.of(sql1)); - long album2Budget = 0; - while (resultSet.next()) { - album2Budget = resultSet.getLong("MarketingBudget"); - } - // Transaction will only be committed if this condition still holds at the time of - // commit. Otherwise it will be aborted and the callable will be rerun by the - // client library. - long transfer = 200000; - if (album2Budget >= transfer) { - String sql2 = - "SELECT MarketingBudget from Albums WHERE SingerId = 1 and AlbumId = 1"; - ResultSet resultSet2 = transaction.executeQuery(Statement.of(sql2)); - long album1Budget = 0; - while (resultSet2.next()) { - album1Budget = resultSet2.getLong("MarketingBudget"); - } - album1Budget += transfer; - album2Budget -= transfer; - Statement updateStatement = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = @AlbumBudget " - + "WHERE SingerId = 1 and AlbumId = 1") - .bind("AlbumBudget") - .to(album1Budget) - .build(); - transaction.executeUpdate(updateStatement); - Statement updateStatement2 = - Statement.newBuilder( - "UPDATE Albums " - + "SET MarketingBudget = @AlbumBudget " - + "WHERE SingerId = 2 and AlbumId = 2") - .bind("AlbumBudget") - .to(album2Budget) - .build(); - transaction.executeUpdate(updateStatement2); - } - return null; - }); + .run( + transaction -> { + // Transfer marketing budget from one album to another. We do it in a transaction to + // ensure that the transfer is atomic. + String sql1 = "SELECT MarketingBudget from Albums WHERE SingerId = 2 and AlbumId = 2"; + ResultSet resultSet = transaction.executeQuery(Statement.of(sql1)); + long album2Budget = 0; + while (resultSet.next()) { + album2Budget = resultSet.getLong("MarketingBudget"); + } + // Transaction will only be committed if this condition still holds at the time of + // commit. Otherwise it will be aborted and the callable will be rerun by the + // client library. + long transfer = 200000; + if (album2Budget >= transfer) { + String sql2 = + "SELECT MarketingBudget from Albums WHERE SingerId = 1 and AlbumId = 1"; + ResultSet resultSet2 = transaction.executeQuery(Statement.of(sql2)); + long album1Budget = 0; + while (resultSet2.next()) { + album1Budget = resultSet2.getLong("MarketingBudget"); + } + album1Budget += transfer; + album2Budget -= transfer; + Statement updateStatement = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = @AlbumBudget " + + "WHERE SingerId = 1 and AlbumId = 1") + .bind("AlbumBudget") + .to(album1Budget) + .build(); + transaction.executeUpdate(updateStatement); + Statement updateStatement2 = + Statement.newBuilder( + "UPDATE Albums " + + "SET MarketingBudget = @AlbumBudget " + + "WHERE SingerId = 2 and AlbumId = 2") + .bind("AlbumBudget") + .to(album2Budget) + .build(); + transaction.executeUpdate(updateStatement2); + } + return null; + }); } + // [END spanner_dml_getting_started_update] // [START spanner_dml_partitioned_update] @@ -1214,6 +1255,7 @@ static void updateUsingPartitionedDml(DatabaseClient dbClient) { long rowCount = dbClient.executePartitionedUpdate(Statement.of(sql)); System.out.printf("%d records updated.\n", rowCount); } + // [END spanner_dml_partitioned_update] // [START spanner_dml_partitioned_delete] @@ -1222,36 +1264,39 @@ static void deleteUsingPartitionedDml(DatabaseClient dbClient) { long rowCount = dbClient.executePartitionedUpdate(Statement.of(sql)); System.out.printf("%d records deleted.\n", rowCount); } + // [END spanner_dml_partitioned_delete] // [START spanner_dml_batch_update] static void updateUsingBatchDml(DatabaseClient dbClient) { dbClient .readWriteTransaction() - .run(transaction -> { - List stmts = new ArrayList(); - String sql = - "INSERT INTO Albums " - + "(SingerId, AlbumId, AlbumTitle, MarketingBudget) " - + "VALUES (1, 3, 'Test Album Title', 10000) "; - stmts.add(Statement.of(sql)); - sql = - "UPDATE Albums " - + "SET MarketingBudget = MarketingBudget * 2 " - + "WHERE SingerId = 1 and AlbumId = 3"; - stmts.add(Statement.of(sql)); - long[] rowCounts; - try { - rowCounts = transaction.batchUpdate(stmts); - } catch (SpannerBatchUpdateException e) { - rowCounts = e.getUpdateCounts(); - } - for (int i = 0; i < rowCounts.length; i++) { - System.out.printf("%d record updated by stmt %d.\n", rowCounts[i], i); - } - return null; - }); + .run( + transaction -> { + List stmts = new ArrayList(); + String sql = + "INSERT INTO Albums " + + "(SingerId, AlbumId, AlbumTitle, MarketingBudget) " + + "VALUES (1, 3, 'Test Album Title', 10000) "; + stmts.add(Statement.of(sql)); + sql = + "UPDATE Albums " + + "SET MarketingBudget = MarketingBudget * 2 " + + "WHERE SingerId = 1 and AlbumId = 3"; + stmts.add(Statement.of(sql)); + long[] rowCounts; + try { + rowCounts = transaction.batchUpdate(stmts); + } catch (SpannerBatchUpdateException e) { + rowCounts = e.getUpdateCounts(); + } + for (int i = 0; i < rowCounts.length; i++) { + System.out.printf("%d record updated by stmt %d.\n", rowCounts[i], i); + } + return null; + }); } + // [END spanner_dml_batch_update] // [START spanner_create_table_with_datatypes] @@ -1288,6 +1333,7 @@ static void createTableWithDatatypes(DatabaseAdminClient dbAdminClient, Database throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_create_table_with_datatypes] // [START spanner_insert_datatypes_data] @@ -1322,6 +1368,7 @@ static void writeDatatypesData(DatabaseClient dbClient) { } dbClient.write(mutations); } + // [END spanner_insert_datatypes_data] // [START spanner_query_with_array_parameter] @@ -1347,6 +1394,7 @@ static void queryWithArray(DatabaseClient dbClient) { } } } + // [END spanner_query_with_array_parameter] // [START spanner_query_with_bool_parameter] @@ -1369,6 +1417,7 @@ static void queryWithBool(DatabaseClient dbClient) { } } } + // [END spanner_query_with_bool_parameter] // [START spanner_query_with_bytes_parameter] @@ -1388,6 +1437,7 @@ static void queryWithBytes(DatabaseClient dbClient) { } } } + // [END spanner_query_with_bytes_parameter] // [START spanner_query_with_date_parameter] @@ -1410,6 +1460,7 @@ static void queryWithDate(DatabaseClient dbClient) { } } } + // [END spanner_query_with_date_parameter] // [START spanner_query_with_float_parameter] @@ -1432,6 +1483,7 @@ static void queryWithFloat(DatabaseClient dbClient) { } } } + // [END spanner_query_with_float_parameter] // [START spanner_query_with_int_parameter] @@ -1453,6 +1505,7 @@ static void queryWithInt(DatabaseClient dbClient) { } } } + // [END spanner_query_with_int_parameter] // [START spanner_query_with_string_parameter] @@ -1471,6 +1524,7 @@ static void queryWithString(DatabaseClient dbClient) { } } } + // [END spanner_query_with_string_parameter] // [START spanner_query_with_timestamp_parameter] @@ -1493,6 +1547,7 @@ static void queryWithTimestampParameter(DatabaseClient dbClient) { } } } + // [END spanner_query_with_timestamp_parameter] // [START spanner_query_with_numeric_parameter] @@ -1516,6 +1571,7 @@ static void queryWithNumeric(DatabaseClient dbClient) { } } } + // [END spanner_query_with_numeric_parameter] // [START spanner_create_client_with_query_options] @@ -1523,8 +1579,8 @@ static void clientWithQueryOptions(DatabaseId db) { SpannerOptions options = SpannerOptions.newBuilder() .setDefaultQueryOptions( - db, QueryOptions - .newBuilder() + db, + QueryOptions.newBuilder() .setOptimizerVersion("1") // The list of available statistics packages can be found by querying the // "INFORMATION_SCHEMA.SPANNER_STATISTICS" table. @@ -1543,6 +1599,7 @@ static void clientWithQueryOptions(DatabaseId db) { } } } + // [END spanner_create_client_with_query_options] // [START spanner_query_with_query_options] @@ -1551,15 +1608,15 @@ static void queryWithQueryOptions(DatabaseClient dbClient) { dbClient .singleUse() .executeQuery( - Statement - .newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums") - .withQueryOptions(QueryOptions - .newBuilder() - .setOptimizerVersion("1") - // The list of available statistics packages can be found by querying the - // "INFORMATION_SCHEMA.SPANNER_STATISTICS" table. - .setOptimizerStatisticsPackage("latest") - .build()) + Statement.newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums") + .withQueryOptions( + QueryOptions.newBuilder() + .setOptimizerVersion("1") + // The list of available statistics packages can be found by querying + // the + // "INFORMATION_SCHEMA.SPANNER_STATISTICS" table. + .setOptimizerStatisticsPackage("latest") + .build()) .build())) { while (resultSet.next()) { System.out.printf( @@ -1567,14 +1624,20 @@ static void queryWithQueryOptions(DatabaseClient dbClient) { } } } + // [END spanner_query_with_query_options] // [START spanner_create_backup] - static void createBackup(DatabaseAdminClient dbAdminClient, DatabaseId databaseId, - BackupId backupId, Timestamp versionTime) { + static void createBackup( + DatabaseAdminClient dbAdminClient, + DatabaseId databaseId, + BackupId backupId, + Timestamp versionTime) { // Set expire time to 14 days from now. - Timestamp expireTime = Timestamp.ofTimeMicroseconds(TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); + Timestamp expireTime = + Timestamp.ofTimeMicroseconds( + TimeUnit.MICROSECONDS.convert( + System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); Backup backup = dbAdminClient .newBackupBuilder(backupId) @@ -1609,17 +1672,19 @@ static void createBackup(DatabaseAdminClient dbAdminClient, DatabaseId databaseI LocalDateTime.ofEpochSecond( backup.getProto().getVersionTime().getSeconds(), backup.getProto().getVersionTime().getNanos(), - OffsetDateTime.now().getOffset()) - )); + OffsetDateTime.now().getOffset()))); } + // [END spanner_create_backup] // [START spanner_cancel_backup_create] static void cancelCreateBackup( DatabaseAdminClient dbAdminClient, DatabaseId databaseId, BackupId backupId) { // Set expire time to 14 days from now. - Timestamp expireTime = Timestamp.ofTimeMicroseconds(TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); + Timestamp expireTime = + Timestamp.ofTimeMicroseconds( + TimeUnit.MICROSECONDS.convert( + System.currentTimeMillis() + TimeUnit.DAYS.toMillis(14), TimeUnit.MILLISECONDS)); // Create a backup instance. Backup backup = @@ -1648,8 +1713,10 @@ static void cancelCreateBackup( if (pollingFuture.get().getErrorCode() == null) { // Backup was created before it could be cancelled. Delete the backup. backup.delete(); - System.out.println("Backup operation for [" + backup.getId() - + "] successfully finished before it could be cancelled"); + System.out.println( + "Backup operation for [" + + backup.getId() + + "] successfully finished before it could be cancelled"); } else if (pollingFuture.get().getErrorCode().getCode() == StatusCode.Code.CANCELLED) { System.out.println("Backup operation for [" + backup.getId() + "] successfully cancelled"); } @@ -1659,24 +1726,27 @@ static void cancelCreateBackup( throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_cancel_backup_create] // [START spanner_list_backup_operations] static void listBackupOperations( - InstanceAdminClient instanceAdminClient, DatabaseId databaseId, BackupId backupId) { + InstanceAdminClient instanceAdminClient, DatabaseId databaseId, BackupId backupId) { Instance instance = instanceAdminClient.getInstance(databaseId.getInstanceId().getInstance()); // Get create backup operations for the sample database. - Timestamp last24Hours = Timestamp.ofTimeSecondsAndNanos(TimeUnit.SECONDS.convert( - TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24, - TimeUnit.HOURS), 0); + Timestamp last24Hours = + Timestamp.ofTimeSecondsAndNanos( + TimeUnit.SECONDS.convert( + TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24, + TimeUnit.HOURS), + 0); String filter = String.format( - "(metadata.@type:type.googleapis.com/" - + "google.spanner.admin.database.v1.CreateBackupMetadata) " - + "AND (metadata.database:%s)", - databaseId.getName()); - Page createBackupOperations = instance.listBackupOperations( - Options.filter(filter)); + "(metadata.@type:type.googleapis.com/" + + "google.spanner.admin.database.v1.CreateBackupMetadata) " + + "AND (metadata.database:%s)", + databaseId.getName()); + Page createBackupOperations = instance.listBackupOperations(Options.filter(filter)); System.out.println("Create Backup Operations:"); for (Operation op : createBackupOperations.iterateAll()) { try { @@ -1694,29 +1764,29 @@ static void listBackupOperations( } // Get copy backup operations for the sample database. filter = - String.format( - "(metadata.@type:type.googleapis.com/" - + "google.spanner.admin.database.v1.CopyBackupMetadata) " - + "AND (metadata.source_backup:%s)", - backupId.getName()); + String.format( + "(metadata.@type:type.googleapis.com/" + + "google.spanner.admin.database.v1.CopyBackupMetadata) " + + "AND (metadata.source_backup:%s)", + backupId.getName()); Page copyBackupOperations = instance.listBackupOperations(Options.filter(filter)); System.out.println("Copy Backup Operations:"); for (Operation op : copyBackupOperations.iterateAll()) { try { - CopyBackupMetadata copyBackupMetadata = - op.getMetadata().unpack(CopyBackupMetadata.class); + CopyBackupMetadata copyBackupMetadata = op.getMetadata().unpack(CopyBackupMetadata.class); System.out.println( - String.format( - "Copy Backup %s on backup %s pending: %d%% complete", - copyBackupMetadata.getName(), - copyBackupMetadata.getSourceBackup(), - copyBackupMetadata.getProgress().getProgressPercent())); + String.format( + "Copy Backup %s on backup %s pending: %d%% complete", + copyBackupMetadata.getName(), + copyBackupMetadata.getSourceBackup(), + copyBackupMetadata.getProgress().getProgressPercent())); } catch (InvalidProtocolBufferException e) { // The returned operation does not contain CopyBackupMetadata. System.err.println(e.getMessage()); } } } + // [END spanner_list_backup_operations] // [START spanner_list_database_operations] @@ -1726,26 +1796,33 @@ static void listDatabaseOperations( InstanceId instanceId) { Instance instance = instanceAdminClient.getInstance(instanceId.getInstance()); // Get optimize restored database operations. - Timestamp last24Hours = Timestamp.ofTimeSecondsAndNanos(TimeUnit.SECONDS.convert( - TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24, - TimeUnit.HOURS), 0); - String filter = String.format("(metadata.@type:type.googleapis.com/" - + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) AND " - + "(metadata.progress.start_time > \"%s\")", last24Hours); + Timestamp last24Hours = + Timestamp.ofTimeSecondsAndNanos( + TimeUnit.SECONDS.convert( + TimeUnit.HOURS.convert(Timestamp.now().getSeconds(), TimeUnit.SECONDS) - 24, + TimeUnit.HOURS), + 0); + String filter = + String.format( + "(metadata.@type:type.googleapis.com/" + + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) AND " + + "(metadata.progress.start_time > \"%s\")", + last24Hours); for (Operation op : instance.listDatabaseOperations(Options.filter(filter)).iterateAll()) { try { OptimizeRestoredDatabaseMetadata metadata = op.getMetadata().unpack(OptimizeRestoredDatabaseMetadata.class); - System.out.println(String.format( - "Database %s restored from backup is %d%% optimized", - metadata.getName(), - metadata.getProgress().getProgressPercent())); + System.out.println( + String.format( + "Database %s restored from backup is %d%% optimized", + metadata.getName(), metadata.getProgress().getProgressPercent())); } catch (InvalidProtocolBufferException e) { // The returned operation does not contain OptimizeRestoredDatabaseMetadata. System.err.println(e.getMessage()); } } } + // [END spanner_list_database_operations] // [START spanner_list_backups] @@ -1761,29 +1838,35 @@ static void listBackups( // List all backups with a specific name. System.out.println( String.format("All backups with backup name containing \"%s\":", backupId.getBackup())); - for (Backup backup : instance.listBackups( - Options.filter(String.format("name:%s", backupId.getBackup()))).iterateAll()) { + for (Backup backup : + instance + .listBackups(Options.filter(String.format("name:%s", backupId.getBackup()))) + .iterateAll()) { System.out.println(backup); } // List all backups for databases whose name contains a certain text. System.out.println( String.format( - "All backups for databases with a name containing \"%s\":", - databaseId.getDatabase())); - for (Backup backup : instance.listBackups( - Options.filter(String.format("database:%s", databaseId.getDatabase()))).iterateAll()) { + "All backups for databases with a name containing \"%s\":", databaseId.getDatabase())); + for (Backup backup : + instance + .listBackups(Options.filter(String.format("database:%s", databaseId.getDatabase()))) + .iterateAll()) { System.out.println(backup); } // List all backups that expire before a certain time. - Timestamp expireTime = Timestamp.ofTimeMicroseconds(TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() + TimeUnit.DAYS.toMillis(30), TimeUnit.MILLISECONDS)); + Timestamp expireTime = + Timestamp.ofTimeMicroseconds( + TimeUnit.MICROSECONDS.convert( + System.currentTimeMillis() + TimeUnit.DAYS.toMillis(30), TimeUnit.MILLISECONDS)); System.out.println(String.format("All backups that expire before %s:", expireTime.toString())); for (Backup backup : - instance.listBackups( - Options.filter(String.format("expire_time < \"%s\"", expireTime.toString()))) - .iterateAll()) { + instance + .listBackups( + Options.filter(String.format("expire_time < \"%s\"", expireTime.toString()))) + .iterateAll()) { System.out.println(backup); } @@ -1794,15 +1877,17 @@ static void listBackups( } // List all backups with a create time after a certain timestamp and that are also ready. - Timestamp createTime = Timestamp.ofTimeMicroseconds(TimeUnit.MICROSECONDS.convert( - System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1), TimeUnit.MILLISECONDS)); + Timestamp createTime = + Timestamp.ofTimeMicroseconds( + TimeUnit.MICROSECONDS.convert( + System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1), TimeUnit.MILLISECONDS)); System.out.println( - String.format( - "All databases created after %s and that are ready:", createTime.toString())); + String.format("All databases created after %s and that are ready:", createTime.toString())); for (Backup backup : instance - .listBackups(Options.filter( - String.format("create_time >= \"%s\" AND state:READY", createTime.toString()))) + .listBackups( + Options.filter( + String.format("create_time >= \"%s\" AND state:READY", createTime.toString()))) .iterateAll()) { System.out.println(backup); } @@ -1820,6 +1905,7 @@ static void listBackups( page = page.getNextPage(); } } + // [END spanner_list_backups] // [START spanner_restore_backup] @@ -1830,32 +1916,33 @@ static void restoreBackup( DatabaseId restoreToDatabase) { Backup backup = dbAdminClient.newBackupBuilder(backupId).build(); // Initiate the request which returns an OperationFuture. - System.out.println(String.format( - "Restoring backup [%s] to database [%s]...", - backup.getId().toString(), - restoreToDatabase.toString())); + System.out.println( + String.format( + "Restoring backup [%s] to database [%s]...", + backup.getId().toString(), restoreToDatabase.toString())); try { OperationFuture op = backup.restore(restoreToDatabase); // Wait until the database has been restored. Database db = op.get(); // Refresh database metadata and get the restore info. RestoreInfo restore = db.reload().getRestoreInfo(); - Timestamp versionTime = Timestamp.fromProto(restore - .getProto() - .getBackupInfo() - .getVersionTime()); + Timestamp versionTime = + Timestamp.fromProto(restore.getProto().getBackupInfo().getVersionTime()); System.out.println( "Restored database [" + restore.getSourceDatabase().getName() + "] from [" + restore.getBackup().getName() - + "] with version time [" + versionTime + "]"); + + "] with version time [" + + versionTime + + "]"); } catch (ExecutionException e) { throw SpannerExceptionFactory.newSpannerException(e.getCause()); } catch (InterruptedException e) { throw SpannerExceptionFactory.propagateInterrupt(e); } } + // [END spanner_restore_backup] // [START spanner_update_backup] @@ -1870,24 +1957,29 @@ static void updateBackup(DatabaseAdminClient dbAdminClient, BackupId backupId) { + TimeUnit.NANOSECONDS.toMicros(backup.getExpireTime().getNanos()) + TimeUnit.DAYS.toMicros(30L)); // New Expire Time must be less than Max Expire Time - expireTime = expireTime.compareTo(backup.getMaxExpireTime()) - < 0 ? expireTime : backup.getMaxExpireTime(); + expireTime = + expireTime.compareTo(backup.getMaxExpireTime()) < 0 + ? expireTime + : backup.getMaxExpireTime(); int timeDiff = expireTime.compareTo(backup.getExpireTime()); Timestamp newExpireTime = (timeDiff < 0) ? expireTime : backup.getExpireTime(); - System.out.println(String.format( - "Updating expire time of backup [%s] to %s...", - backupId.toString(), - LocalDateTime.ofEpochSecond( - expireTime.getSeconds(), - expireTime.getNanos(), - OffsetDateTime.now().getOffset()).toString())); + System.out.println( + String.format( + "Updating expire time of backup [%s] to %s...", + backupId.toString(), + LocalDateTime.ofEpochSecond( + expireTime.getSeconds(), + expireTime.getNanos(), + OffsetDateTime.now().getOffset()) + .toString())); // Update expire time. backup = backup.toBuilder().setExpireTime(expireTime).build(); backup.updateExpireTime(); System.out.println("Updated backup [" + backupId + "]"); } + // [END spanner_update_backup] // [START spanner_delete_backup] @@ -1904,6 +1996,7 @@ static void deleteBackup(DatabaseAdminClient dbAdminClient, BackupId backupId) { System.out.println("Deleted backup [" + backupId + "]"); } } + // [END spanner_delete_backup] static void run( @@ -2112,8 +2205,8 @@ static void run( static Timestamp getVersionTime(DatabaseClient dbClient) { // Generates a version time for the backup Timestamp versionTime; - try (ResultSet resultSet = dbClient.singleUse() - .executeQuery(Statement.of("SELECT CURRENT_TIMESTAMP()"))) { + try (ResultSet resultSet = + dbClient.singleUse().executeQuery(Statement.of("SELECT CURRENT_TIMESTAMP()"))) { resultSet.next(); versionTime = resultSet.getTimestamp(0); } @@ -2208,8 +2301,7 @@ public static void main(String[] args) throws Exception { // Generate a backup id for the sample database. String backupName = String.format( - "%s_%02d", - db.getDatabase(), LocalDate.now().get(ChronoField.ALIGNED_WEEK_OF_YEAR)); + "%s_%02d", db.getDatabase(), LocalDate.now().get(ChronoField.ALIGNED_WEEK_OF_YEAR)); BackupId backup = BackupId.of(db.getInstanceId(), backupName); if (args.length == 4) { backupName = args[3]; diff --git a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/UpdateDatabaseWithDefaultLeaderSample.java b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/UpdateDatabaseWithDefaultLeaderSample.java index 897139909338..7fc56b5bc326 100644 --- a/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/UpdateDatabaseWithDefaultLeaderSample.java +++ b/java-spanner/samples/snippets/src/main/java/com/example/spanner/admin/archived/UpdateDatabaseWithDefaultLeaderSample.java @@ -16,7 +16,7 @@ package com.example.spanner.admin.archived; -//[START spanner_update_database_with_default_leader] +// [START spanner_update_database_with_default_leader] import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.spanner.DatabaseAdminClient; @@ -41,25 +41,18 @@ static void updateDatabaseWithDefaultLeader() { static void updateDatabaseWithDefaultLeader( String projectId, String instanceId, String databaseId, String defaultLeader) { - try (Spanner spanner = SpannerOptions - .newBuilder() - .setProjectId(projectId) - .build() - .getService()) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { final DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); - final OperationFuture operation = databaseAdminClient - .updateDatabaseDdl( + final OperationFuture operation = + databaseAdminClient.updateDatabaseDdl( instanceId, databaseId, Collections.singletonList( String.format( "ALTER DATABASE `%s` SET OPTIONS (default_leader = '%s')", - databaseId, - defaultLeader - ) - ), - null - ); + databaseId, defaultLeader)), + null); operation.get(); System.out.println("Updated default leader to " + defaultLeader); } catch (ExecutionException e) { @@ -72,4 +65,4 @@ static void updateDatabaseWithDefaultLeader( } } } -//[END spanner_update_database_with_default_leader] +// [END spanner_update_database_with_default_leader] diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSampleIT.java index a22b5ab37509..96b52a74b5fe 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSampleIT.java @@ -35,19 +35,21 @@ public void testAlterTableWithForeignKeyDeleteCascade() throws Exception { CreateDatabaseRequest.newBuilder() .setCreateStatement("CREATE DATABASE `" + databaseId + "`") .setParent(InstanceName.of(projectId, instanceId).toString()) - .addAllExtraStatements(Arrays.asList( - "CREATE TABLE Customers (\n" - + " CustomerId INT64 NOT NULL,\n" - + " CustomerName STRING(62) NOT NULL,\n" - + " ) PRIMARY KEY (CustomerId)", - "CREATE TABLE ShoppingCarts (\n" - + " CartId INT64 NOT NULL,\n" - + " CustomerId INT64 NOT NULL,\n" - + " CustomerName STRING(62) NOT NULL,\n" - + " CONSTRAINT FKShoppingCartsCustomerId" - + " FOREIGN KEY (CustomerId)\n" - + " REFERENCES Customers (CustomerId)\n" - + " ) PRIMARY KEY (CartId)\n")).build(); + .addAllExtraStatements( + Arrays.asList( + "CREATE TABLE Customers (\n" + + " CustomerId INT64 NOT NULL,\n" + + " CustomerName STRING(62) NOT NULL,\n" + + " ) PRIMARY KEY (CustomerId)", + "CREATE TABLE ShoppingCarts (\n" + + " CartId INT64 NOT NULL,\n" + + " CustomerId INT64 NOT NULL,\n" + + " CustomerName STRING(62) NOT NULL,\n" + + " CONSTRAINT FKShoppingCartsCustomerId" + + " FOREIGN KEY (CustomerId)\n" + + " REFERENCES Customers (CustomerId)\n" + + " ) PRIMARY KEY (CartId)\n")) + .build(); databaseAdminClient.createDatabaseAsync(request).get(5, TimeUnit.MINUTES); // Runs sample diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/AsyncExamplesIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/AsyncExamplesIT.java index 9277d7d0d9cd..556b33df04c8 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/AsyncExamplesIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/AsyncExamplesIT.java @@ -33,9 +33,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Integration tests for Cloud Spanner Async API examples. - */ +/** Integration tests for Cloud Spanner Async API examples. */ @RunWith(JUnit4.class) @SuppressWarnings("checkstyle:AbbreviationAsWordInName") public class AsyncExamplesIT extends SampleTestBase { @@ -167,30 +165,34 @@ public void removeTestData() { @Test public void asyncQuery_shouldReturnData() throws Exception { - String out = runSample( - () -> AsyncQueryExample.asyncQuery(spanner.getDatabaseClient(databaseId))); + String out = + runSample(() -> AsyncQueryExample.asyncQuery(spanner.getDatabaseClient(databaseId))); assertAlbumsOutput(out); } @Test - public void asyncQueryToListAsync_shouldReturnData() - throws Exception { - String out = runSample( - () -> AsyncQueryToListAsyncExample.asyncQueryToList(spanner.getDatabaseClient(databaseId))); + public void asyncQueryToListAsync_shouldReturnData() throws Exception { + String out = + runSample( + () -> + AsyncQueryToListAsyncExample.asyncQueryToList( + spanner.getDatabaseClient(databaseId))); assertAlbumsOutput(out); } @Test - public void asyncRead_shouldReturnData() - throws Exception { + public void asyncRead_shouldReturnData() throws Exception { String out = runSample(() -> AsyncReadExample.asyncRead(spanner.getDatabaseClient(databaseId))); assertAlbumsOutput(out); } @Test public void asyncReadUsingIndex_shouldReturnDataInCorrectOrder() throws Exception { - String out = runSample(() -> AsyncReadUsingIndexExample - .asyncReadUsingIndex(spanner.getDatabaseClient(databaseId))); + String out = + runSample( + () -> + AsyncReadUsingIndexExample.asyncReadUsingIndex( + spanner.getDatabaseClient(databaseId))); assertThat(out) .contains( "2 Forever Hold Your Peace\n" @@ -202,8 +204,11 @@ public void asyncReadUsingIndex_shouldReturnDataInCorrectOrder() throws Exceptio @Test public void asyncReadOnlyTransaction_shouldReturnData() throws Exception { - String out = runSample(() -> AsyncReadOnlyTransactionExample - .asyncReadOnlyTransaction(spanner.getDatabaseClient(databaseId))); + String out = + runSample( + () -> + AsyncReadOnlyTransactionExample.asyncReadOnlyTransaction( + spanner.getDatabaseClient(databaseId))); assertAlbumsOutput(out); assertSingersOutput(out); } @@ -216,22 +221,25 @@ public void asyncDml_shouldInsertRows() throws Exception { @Test public void asyncRunner_shouldUpdateRows() throws Exception { - String out = runSample( - () -> AsyncRunnerExample.asyncRunner(spanner.getDatabaseClient(databaseId))); + String out = + runSample(() -> AsyncRunnerExample.asyncRunner(spanner.getDatabaseClient(databaseId))); assertThat(out).contains("2 records updated."); } @Test public void asyncTransactionManager_shouldUpdateRows() throws Exception { - String out = runSample(() -> AsyncTransactionManagerExample - .asyncTransactionManager(spanner.getDatabaseClient(databaseId))); + String out = + runSample( + () -> + AsyncTransactionManagerExample.asyncTransactionManager( + spanner.getDatabaseClient(databaseId))); assertThat(out).contains("2 records updated."); } @Test public void asyncReadRow_shouldPrintRow() throws Exception { - String out = runSample( - () -> AsyncReadRowExample.asyncReadRow(spanner.getDatabaseClient(databaseId))); + String out = + runSample(() -> AsyncReadRowExample.asyncReadRow(spanner.getDatabaseClient(databaseId))); assertThat(out).contains("1 1 Total Junk"); assertThat(out).doesNotContain("1 2 Go, Go, Go"); assertThat(out).doesNotContain("2 1 Green"); diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/BatchWriteAtLeastOnceSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/BatchWriteAtLeastOnceSampleIT.java index 55f28cda41ab..ca3fa86fe19e 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/BatchWriteAtLeastOnceSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/BatchWriteAtLeastOnceSampleIT.java @@ -53,8 +53,10 @@ public void setup() throws ExecutionException, InterruptedException { @Test public void testBatchWriteAtLeastOnce() throws Exception { final String out = - SampleRunner.runSample(() -> BatchWriteAtLeastOnceSample.batchWriteAtLeastOnce( - projectId, instanceId, databaseId)); + SampleRunner.runSample( + () -> + BatchWriteAtLeastOnceSample.batchWriteAtLeastOnce( + projectId, instanceId, databaseId)); assertTrue(out.contains("have been applied with commit timestamp")); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CopyBackupIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CopyBackupIT.java index 29854011e1fe..b5de6e40e525 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CopyBackupIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CopyBackupIT.java @@ -42,12 +42,19 @@ public class CopyBackupIT extends SampleTestBaseV2 { @BeforeClass public static void setUp() { - String keyLocation = Preconditions - .checkNotNull(System.getProperty("spanner.test.key.location")); + String keyLocation = + Preconditions.checkNotNull(System.getProperty("spanner.test.key.location")); String keyRing = Preconditions.checkNotNull(System.getProperty("spanner.test.key.ring")); String keyName = Preconditions.checkNotNull(System.getProperty("spanner.test.key.name")); - key = "projects/" + projectId + "/locations/" + keyLocation + "/keyRings/" + keyRing - + "/cryptoKeys/" + keyName; + key = + "projects/" + + projectId + + "/locations/" + + keyLocation + + "/keyRings/" + + keyRing + + "/cryptoKeys/" + + keyName; } @Test @@ -56,31 +63,54 @@ public void testEncryptedDatabaseAndBackupAndRestore() throws Exception { final String sourceBackupId = idGenerator.generateBackupId(); final String destinationBackupId = idGenerator.generateBackupId(); - String out = SampleRunner.runSample(() -> - SpannerSample.createDatabase( - databaseAdminClient, InstanceName.of(projectId, instanceId), databaseId)); - assertThat(out).contains(String.format( - "Created database [%s]", DatabaseName.of(projectId, instanceId, databaseId))); + String out = + SampleRunner.runSample( + () -> + SpannerSample.createDatabase( + databaseAdminClient, InstanceName.of(projectId, instanceId), databaseId)); + assertThat(out) + .contains( + String.format( + "Created database [%s]", DatabaseName.of(projectId, instanceId, databaseId))); - out = SampleRunner.runSampleWithRetry(() -> - CreateBackupWithEncryptionKey.createBackupWithEncryptionKey( - databaseAdminClient, projectId, instanceId, databaseId, sourceBackupId, key - ), new ShouldRetryBackupOperation()); - assertThat(out).containsMatch( - "Backup projects/" + projectId + "/instances/" + instanceId + "/backups/" - + sourceBackupId + " of size \\d+ bytes was created at (.*) using encryption key " - + key); + out = + SampleRunner.runSampleWithRetry( + () -> + CreateBackupWithEncryptionKey.createBackupWithEncryptionKey( + databaseAdminClient, projectId, instanceId, databaseId, sourceBackupId, key), + new ShouldRetryBackupOperation()); + assertThat(out) + .containsMatch( + "Backup projects/" + + projectId + + "/instances/" + + instanceId + + "/backups/" + + sourceBackupId + + " of size \\d+ bytes was created at (.*) using encryption key " + + key); - out = SampleRunner.runSampleWithRetry(() -> - CopyBackupSample.copyBackup( - databaseAdminClient, projectId, instanceId, sourceBackupId, destinationBackupId - ), new ShouldRetryBackupOperation()); + out = + SampleRunner.runSampleWithRetry( + () -> + CopyBackupSample.copyBackup( + databaseAdminClient, + projectId, + instanceId, + sourceBackupId, + destinationBackupId), + new ShouldRetryBackupOperation()); - assertThat(out).contains("Copied backup [" + BackupName.of( - projectId, instanceId, destinationBackupId).toString() + "]"); - assertThat(out).containsMatch(String.format( - "Backup projects/%s/instances/%s/backups/%s of size \\d+ bytes was copied at (.*)", - projectId, instanceId, destinationBackupId, key)); + assertThat(out) + .contains( + "Copied backup [" + + BackupName.of(projectId, instanceId, destinationBackupId).toString() + + "]"); + assertThat(out) + .containsMatch( + String.format( + "Backup projects/%s/instances/%s/backups/%s of size \\d+ bytes was copied at (.*)", + projectId, instanceId, destinationBackupId, key)); } static class ShouldRetryBackupOperation implements Predicate { @@ -95,9 +125,12 @@ public boolean test(SpannerException e) { attempts++; if (attempts == MAX_ATTEMPTS) { // Throw custom exception so it is easier to locate in the log why it went wrong. - throw SpannerExceptionFactory.newSpannerException(ErrorCode.DEADLINE_EXCEEDED, - String.format("Operation failed %d times because of other pending operations. " - + "Giving up operation.\n", attempts), + throw SpannerExceptionFactory.newSpannerException( + ErrorCode.DEADLINE_EXCEEDED, + String.format( + "Operation failed %d times because of other pending operations. " + + "Giving up operation.\n", + attempts), e); } // Wait one minute before retrying. @@ -108,4 +141,3 @@ public boolean test(SpannerException e) { } } } - diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateDatabaseWithDefaultLeaderSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateDatabaseWithDefaultLeaderSampleIT.java index fff67b38b8a7..0c12686ddc7d 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateDatabaseWithDefaultLeaderSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateDatabaseWithDefaultLeaderSampleIT.java @@ -33,28 +33,31 @@ public void testCreateDatabaseWithDefaultLeader() throws Exception { // Finds possible default leader - final String instanceConfigId = instanceAdminClient.getInstance( - InstanceName.of(projectId, multiRegionalInstanceId)).getConfig(); + final String instanceConfigId = + instanceAdminClient + .getInstance(InstanceName.of(projectId, multiRegionalInstanceId)) + .getConfig(); final InstanceConfig config = instanceAdminClient.getInstanceConfig(instanceConfigId); assertTrue( "Expected instance config " + instanceConfigId + " to have at least one leader option", - config.getLeaderOptionsCount() > 0 - ); + config.getLeaderOptionsCount() > 0); final String defaultLeader = config.getLeaderOptions(0); // Runs sample - final String out = SampleRunner.runSample(() -> - CreateDatabaseWithDefaultLeaderSample.createDatabaseWithDefaultLeader( - getInstanceName(projectId, multiRegionalInstanceId), - databaseId, - defaultLeader - ) - ); + final String out = + SampleRunner.runSample( + () -> + CreateDatabaseWithDefaultLeaderSample.createDatabaseWithDefaultLeader( + getInstanceName(projectId, multiRegionalInstanceId), + databaseId, + defaultLeader)); assertTrue( - "Expected created database to have default leader " + defaultLeader + "." - + " Output received was " + out, - out.contains("Default leader: " + defaultLeader) - ); + "Expected created database to have default leader " + + defaultLeader + + "." + + " Output received was " + + out, + out.contains("Default leader: " + defaultLeader)); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSampleIT.java index 98832f1f5122..63e2b0e8a79e 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSampleIT.java @@ -23,8 +23,8 @@ import org.junit.runners.JUnit4; /** - * Integration tests for - * {@link com.example.spanner.admin.archived.CreateDatabaseWithVersionRetentionPeriodSample} + * Integration tests for {@link + * com.example.spanner.admin.archived.CreateDatabaseWithVersionRetentionPeriodSample} */ @RunWith(JUnit4.class) public class CreateDatabaseWithVersionRetentionPeriodSampleIT extends SampleTestBaseV2 { @@ -34,14 +34,22 @@ public void createsDatabaseWithVersionRetentionPeriod() throws Exception { final String databaseId = idGenerator.generateDatabaseId(); final String versionRetentionPeriod = "7d"; - final String out = SampleRunner.runSample(() -> CreateDatabaseWithVersionRetentionPeriodSample - .createDatabaseWithVersionRetentionPeriod( - projectId, instanceId, databaseId, versionRetentionPeriod - )); + final String out = + SampleRunner.runSample( + () -> + CreateDatabaseWithVersionRetentionPeriodSample + .createDatabaseWithVersionRetentionPeriod( + projectId, instanceId, databaseId, versionRetentionPeriod)); - assertThat(out).contains( - "Created database [projects/" + projectId + "/instances/" + instanceId + "/databases/" - + databaseId + "]"); + assertThat(out) + .contains( + "Created database [projects/" + + projectId + + "/instances/" + + instanceId + + "/databases/" + + databaseId + + "]"); assertThat(out).contains("Version retention period: " + versionRetentionPeriod); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithAsymmetricAutoscalingConfigSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithAsymmetricAutoscalingConfigSampleIT.java index b29115ddd0f5..c8a3608f031e 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithAsymmetricAutoscalingConfigSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithAsymmetricAutoscalingConfigSampleIT.java @@ -28,10 +28,13 @@ public void testCreateInstanceWithAsymmetricAutoscalingConfig() throws Exception String instanceId = idGenerator.generateInstanceId(); String out = SampleRunner.runSample( - () -> CreateInstanceWithAsymmetricAutoscalingConfigExample - .createInstance(projectId, instanceId)); + () -> + CreateInstanceWithAsymmetricAutoscalingConfigExample.createInstance( + projectId, instanceId)); assertThat(out) - .contains(String.format("Asymmetric Autoscaling instance %s", - InstanceName.of(projectId, instanceId).toString())); + .contains( + String.format( + "Asymmetric Autoscaling instance %s", + InstanceName.of(projectId, instanceId).toString())); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithAutoscalingConfigSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithAutoscalingConfigSampleIT.java index 041d6b97ac02..21541afe7625 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithAutoscalingConfigSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithAutoscalingConfigSampleIT.java @@ -30,7 +30,8 @@ public void testCreateInstanceWithAutoscalingConfig() throws Exception { SampleRunner.runSample( () -> CreateInstanceWithAutoscalingConfigExample.createInstance(projectId, instanceId)); assertThat(out) - .contains(String.format("Autoscaler instance %s", - InstanceName.of(projectId, instanceId).toString())); + .contains( + String.format( + "Autoscaler instance %s", InstanceName.of(projectId, instanceId).toString())); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithProcessingUnitsSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithProcessingUnitsSampleIT.java index dcddea4929b1..7ed7e1c6365e 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithProcessingUnitsSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateInstanceWithProcessingUnitsSampleIT.java @@ -30,7 +30,9 @@ public void testCreateInstanceWithProcessingUnits() throws Exception { SampleRunner.runSample( () -> CreateInstanceWithProcessingUnitsExample.createInstance(projectId, instanceId)); assertThat(out) - .contains(String.format("Instance %s has %d processing units", - InstanceName.of(projectId, instanceId).toString(), 500)); + .contains( + String.format( + "Instance %s has %d processing units", + InstanceName.of(projectId, instanceId).toString(), 500)); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSampleIT.java index 481bdc16bdad..61bf386a62e9 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSampleIT.java @@ -33,7 +33,8 @@ public void testCreateTableWithForeignKeyDeleteCascade() throws Exception { final CreateDatabaseRequest request = CreateDatabaseRequest.newBuilder() .setCreateStatement("CREATE DATABASE `" + databaseId + "`") - .setParent(InstanceName.of(projectId, instanceId).toString()).build(); + .setParent(InstanceName.of(projectId, instanceId).toString()) + .build(); databaseAdminClient.createDatabaseAsync(request).get(5, TimeUnit.MINUTES); // Runs sample diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CustomInstanceConfigSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CustomInstanceConfigSampleIT.java index 354e11a5045f..3b6aa24f2520 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/CustomInstanceConfigSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/CustomInstanceConfigSampleIT.java @@ -45,15 +45,13 @@ public void testCustomInstanceConfigOperations() throws Exception { // Fetch the instance config that was created above. final String out3 = - SampleRunner.runSample( - () -> ListInstanceConfigsSample.listInstanceConfigs(projectId)); + SampleRunner.runSample(() -> ListInstanceConfigsSample.listInstanceConfigs(projectId)); assertTrue(out3.contains("Available leader options for instance config")); // List the instance config operations. final String out4 = SampleRunner.runSample( - () -> - ListInstanceConfigOperationsSample.listInstanceConfigOperations(projectId)); + () -> ListInstanceConfigOperationsSample.listInstanceConfigOperations(projectId)); assertTrue(out4.contains("Obtained list of instance config operations")); // Update display name to a randomly generated instance config id. diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/DatabaseAddSplitPointsIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/DatabaseAddSplitPointsIT.java index c9215b78cdc4..5c1e0583cae8 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/DatabaseAddSplitPointsIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/DatabaseAddSplitPointsIT.java @@ -22,7 +22,6 @@ import com.google.common.collect.ImmutableList; import java.util.concurrent.ExecutionException; import org.junit.Before; -import org.junit.Test; public class DatabaseAddSplitPointsIT extends SampleTestBase { private static String databaseId; diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/DatabaseRolesIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/DatabaseRolesIT.java index 4b9013e62f48..a4eaeb0ca783 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/DatabaseRolesIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/DatabaseRolesIT.java @@ -34,9 +34,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Integration tests for FGAC samples for GoogleStandardSql dialect. - */ +/** Integration tests for FGAC samples for GoogleStandardSql dialect. */ @RunWith(JUnit4.class) public class DatabaseRolesIT extends SampleTestBaseV2 { @@ -51,22 +49,24 @@ public static void createTestDatabase() throws Exception { com.google.spanner.admin.database.v1.InstanceName.of(projectId, instanceId) .toString()) .setCreateStatement("CREATE DATABASE `" + database + "`") - .addAllExtraStatements(Lists.newArrayList( - "CREATE TABLE Singers (" - + " SingerId INT64 NOT NULL," - + " FirstName STRING(1024)," - + " LastName STRING(1024)," - + " SingerInfo BYTES(MAX)," - + " FullName STRING(2048) AS " - + " (ARRAY_TO_STRING([FirstName, LastName], \" \")) STORED" - + ") PRIMARY KEY (SingerId)", - "CREATE TABLE Albums (" - + " SingerId INT64 NOT NULL," - + " AlbumId INT64 NOT NULL," - + " AlbumTitle STRING(MAX)," - + " MarketingBudget INT64" - + ") PRIMARY KEY (SingerId, AlbumId)," - + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")).build(); + .addAllExtraStatements( + Lists.newArrayList( + "CREATE TABLE Singers (" + + " SingerId INT64 NOT NULL," + + " FirstName STRING(1024)," + + " LastName STRING(1024)," + + " SingerInfo BYTES(MAX)," + + " FullName STRING(2048) AS " + + " (ARRAY_TO_STRING([FirstName, LastName], \" \")) STORED" + + ") PRIMARY KEY (SingerId)", + "CREATE TABLE Albums (" + + " SingerId INT64 NOT NULL," + + " AlbumId INT64 NOT NULL," + + " AlbumTitle STRING(MAX)," + + " MarketingBudget INT64" + + ") PRIMARY KEY (SingerId, AlbumId)," + + " INTERLEAVE IN PARENT Singers ON DELETE CASCADE")) + .build(); databaseAdminClient.createDatabaseAsync(request).get(5, TimeUnit.MINUTES); databaseId = DatabaseId.of(projectId, instanceId, database); } @@ -108,8 +108,13 @@ public void testAddAndDropDatabaseRole() throws Exception { SampleRunner.runSample( () -> AddAndDropDatabaseRole.addAndDropDatabaseRole( - projectId, instanceId, databaseId.getDatabase(), "new_parent", "new_child", - "Singers", "Albums")); + projectId, + instanceId, + databaseId.getDatabase(), + "new_parent", + "new_child", + "Singers", + "Albums")); assertTrue(out.contains("Created roles new_parent and new_child and granted privileges")); assertTrue(out.contains("Revoked privileges and dropped role new_child")); } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSampleIT.java index 2e763949f48f..019e9cf5d823 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSampleIT.java @@ -35,19 +35,21 @@ public void testDropForeignKeyConstraintDeleteCascade() throws Exception { CreateDatabaseRequest.newBuilder() .setCreateStatement("CREATE DATABASE `" + databaseId + "`") .setParent(InstanceName.of(projectId, instanceId).toString()) - .addAllExtraStatements(Lists.newArrayList( - "CREATE TABLE Customers (\n" - + " CustomerId INT64 NOT NULL,\n" - + " CustomerName STRING(62) NOT NULL,\n" - + " ) PRIMARY KEY (CustomerId)", - "CREATE TABLE ShoppingCarts (\n" - + " CartId INT64 NOT NULL,\n" - + " CustomerId INT64 NOT NULL,\n" - + " CustomerName STRING(62) NOT NULL,\n" - + " CONSTRAINT FKShoppingCartsCustomerName" - + " FOREIGN KEY (CustomerName)\n" - + " REFERENCES Customers (CustomerName) ON DELETE CASCADE\n" - + " ) PRIMARY KEY (CartId)\n")).build(); + .addAllExtraStatements( + Lists.newArrayList( + "CREATE TABLE Customers (\n" + + " CustomerId INT64 NOT NULL,\n" + + " CustomerName STRING(62) NOT NULL,\n" + + " ) PRIMARY KEY (CustomerId)", + "CREATE TABLE ShoppingCarts (\n" + + " CartId INT64 NOT NULL,\n" + + " CustomerId INT64 NOT NULL,\n" + + " CustomerName STRING(62) NOT NULL,\n" + + " CONSTRAINT FKShoppingCartsCustomerName" + + " FOREIGN KEY (CustomerName)\n" + + " REFERENCES Customers (CustomerName) ON DELETE CASCADE\n" + + " ) PRIMARY KEY (CartId)\n")) + .build(); databaseAdminClient.createDatabaseAsync(request).get(5, TimeUnit.MINUTES); // Runs sample diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/EncryptionKeyIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/EncryptionKeyIT.java index 247054091436..56df3dc69f4d 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/EncryptionKeyIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/EncryptionKeyIT.java @@ -35,9 +35,9 @@ import org.junit.runners.JUnit4; /** - * Integration tests for: {@link CreateDatabaseWithEncryptionKey}, - * {@link com.example.spanner.admin.archived.CreateBackupWithEncryptionKey} and - * {@link com.example.spanner.admin.archived.RestoreBackupWithEncryptionKey} + * Integration tests for: {@link CreateDatabaseWithEncryptionKey}, {@link + * com.example.spanner.admin.archived.CreateBackupWithEncryptionKey} and {@link + * com.example.spanner.admin.archived.RestoreBackupWithEncryptionKey} */ @RunWith(JUnit4.class) @Ignore @@ -47,12 +47,19 @@ public class EncryptionKeyIT extends SampleTestBaseV2 { @BeforeClass public static void setUp() { - String keyLocation = Preconditions - .checkNotNull(System.getProperty("spanner.test.key.location")); + String keyLocation = + Preconditions.checkNotNull(System.getProperty("spanner.test.key.location")); String keyRing = Preconditions.checkNotNull(System.getProperty("spanner.test.key.ring")); String keyName = Preconditions.checkNotNull(System.getProperty("spanner.test.key.name")); - key = "projects/" + projectId + "/locations/" + keyLocation + "/keyRings/" + keyRing - + "/cryptoKeys/" + keyName; + key = + "projects/" + + projectId + + "/locations/" + + keyLocation + + "/keyRings/" + + keyRing + + "/cryptoKeys/" + + keyName; } @Test @@ -61,39 +68,61 @@ public void testEncryptedDatabaseAndBackupAndRestore() throws Exception { final String backupId = idGenerator.generateBackupId(); final String restoreId = idGenerator.generateDatabaseId(); - String out = SampleRunner.runSample(() -> - SpannerSample.createDatabase( - databaseAdminClient, InstanceName.of(projectId, instanceId), databaseId)); - assertThat(out).contains(String.format( - "Created database [%s]", DatabaseName.of(projectId, instanceId, databaseId))); + String out = + SampleRunner.runSample( + () -> + SpannerSample.createDatabase( + databaseAdminClient, InstanceName.of(projectId, instanceId), databaseId)); + assertThat(out) + .contains( + String.format( + "Created database [%s]", DatabaseName.of(projectId, instanceId, databaseId))); - out = SampleRunner.runSampleWithRetry(() -> - CreateBackupWithEncryptionKey.createBackupWithEncryptionKey( - databaseAdminClient, - projectId, - instanceId, - databaseId, - backupId, - key - ), new ShouldRetryBackupOperation()); - assertThat(out).containsMatch( - "Backup projects/" + projectId + "/instances/" + instanceId + "/backups/" + backupId - + " of size \\d+ bytes was created at (.*) using encryption key " + key); + out = + SampleRunner.runSampleWithRetry( + () -> + CreateBackupWithEncryptionKey.createBackupWithEncryptionKey( + databaseAdminClient, projectId, instanceId, databaseId, backupId, key), + new ShouldRetryBackupOperation()); + assertThat(out) + .containsMatch( + "Backup projects/" + + projectId + + "/instances/" + + instanceId + + "/backups/" + + backupId + + " of size \\d+ bytes was created at (.*) using encryption key " + + key); - out = SampleRunner.runSampleWithRetry(() -> - RestoreBackupWithEncryptionKey.restoreBackupWithEncryptionKey( - databaseAdminClient, - projectId, - instanceId, - backupId, - restoreId, - key - ), new ShouldRetryBackupOperation()); - assertThat(out).contains( - "Database projects/" + projectId + "/instances/" + instanceId + "/databases/" + databaseId - + " restored to projects/" + projectId + "/instances/" + instanceId + "/databases/" - + restoreId + " from backup projects/" + projectId + "/instances/" + instanceId - + "/backups/" + backupId + " using encryption key " + key); + out = + SampleRunner.runSampleWithRetry( + () -> + RestoreBackupWithEncryptionKey.restoreBackupWithEncryptionKey( + databaseAdminClient, projectId, instanceId, backupId, restoreId, key), + new ShouldRetryBackupOperation()); + assertThat(out) + .contains( + "Database projects/" + + projectId + + "/instances/" + + instanceId + + "/databases/" + + databaseId + + " restored to projects/" + + projectId + + "/instances/" + + instanceId + + "/databases/" + + restoreId + + " from backup projects/" + + projectId + + "/instances/" + + instanceId + + "/backups/" + + backupId + + " using encryption key " + + key); } static class ShouldRetryBackupOperation implements Predicate { @@ -108,9 +137,12 @@ public boolean test(SpannerException e) { attempts++; if (attempts == MAX_ATTEMPTS) { // Throw custom exception so it is easier to locate in the log why it went wrong. - throw SpannerExceptionFactory.newSpannerException(ErrorCode.DEADLINE_EXCEEDED, - String.format("Operation failed %d times because of other pending operations. " - + "Giving up operation.\n", attempts), + throw SpannerExceptionFactory.newSpannerException( + ErrorCode.DEADLINE_EXCEEDED, + String.format( + "Operation failed %d times because of other pending operations. " + + "Giving up operation.\n", + attempts), e); } // Wait one minute before retrying. diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/GetCommitStatsSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/GetCommitStatsSampleIT.java index 6bcf307c32de..34fb0af6e157 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/GetCommitStatsSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/GetCommitStatsSampleIT.java @@ -33,9 +33,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Integration tests for {@link GetCommitStatsSample} - */ +/** Integration tests for {@link GetCommitStatsSample} */ @RunWith(JUnit4.class) public class GetCommitStatsSampleIT extends SampleTestBase { @@ -69,24 +67,24 @@ public static void createTestDatabase() throws Exception { @Before public void insertTestData() { final DatabaseClient client = spanner.getDatabaseClient(databaseId); - client.write(Arrays.asList( - Mutation.newInsertBuilder("Singers") - .set("SingerId") - .to(1L) - .set("FirstName") - .to("first name 1") - .set("LastName") - .to("last name 1") - .build(), - Mutation.newInsertBuilder("Singers") - .set("SingerId") - .to(2L) - .set("FirstName") - .to("first name 2") - .set("LastName") - .to("last name 2") - .build() - )); + client.write( + Arrays.asList( + Mutation.newInsertBuilder("Singers") + .set("SingerId") + .to(1L) + .set("FirstName") + .to("first name 1") + .set("LastName") + .to("last name 1") + .build(), + Mutation.newInsertBuilder("Singers") + .set("SingerId") + .to(2L) + .set("FirstName") + .to("first name 2") + .set("LastName") + .to("last name 2") + .build())); } @After diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/GetDatabaseDdlSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/GetDatabaseDdlSampleIT.java index a50f55e35578..c6b1f29944bc 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/GetDatabaseDdlSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/GetDatabaseDdlSampleIT.java @@ -30,13 +30,14 @@ public class GetDatabaseDdlSampleIT extends SampleTestBaseV2 { @Test public void testGetDatabaseDdl() throws Exception { // Finds a possible new leader option - final String instanceConfigId = instanceAdminClient.getInstance( - InstanceName.of(projectId, multiRegionalInstanceId)).getConfig(); + final String instanceConfigId = + instanceAdminClient + .getInstance(InstanceName.of(projectId, multiRegionalInstanceId)) + .getConfig(); final InstanceConfig config = instanceAdminClient.getInstanceConfig(instanceConfigId); assertTrue( "Expected instance config " + instanceConfigId + " to have at least one leader option", - config.getLeaderOptionsList().size() > 0 - ); + config.getLeaderOptionsList().size() > 0); final String defaultLeader = config.getLeaderOptions(0); // Creates database @@ -44,38 +45,44 @@ public void testGetDatabaseDdl() throws Exception { final CreateDatabaseRequest request = CreateDatabaseRequest.newBuilder() .setParent( - com.google.spanner.admin.database.v1.InstanceName.of(projectId, - multiRegionalInstanceId).toString()) + com.google.spanner.admin.database.v1.InstanceName.of( + projectId, multiRegionalInstanceId) + .toString()) .setCreateStatement("CREATE DATABASE `" + databaseId + "`") - .addAllExtraStatements(Lists.newArrayList( - "CREATE TABLE Singers (Id INT64 NOT NULL) PRIMARY KEY (Id)", - "ALTER DATABASE `" - + databaseId - + "` SET OPTIONS ( default_leader = '" - + defaultLeader - + "')" - )).build(); + .addAllExtraStatements( + Lists.newArrayList( + "CREATE TABLE Singers (Id INT64 NOT NULL) PRIMARY KEY (Id)", + "ALTER DATABASE `" + + databaseId + + "` SET OPTIONS ( default_leader = '" + + defaultLeader + + "')")) + .build(); databaseAdminClient.createDatabaseAsync(request).get(5, TimeUnit.MINUTES); // Runs sample - final String out = SampleRunner.runSample(() -> GetDatabaseDdlSample - .getDatabaseDdl(projectId, multiRegionalInstanceId, databaseId) - ); + final String out = + SampleRunner.runSample( + () -> + GetDatabaseDdlSample.getDatabaseDdl( + projectId, multiRegionalInstanceId, databaseId)); assertTrue( - "Expected to have retrieved database DDL for " + databaseId + "." - + " Output received was " + out, - out.contains("Retrieved database DDL for " + databaseId) - ); + "Expected to have retrieved database DDL for " + + databaseId + + "." + + " Output received was " + + out, + out.contains("Retrieved database DDL for " + databaseId)); assertTrue( - "Expected leader to be set to " + defaultLeader + "." - + " Output received was " + out, - out.contains("default_leader = '" + defaultLeader + "'") - ); + "Expected leader to be set to " + defaultLeader + "." + " Output received was " + out, + out.contains("default_leader = '" + defaultLeader + "'")); assertTrue( - "Expected table to have been created in " + databaseId + "." - + " Output received was " + out, - out.contains("CREATE TABLE Singers") - ); + "Expected table to have been created in " + + databaseId + + "." + + " Output received was " + + out, + out.contains("CREATE TABLE Singers")); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/ListDatabasesIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/ListDatabasesIT.java index ce3e56bc64b9..866a3f5f7df0 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/ListDatabasesIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/ListDatabasesIT.java @@ -28,9 +28,7 @@ public class ListDatabasesIT extends SampleTestBaseV2 { @Test public void testListDatabaseRoles() throws Exception { final String out = - SampleRunner.runSample( - () -> - ListDatabasesSample.listDatabases(projectId, instanceId)); + SampleRunner.runSample(() -> ListDatabasesSample.listDatabases(projectId, instanceId)); assertTrue(out.contains("Databases for projects")); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgAsyncExamplesIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgAsyncExamplesIT.java index db5c7362cf81..4fb826fb98d6 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgAsyncExamplesIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgAsyncExamplesIT.java @@ -35,9 +35,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Integration tests for Cloud Spanner Async API examples for Postgresql. - */ +/** Integration tests for Cloud Spanner Async API examples for Postgresql. */ @RunWith(JUnit4.class) @SuppressWarnings("checkstyle:AbbreviationAsWordInName") public class PgAsyncExamplesIT extends SampleTestBase { @@ -52,29 +50,32 @@ public static void createTestDatabase() throws Exception { .createDatabase( databaseAdminClient .newDatabaseBuilder(databaseId) - .setDialect(Dialect.POSTGRESQL).build(), + .setDialect(Dialect.POSTGRESQL) + .build(), Collections.emptyList()) .get(); - databaseAdminClient.updateDatabaseDdl( - instanceId, - database, - Arrays.asList( - "CREATE TABLE Singers (" - + " SingerId bigint NOT NULL," - + " FirstName character varying(1024)," - + " LastName character varying(1024)," - + " SingerInfo bytea," - + " PRIMARY KEY (SingerId)" - + ")", - "CREATE TABLE Albums (" - + " SingerId bigint NOT NULL," - + " AlbumId bigint NOT NULL," - + " AlbumTitle character varying(1024)," - + " MarketingBudget bigint," - + " PRIMARY KEY (SingerId, AlbumId)" - + ") INTERLEAVE IN PARENT Singers ON DELETE CASCADE", - "CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)"), - null).get(); + databaseAdminClient + .updateDatabaseDdl( + instanceId, + database, + Arrays.asList( + "CREATE TABLE Singers (" + + " SingerId bigint NOT NULL," + + " FirstName character varying(1024)," + + " LastName character varying(1024)," + + " SingerInfo bytea," + + " PRIMARY KEY (SingerId)" + + ")", + "CREATE TABLE Albums (" + + " SingerId bigint NOT NULL," + + " AlbumId bigint NOT NULL," + + " AlbumTitle character varying(1024)," + + " MarketingBudget bigint," + + " PRIMARY KEY (SingerId, AlbumId)" + + ") INTERLEAVE IN PARENT Singers ON DELETE CASCADE", + "CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)"), + null) + .get(); } static class Singer { @@ -176,31 +177,34 @@ public void removeTestData() { @Test public void asyncQuery_shouldReturnData() throws Exception { - String out = runSample( - () -> AsyncQueryExample.asyncQuery(spanner.getDatabaseClient(databaseId))); + String out = + runSample(() -> AsyncQueryExample.asyncQuery(spanner.getDatabaseClient(databaseId))); assertAlbumsOutput(out); } @Test - public void asyncQueryToListAsync_shouldReturnData() - throws Exception { - String out = runSample( - () -> PgAsyncQueryToListAsyncExample - .asyncQueryToList(spanner.getDatabaseClient(databaseId))); + public void asyncQueryToListAsync_shouldReturnData() throws Exception { + String out = + runSample( + () -> + PgAsyncQueryToListAsyncExample.asyncQueryToList( + spanner.getDatabaseClient(databaseId))); assertAlbumsOutput(out); } @Test - public void asyncRead_shouldReturnData() - throws Exception { + public void asyncRead_shouldReturnData() throws Exception { String out = runSample(() -> AsyncReadExample.asyncRead(spanner.getDatabaseClient(databaseId))); assertAlbumsOutput(out); } @Test public void asyncReadUsingIndex_shouldReturnDataInCorrectOrder() throws Exception { - String out = runSample(() -> AsyncReadUsingIndexExample - .asyncReadUsingIndex(spanner.getDatabaseClient(databaseId))); + String out = + runSample( + () -> + AsyncReadUsingIndexExample.asyncReadUsingIndex( + spanner.getDatabaseClient(databaseId))); assertThat(out) .contains( "2 Forever Hold Your Peace\n" @@ -212,8 +216,11 @@ public void asyncReadUsingIndex_shouldReturnDataInCorrectOrder() throws Exceptio @Test public void asyncReadOnlyTransaction_shouldReturnData() throws Exception { - String out = runSample(() -> AsyncReadOnlyTransactionExample - .asyncReadOnlyTransaction(spanner.getDatabaseClient(databaseId))); + String out = + runSample( + () -> + AsyncReadOnlyTransactionExample.asyncReadOnlyTransaction( + spanner.getDatabaseClient(databaseId))); assertAlbumsOutput(out); assertSingersOutput(out); } @@ -226,22 +233,25 @@ public void asyncDml_shouldInsertRows() throws Exception { @Test public void asyncRunner_shouldUpdateRows() throws Exception { - String out = runSample( - () -> PgAsyncRunnerExample.asyncRunner(spanner.getDatabaseClient(databaseId))); + String out = + runSample(() -> PgAsyncRunnerExample.asyncRunner(spanner.getDatabaseClient(databaseId))); assertThat(out).contains("2 records updated."); } @Test public void asyncTransactionManager_shouldUpdateRows() throws Exception { - String out = runSample(() -> PgAsyncTransactionManagerExample - .asyncTransactionManager(spanner.getDatabaseClient(databaseId))); + String out = + runSample( + () -> + PgAsyncTransactionManagerExample.asyncTransactionManager( + spanner.getDatabaseClient(databaseId))); assertThat(out).contains("2 records updated."); } @Test public void asyncReadRow_shouldPrintRow() throws Exception { - String out = runSample( - () -> AsyncReadRowExample.asyncReadRow(spanner.getDatabaseClient(databaseId))); + String out = + runSample(() -> AsyncReadRowExample.asyncReadRow(spanner.getDatabaseClient(databaseId))); assertThat(out).contains("1 1 Total Junk"); assertThat(out).doesNotContain("1 2 Go, Go, Go"); assertThat(out).doesNotContain("2 1 Green"); diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgBatchDmlSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgBatchDmlSampleIT.java index 0b105d41b7da..b60ceb05ff5e 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgBatchDmlSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgBatchDmlSampleIT.java @@ -56,4 +56,4 @@ public void testPgBatchDml() throws Exception { assertTrue(out.contains("Inserted 2 singers")); } -} \ No newline at end of file +} diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgCaseSensitivitySampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgCaseSensitivitySampleIT.java index fca4ac55c066..275f544ca7d3 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgCaseSensitivitySampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgCaseSensitivitySampleIT.java @@ -32,7 +32,8 @@ public void testPgCaseSensitivitySample() throws Exception { CreateDatabaseRequest.newBuilder() .setCreateStatement(getCreateDatabaseStatement(databaseId, DatabaseDialect.POSTGRESQL)) .setParent(InstanceName.of(projectId, instanceId).toString()) - .setDatabaseDialect(DatabaseDialect.POSTGRESQL).build(); + .setDatabaseDialect(DatabaseDialect.POSTGRESQL) + .build(); databaseAdminClient.createDatabaseAsync(request).get(); final String out = @@ -41,4 +42,4 @@ public void testPgCaseSensitivitySample() throws Exception { assertTrue(out, out.contains("SingerId: 1, FirstName: Bruce, LastName: Allison")); assertTrue(out, out.contains("SingerId: 1, FullName: Bruce Allison")); } -} \ No newline at end of file +} diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgInterleavedTableSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgInterleavedTableSampleIT.java index 412147da0b71..3ab3c993abca 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgInterleavedTableSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgInterleavedTableSampleIT.java @@ -32,7 +32,8 @@ public void testPgInterleavedTableSample() throws Exception { CreateDatabaseRequest.newBuilder() .setCreateStatement(getCreateDatabaseStatement(databaseId, DatabaseDialect.POSTGRESQL)) .setParent(InstanceName.of(projectId, instanceId).toString()) - .setDatabaseDialect(DatabaseDialect.POSTGRESQL).build(); + .setDatabaseDialect(DatabaseDialect.POSTGRESQL) + .build(); databaseAdminClient.createDatabaseAsync(request).get(); final String out = @@ -40,4 +41,4 @@ public void testPgInterleavedTableSample() throws Exception { () -> PgInterleavedTableSample.pgInterleavedTable(projectId, instanceId, databaseId)); assertTrue(out.contains("Created interleaved table hierarchy using PostgreSQL dialect")); } -} \ No newline at end of file +} diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgPartitionedDmlSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgPartitionedDmlSampleIT.java index 26d7a37b6430..9455c6e94f14 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgPartitionedDmlSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgPartitionedDmlSampleIT.java @@ -88,4 +88,4 @@ public void testPgPartitionedDml() throws Exception { assertTrue(out.contains("Deleted at least 2 inactive users")); } -} \ No newline at end of file +} diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgSpannerSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgSpannerSampleIT.java index d55af6203d5f..ab8a38317de8 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgSpannerSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgSpannerSampleIT.java @@ -36,9 +36,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Unit tests for {@code PgSpannerSample} - */ +/** Unit tests for {@code PgSpannerSample} */ @RunWith(JUnit4.class) @SuppressWarnings("checkstyle:abbreviationaswordinname") public class PgSpannerSampleIT extends SampleTestBaseV2 { @@ -66,17 +64,20 @@ static void deleteStaleTestDatabases() { Timestamp now = Timestamp.now(); Pattern samplePattern = getTestDbIdPattern(PgSpannerSampleIT.baseDbId); Pattern restoredPattern = getTestDbIdPattern("restored"); - for (Database db : dbClient.listDatabases( - InstanceName.of(projectId, instanceId)).iterateAll()) { + for (Database db : + dbClient.listDatabases(InstanceName.of(projectId, instanceId)).iterateAll()) { DatabaseName databaseName = DatabaseName.parse(db.getName()); - if (TimeUnit.HOURS.convert(now.getSeconds() - db.getCreateTime().getSeconds(), - TimeUnit.SECONDS) > 24) { + if (TimeUnit.HOURS.convert( + now.getSeconds() - db.getCreateTime().getSeconds(), TimeUnit.SECONDS) + > 24) { if (databaseName.getDatabase().length() >= DBID_LENGTH) { - if (samplePattern.matcher( - toComparableId(PgSpannerSampleIT.baseDbId, databaseName.getDatabase())).matches()) { + if (samplePattern + .matcher(toComparableId(PgSpannerSampleIT.baseDbId, databaseName.getDatabase())) + .matches()) { dbClient.dropDatabase(db.getName()); } - if (restoredPattern.matcher(toComparableId("restored", databaseName.getDatabase())) + if (restoredPattern + .matcher(toComparableId("restored", databaseName.getDatabase())) .matches()) { dbClient.dropDatabase(db.getName()); } @@ -104,7 +105,7 @@ private String runSample(String command) throws Exception { final PrintStream out = new PrintStream(bout); System.setOut(out); System.out.println(instanceId + ":" + dbId.getDatabase()); - PgSpannerSample.main(new String[]{command, instanceId, dbId.getDatabase()}); + PgSpannerSample.main(new String[] {command, instanceId, dbId.getDatabase()}); System.setOut(stdOut); return bout.toString(); } @@ -179,8 +180,7 @@ public void testSample() throws Exception { System.out.println("Read only transaction ..."); out = runSample("readonlytransaction"); - assertThat(out.replaceAll("[\r\n]+", " ")) - .containsMatch("(Total Junk.*){2}"); + assertThat(out.replaceAll("[\r\n]+", " ")).containsMatch("(Total Junk.*){2}"); System.out.println("Add Timestamp column ..."); out = runSample("addlastupdatetimestampcolumn"); diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgSpannerStandaloneExamplesIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgSpannerStandaloneExamplesIT.java index c906006ef5a8..301cd7ecfa6b 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgSpannerStandaloneExamplesIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/PgSpannerStandaloneExamplesIT.java @@ -87,23 +87,25 @@ public static void createTestDatabase() throws Exception { dbClient.newDatabaseBuilder(dbId).setDialect(Dialect.POSTGRESQL).build(), Collections.emptyList()) .get(); - dbClient.updateDatabaseDdl( - instanceId, - databaseId, - Arrays.asList( - "CREATE TABLE Singers (" - + " SingerId bigint NOT NULL," - + " FirstName character varying(1024)," - + " LastName character varying(1024)," - + " SingerInfo bytea," - + " PRIMARY KEY (SingerId)" - + ")", - "CREATE TABLE Venues (" - + "VenueId bigint NOT NULL," - + "Revenue NUMERIC," - + "VenueDetails JSONB," - + "PRIMARY KEY (VenueId))"), - null).get(); + dbClient + .updateDatabaseDdl( + instanceId, + databaseId, + Arrays.asList( + "CREATE TABLE Singers (" + + " SingerId bigint NOT NULL," + + " FirstName character varying(1024)," + + " LastName character varying(1024)," + + " SingerInfo bytea," + + " PRIMARY KEY (SingerId)" + + ")", + "CREATE TABLE Venues (" + + "VenueId bigint NOT NULL," + + "Revenue NUMERIC," + + "VenueDetails JSONB," + + "PRIMARY KEY (VenueId))"), + null) + .get(); } @AfterClass diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/QueryInformationSchemaDatabaseOptionsSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/QueryInformationSchemaDatabaseOptionsSampleIT.java index e0f95b9ceefe..83d9de30d0bc 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/QueryInformationSchemaDatabaseOptionsSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/QueryInformationSchemaDatabaseOptionsSampleIT.java @@ -29,45 +29,53 @@ public class QueryInformationSchemaDatabaseOptionsSampleIT extends SampleTestBas @Test public void testQueryInformationSchemaDatabaseOptions() throws Exception { // Finds a possible new leader option - final InstanceConfigId instanceConfigId = instanceAdminClient - .getInstance(multiRegionalInstanceId) - .getInstanceConfigId(); - final InstanceConfig config = instanceAdminClient - .getInstanceConfig(instanceConfigId.getInstanceConfig()); + final InstanceConfigId instanceConfigId = + instanceAdminClient.getInstance(multiRegionalInstanceId).getInstanceConfigId(); + final InstanceConfig config = + instanceAdminClient.getInstanceConfig(instanceConfigId.getInstanceConfig()); assertTrue( "Expected instance config " + instanceConfigId + " to have at least one leader option", - config.getLeaderOptions().size() > 0 - ); + config.getLeaderOptions().size() > 0); final String defaultLeader = config.getLeaderOptions().get(0); // Creates database final String databaseId = idGenerator.generateDatabaseId(); - databaseAdminClient.createDatabase( - multiRegionalInstanceId, - databaseId, - Arrays.asList( - "CREATE TABLE Singers (Id INT64 NOT NULL) PRIMARY KEY (Id)", - "ALTER DATABASE `" - + databaseId - + "` SET OPTIONS ( default_leader = '" - + defaultLeader - + "')" - ) - ).get(5, TimeUnit.MINUTES); + databaseAdminClient + .createDatabase( + multiRegionalInstanceId, + databaseId, + Arrays.asList( + "CREATE TABLE Singers (Id INT64 NOT NULL) PRIMARY KEY (Id)", + "ALTER DATABASE `" + + databaseId + + "` SET OPTIONS ( default_leader = '" + + defaultLeader + + "')")) + .get(5, TimeUnit.MINUTES); // Runs sample - final String out = SampleRunner.runSample(() -> QueryInformationSchemaDatabaseOptionsSample - .queryInformationSchemaDatabaseOptions(projectId, multiRegionalInstanceId, databaseId) - ); + final String out = + SampleRunner.runSample( + () -> + QueryInformationSchemaDatabaseOptionsSample.queryInformationSchemaDatabaseOptions( + projectId, multiRegionalInstanceId, databaseId)); assertTrue( - "Expected to have retrieved default_leader for " + databaseId + " as " + defaultLeader + "." - + " Output received was " + out, + "Expected to have retrieved default_leader for " + + databaseId + + " as " + + defaultLeader + + "." + + " Output received was " + + out, out.contains( "The default_leader for projects/" - + projectId + "/instances/" + multiRegionalInstanceId + "/databases/" + databaseId - + " is " + defaultLeader - ) - ); + + projectId + + "/instances/" + + multiRegionalInstanceId + + "/databases/" + + databaseId + + " is " + + defaultLeader)); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/QuickstartSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/QuickstartSampleIT.java index 4084c2599327..73907e376252 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/QuickstartSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/QuickstartSampleIT.java @@ -34,9 +34,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Tests for quickstart sample. - */ +/** Tests for quickstart sample. */ @RunWith(JUnit4.class) @SuppressWarnings("checkstyle:abbreviationaswordinname") public class QuickstartSampleIT { diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleIdGenerator.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleIdGenerator.java index 3b375b071e17..b896db885ce1 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleIdGenerator.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleIdGenerator.java @@ -39,8 +39,11 @@ public class SampleIdGenerator { private final String baseInstanceConfigId; private final String baseInstanceId; - public SampleIdGenerator(String baseDatabaseId, String baseBackupId, - String baseInstanceConfigId, String baseInstanceId) { + public SampleIdGenerator( + String baseDatabaseId, + String baseBackupId, + String baseInstanceConfigId, + String baseInstanceId) { this.baseDatabaseId = baseDatabaseId; this.baseBackupId = baseBackupId; this.baseInstanceConfigId = baseInstanceConfigId; diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleRunner.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleRunner.java index cbd18faa1531..16552716a7fc 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleRunner.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleRunner.java @@ -21,9 +21,7 @@ import java.io.PrintStream; import java.util.function.Predicate; -/** - * Runs a sample and captures the output as a String. - */ +/** Runs a sample and captures the output as a String. */ public class SampleRunner { @FunctionalInterface @@ -41,8 +39,8 @@ public static String runSample(SampleRunnerCallable sample) throws Exception { * SpannerException}. The predicate can return different answers for the same error, for example * by only allowing the retry of a certain error a specific number of times. */ - public static String runSampleWithRetry(SampleRunnerCallable sample, - Predicate shouldRetry) throws Exception { + public static String runSampleWithRetry( + SampleRunnerCallable sample, Predicate shouldRetry) throws Exception { final PrintStream stdOut = System.out; final ByteArrayOutputStream bout = new ByteArrayOutputStream(); final PrintStream out = new PrintStream(bout); diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleTestBase.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleTestBase.java index ccfe3e6d4d1d..164218204fd5 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleTestBase.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleTestBase.java @@ -39,16 +39,15 @@ public class SampleTestBase { protected static final String instanceId = System.getProperty("spanner.test.instance"); protected static final String multiRegionalInstanceId = System.getProperty("spanner.test.instance.mr"); - protected static final String instanceConfigName = System - .getProperty("spanner.test.instance.config"); + protected static final String instanceConfigName = + System.getProperty("spanner.test.instance.config"); protected static SampleIdGenerator idGenerator; @BeforeClass public static void beforeClass() { final String serverUrl = ""; - final SpannerOptions.Builder optionsBuilder = SpannerOptions - .newBuilder() - .setAutoThrottleAdministrativeRequests(); + final SpannerOptions.Builder optionsBuilder = + SpannerOptions.newBuilder().setAutoThrottleAdministrativeRequests(); if (!serverUrl.isEmpty()) { optionsBuilder.setHost(serverUrl); } @@ -57,8 +56,9 @@ public static void beforeClass() { spanner = options.getService(); databaseAdminClient = spanner.getDatabaseAdminClient(); instanceAdminClient = spanner.getInstanceAdminClient(); - idGenerator = new SampleIdGenerator( - BASE_DATABASE_ID, BASE_BACKUP_ID, BASE_INSTANCE_CONFIG_ID, BASE_INSTANCE_ID); + idGenerator = + new SampleIdGenerator( + BASE_DATABASE_ID, BASE_BACKUP_ID, BASE_INSTANCE_CONFIG_ID, BASE_INSTANCE_ID); } @AfterClass diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleTestBaseV2.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleTestBaseV2.java index 5a43261269d9..81866ceb10bb 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleTestBaseV2.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SampleTestBaseV2.java @@ -16,7 +16,6 @@ package com.example.spanner; -import com.example.spanner.SampleIdGenerator; import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient; @@ -29,9 +28,7 @@ import org.junit.AfterClass; import org.junit.BeforeClass; -/** - * Base class for sample integration intests using auto-generated admin clients. - */ +/** Base class for sample integration intests using auto-generated admin clients. */ public class SampleTestBaseV2 { private static final String BASE_INSTANCE_ID = @@ -50,8 +47,8 @@ public class SampleTestBaseV2 { protected static Spanner spanner; protected static final String multiRegionalInstanceId = System.getProperty("spanner.test.instance.mr"); - protected static final String instanceConfigName = System - .getProperty("spanner.test.instance.config"); + protected static final String instanceConfigName = + System.getProperty("spanner.test.instance.config"); protected static SampleIdGenerator idGenerator; @BeforeClass @@ -74,8 +71,9 @@ public static void beforeClass() throws IOException { spanner = options.getService(); databaseAdminClient = DatabaseAdminClient.create(databaseAdminSettingsBuilder.build()); instanceAdminClient = InstanceAdminClient.create(instanceAdminSettingBuilder.build()); - idGenerator = new SampleIdGenerator( - BASE_DATABASE_ID, BASE_BACKUP_ID, BASE_INSTANCE_CONFIG_ID, BASE_INSTANCE_ID); + idGenerator = + new SampleIdGenerator( + BASE_DATABASE_ID, BASE_BACKUP_ID, BASE_INSTANCE_CONFIG_ID, BASE_INSTANCE_ID); } @AfterClass @@ -99,8 +97,7 @@ public static void afterClass() throws InterruptedException { System.out.println("Trying to drop " + databaseId); try { // If the database is not found, it is ignored (no exception is thrown) - databaseAdminClient.dropDatabase( - getDatabaseName(projectId, instanceId, databaseId)); + databaseAdminClient.dropDatabase(getDatabaseName(projectId, instanceId, databaseId)); databaseAdminClient.dropDatabase( getDatabaseName(projectId, multiRegionalInstanceId, databaseId)); } catch (Exception e) { @@ -116,8 +113,7 @@ public static void afterClass() throws InterruptedException { System.out.println("Trying to delete " + backupId); try { // If the backup is not found, it is ignored (no exception is thrown) - databaseAdminClient.deleteBackup( - getBackupName(projectId, instanceId, backupId)); + databaseAdminClient.deleteBackup(getBackupName(projectId, instanceId, backupId)); databaseAdminClient.deleteBackup( getBackupName(projectId, multiRegionalInstanceId, backupId)); } catch (Exception e) { @@ -148,16 +144,15 @@ public static void afterClass() throws InterruptedException { instanceAdminClient.awaitTermination(AWAIT_TERMINATION_SECONDS, TimeUnit.SECONDS); } - static String getDatabaseName(final String projectId, - final String instanceId, final String databaseId) { + static String getDatabaseName( + final String projectId, final String instanceId, final String databaseId) { return String.format( "projects/%s/instances/%s/databases/%s", projectId, instanceId, databaseId); } - static String getBackupName(final String projectId, - final String instanceId, final String backupId) { - return String.format( - "projects/%s/instances/%s/backups/%s", projectId, instanceId, backupId); + static String getBackupName( + final String projectId, final String instanceId, final String backupId) { + return String.format("projects/%s/instances/%s/backups/%s", projectId, instanceId, backupId); } static String getInstanceName(final String projectId, final String instanceId) { diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SequenceSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SequenceSampleIT.java index 5a49a96682ee..e70aa2107bba 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SequenceSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SequenceSampleIT.java @@ -17,7 +17,6 @@ package com.example.spanner; import static com.example.spanner.SampleRunner.runSample; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import com.google.common.collect.ImmutableList; @@ -67,27 +66,20 @@ public void createTestDatabase() throws Exception { CreateDatabaseRequest.newBuilder() .setParent(getInstanceName(projectId, instanceId)) .setCreateStatement(getCreateDatabaseStatement(databaseId, dialect)) - .setDatabaseDialect(dialect).build(); - databaseAdminClient - .createDatabaseAsync(createDatabaseRequest) - .get(10, TimeUnit.MINUTES); + .setDatabaseDialect(dialect) + .build(); + databaseAdminClient.createDatabaseAsync(createDatabaseRequest).get(10, TimeUnit.MINUTES); } @Test public void createSequence() throws Exception { String out; if (dialect == DatabaseDialect.GOOGLE_STANDARD_SQL) { - out = - runSample( - () -> - CreateSequenceSample.createSequence( - projectId, instanceId, databaseId)); + out = runSample(() -> CreateSequenceSample.createSequence(projectId, instanceId, databaseId)); } else { out = runSample( - () -> - PgCreateSequenceSample.pgCreateSequence( - projectId, instanceId, databaseId)); + () -> PgCreateSequenceSample.pgCreateSequence(projectId, instanceId, databaseId)); } assertTrue( out.contains( @@ -102,17 +94,10 @@ public void createSequence() throws Exception { public void alterSequence() throws Exception { String out; if (dialect == DatabaseDialect.GOOGLE_STANDARD_SQL) { - out = - runSample( - () -> - AlterSequenceSample.alterSequence( - projectId, instanceId, databaseId)); + out = runSample(() -> AlterSequenceSample.alterSequence(projectId, instanceId, databaseId)); } else { out = - runSample( - () -> - PgAlterSequenceSample.pgAlterSequence( - projectId, instanceId, databaseId)); + runSample(() -> PgAlterSequenceSample.pgAlterSequence(projectId, instanceId, databaseId)); } assertTrue( out.contains("Altered Seq sequence to skip an inclusive range between 1000 and 5000000")); @@ -125,16 +110,9 @@ public void alterSequence() throws Exception { public void dropSequence() throws Exception { String out; if (dialect == DatabaseDialect.GOOGLE_STANDARD_SQL) { - out = - runSample( - () -> - DropSequenceSample.dropSequence(projectId, instanceId, databaseId)); + out = runSample(() -> DropSequenceSample.dropSequence(projectId, instanceId, databaseId)); } else { - out = - runSample( - () -> - PgDropSequenceSample.pgDropSequence( - projectId, instanceId, databaseId)); + out = runSample(() -> PgDropSequenceSample.pgDropSequence(projectId, instanceId, databaseId)); } assertTrue( out.contains( diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SetMaxCommitDelaySampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SetMaxCommitDelaySampleIT.java index de9e47951f87..fc7f88d59cfb 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SetMaxCommitDelaySampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SetMaxCommitDelaySampleIT.java @@ -33,9 +33,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Integration tests for {@link SetMaxCommitDelaySample} - */ +/** Integration tests for {@link SetMaxCommitDelaySample} */ @RunWith(JUnit4.class) public class SetMaxCommitDelaySampleIT extends SampleTestBase { @@ -69,24 +67,24 @@ public static void createTestDatabase() throws Exception { @Before public void insertTestData() { final DatabaseClient client = spanner.getDatabaseClient(databaseId); - client.write(Arrays.asList( - Mutation.newInsertBuilder("Singers") - .set("SingerId") - .to(1L) - .set("FirstName") - .to("first name 1") - .set("LastName") - .to("last name 1") - .build(), - Mutation.newInsertBuilder("Singers") - .set("SingerId") - .to(2L) - .set("FirstName") - .to("first name 2") - .set("LastName") - .to("last name 2") - .build() - )); + client.write( + Arrays.asList( + Mutation.newInsertBuilder("Singers") + .set("SingerId") + .to(1L) + .set("FirstName") + .to("first name 1") + .set("LastName") + .to("last name 1") + .build(), + Mutation.newInsertBuilder("Singers") + .set("SingerId") + .to(2L) + .set("FirstName") + .to("first name 2") + .set("LastName") + .to("last name 2") + .build())); } @After diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SpannerStandaloneExamplesIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SpannerStandaloneExamplesIT.java index 0acbf198938d..454ca1ca312e 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/SpannerStandaloneExamplesIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/SpannerStandaloneExamplesIT.java @@ -22,14 +22,6 @@ import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; -import com.example.spanner.CustomTimeoutAndRetrySettingsExample; -import com.example.spanner.QueryWithJsonParameterSample; -import com.example.spanner.QueryWithNumericParameterSample; -import com.example.spanner.StatementTimeoutExample; -import com.example.spanner.TransactionTimeoutExample; -import com.example.spanner.UpdateJsonDataSample; -import com.example.spanner.UpdateNumericDataSample; -import com.example.spanner.admin.archived.SpannerSampleIT; import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.spanner.DatabaseAdminClient; import com.google.cloud.spanner.DatabaseClient; diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/TagSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/TagSampleIT.java index 61733c1f0a49..b14ef58c5079 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/TagSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/TagSampleIT.java @@ -17,7 +17,6 @@ package com.example.spanner; import static com.example.spanner.SampleRunner.runSample; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import com.google.cloud.spanner.DatabaseClient; @@ -35,9 +34,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Integration tests for {@link TagSample} - */ +/** Integration tests for {@link TagSample} */ @RunWith(JUnit4.class) public class TagSampleIT extends SampleTestBase { diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/UnnamedParametersIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/UnnamedParametersIT.java index d6c900dd60e0..6973b7920385 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/UnnamedParametersIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/UnnamedParametersIT.java @@ -52,8 +52,9 @@ public void setup() throws ExecutionException, InterruptedException { public void testUnnamedParameters() throws Exception { final String out = SampleRunner.runSample( - () -> UnnamedParametersExample.executeQueryWithUnnamedParameters(projectId, instanceId, - databaseId)); + () -> + UnnamedParametersExample.executeQueryWithUnnamedParameters( + projectId, instanceId, databaseId)); assertTrue(out.contains("Row is inserted.")); assertTrue(out.contains("Google")); assertTrue(out.contains("Row is fetched.")); diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java index b53414a2f5b6..fcbe77d39afb 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java @@ -36,8 +36,8 @@ public void testUpdateDatabase() throws Exception { // Create database final String databaseId = idGenerator.generateDatabaseId(); databaseAdminClient - .createDatabaseAsync(getInstanceName(projectId, instanceId), - "CREATE DATABASE `" + databaseId + "`") + .createDatabaseAsync( + getInstanceName(projectId, instanceId), "CREATE DATABASE `" + databaseId + "`") .get(5, TimeUnit.MINUTES); // Runs sample @@ -46,20 +46,23 @@ public void testUpdateDatabase() throws Exception { () -> UpdateDatabaseSample.updateDatabase(projectId, instanceId, databaseId)); assertTrue( "Expected that database would have been updated. Output received was " + out, - out.contains(String.format( - "Updated database %s", DatabaseName.of(projectId, instanceId, databaseId)))); + out.contains( + String.format( + "Updated database %s", DatabaseName.of(projectId, instanceId, databaseId)))); // Cleanup final com.google.spanner.admin.database.v1.Database database = com.google.spanner.admin.database.v1.Database.newBuilder() .setName(DatabaseName.of(projectId, instanceId, databaseId).toString()) - .setEnableDropProtection(false).build(); + .setEnableDropProtection(false) + .build(); final UpdateDatabaseRequest updateDatabaseRequest = UpdateDatabaseRequest.newBuilder() .setDatabase(database) .setUpdateMask( - FieldMask.newBuilder().addAllPaths( - Lists.newArrayList("enable_drop_protection")).build()) + FieldMask.newBuilder() + .addAllPaths(Lists.newArrayList("enable_drop_protection")) + .build()) .build(); OperationFuture operation = diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSampleIT.java index 2953e02935d7..3f27f19e92e4 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSampleIT.java @@ -29,34 +29,42 @@ public class UpdateDatabaseWithDefaultLeaderSampleIT extends SampleTestBaseV2 { public void testUpdateDatabaseWithDefaultLeader() throws Exception { // Create database final String databaseId = idGenerator.generateDatabaseId(); - final Database createdDatabase = databaseAdminClient - .createDatabaseAsync(getInstanceName(projectId, multiRegionalInstanceId), - "CREATE DATABASE `" + databaseId + "`") - .get(5, TimeUnit.MINUTES); + final Database createdDatabase = + databaseAdminClient + .createDatabaseAsync( + getInstanceName(projectId, multiRegionalInstanceId), + "CREATE DATABASE `" + databaseId + "`") + .get(5, TimeUnit.MINUTES); final String defaultLeader = createdDatabase.getDefaultLeader(); // Finds a possible new leader option final String instanceConfigId = - instanceAdminClient.getInstance(getInstanceName(projectId, multiRegionalInstanceId)) + instanceAdminClient + .getInstance(getInstanceName(projectId, multiRegionalInstanceId)) .getConfig(); final InstanceConfig config = instanceAdminClient.getInstanceConfig(instanceConfigId); final String newLeader = config.getLeaderOptionsList().stream() .filter(leader -> !leader.equals(defaultLeader)) - .findFirst().orElseThrow(() -> - new RuntimeException("Expected to find a leader option different than " - + defaultLeader) - ); + .findFirst() + .orElseThrow( + () -> + new RuntimeException( + "Expected to find a leader option different than " + defaultLeader)); // Runs sample - final String out = SampleRunner.runSample(() -> UpdateDatabaseWithDefaultLeaderSample - .updateDatabaseWithDefaultLeader(projectId, multiRegionalInstanceId, databaseId, newLeader) - ); + final String out = + SampleRunner.runSample( + () -> + UpdateDatabaseWithDefaultLeaderSample.updateDatabaseWithDefaultLeader( + projectId, multiRegionalInstanceId, databaseId, newLeader)); assertTrue( - "Expected that database new leader would had been updated to " + newLeader + "." - + " Output received was " + out, - out.contains("Updated default leader to " + newLeader) - ); + "Expected that database new leader would had been updated to " + + newLeader + + "." + + " Output received was " + + out, + out.contains("Updated default leader to " + newLeader)); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CreateDatabaseWithDefaultLeaderSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CreateDatabaseWithDefaultLeaderSampleIT.java index 12b7c5044d4b..7706c31e4450 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CreateDatabaseWithDefaultLeaderSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CreateDatabaseWithDefaultLeaderSampleIT.java @@ -31,31 +31,28 @@ public void testCreateDatabaseWithDefaultLeader() throws Exception { final String databaseId = idGenerator.generateDatabaseId(); // Finds possible default leader - final InstanceConfigId instanceConfigId = instanceAdminClient - .getInstance(multiRegionalInstanceId) - .getInstanceConfigId(); - final InstanceConfig config = instanceAdminClient - .getInstanceConfig(instanceConfigId.getInstanceConfig()); + final InstanceConfigId instanceConfigId = + instanceAdminClient.getInstance(multiRegionalInstanceId).getInstanceConfigId(); + final InstanceConfig config = + instanceAdminClient.getInstanceConfig(instanceConfigId.getInstanceConfig()); assertTrue( "Expected instance config " + instanceConfigId + " to have at least one leader option", - config.getLeaderOptions().size() > 0 - ); + config.getLeaderOptions().size() > 0); final String defaultLeader = config.getLeaderOptions().get(0); // Runs sample - final String out = SampleRunner.runSample(() -> - CreateDatabaseWithDefaultLeaderSample.createDatabaseWithDefaultLeader( - projectId, - multiRegionalInstanceId, - databaseId, - defaultLeader - ) - ); + final String out = + SampleRunner.runSample( + () -> + CreateDatabaseWithDefaultLeaderSample.createDatabaseWithDefaultLeader( + projectId, multiRegionalInstanceId, databaseId, defaultLeader)); assertTrue( - "Expected created database to have default leader " + defaultLeader + "." - + " Output received was " + out, - out.contains("Default leader: " + defaultLeader) - ); + "Expected created database to have default leader " + + defaultLeader + + "." + + " Output received was " + + out, + out.contains("Default leader: " + defaultLeader)); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CreateDatabaseWithVersionRetentionPeriodSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CreateDatabaseWithVersionRetentionPeriodSampleIT.java index 448b1c10c445..43745a0fe7b3 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CreateDatabaseWithVersionRetentionPeriodSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CreateDatabaseWithVersionRetentionPeriodSampleIT.java @@ -24,9 +24,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Integration tests for {@link CreateDatabaseWithVersionRetentionPeriodSample} - */ +/** Integration tests for {@link CreateDatabaseWithVersionRetentionPeriodSample} */ @RunWith(JUnit4.class) public class CreateDatabaseWithVersionRetentionPeriodSampleIT extends SampleTestBase { @@ -35,14 +33,22 @@ public void createsDatabaseWithVersionRetentionPeriod() throws Exception { final String databaseId = idGenerator.generateDatabaseId(); final String versionRetentionPeriod = "7d"; - final String out = SampleRunner.runSample(() -> CreateDatabaseWithVersionRetentionPeriodSample - .createDatabaseWithVersionRetentionPeriod( - databaseAdminClient, instanceId, databaseId, versionRetentionPeriod - )); + final String out = + SampleRunner.runSample( + () -> + CreateDatabaseWithVersionRetentionPeriodSample + .createDatabaseWithVersionRetentionPeriod( + databaseAdminClient, instanceId, databaseId, versionRetentionPeriod)); - assertThat(out).contains( - "Created database [projects/" + projectId + "/instances/" + instanceId + "/databases/" - + databaseId + "]"); + assertThat(out) + .contains( + "Created database [projects/" + + projectId + + "/instances/" + + instanceId + + "/databases/" + + databaseId + + "]"); assertThat(out).contains("Version retention period: " + versionRetentionPeriod); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CustomInstanceConfigSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CustomInstanceConfigSampleIT.java index c8271225ccba..667a4a0b41bc 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CustomInstanceConfigSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/CustomInstanceConfigSampleIT.java @@ -39,16 +39,14 @@ public void testCustomInstanceConfigOperations() throws Exception { // List the instance config operations. final String out2 = SampleRunner.runSample( - () -> - ListInstanceConfigOperationsSample.listInstanceConfigOperations(projectId)); + () -> ListInstanceConfigOperationsSample.listInstanceConfigOperations(projectId)); assertTrue(out2.contains("Create instance config operation")); // Update display name to a randomly generated instance config id. final String out3 = SampleRunner.runSample( () -> - UpdateInstanceConfigSample.updateInstanceConfig( - projectId, customInstanceConfigId)); + UpdateInstanceConfigSample.updateInstanceConfig(projectId, customInstanceConfigId)); assertTrue(out3.contains("Updated instance configuration")); // Delete the created instance config. diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/EncryptionKeyIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/EncryptionKeyIT.java index ffd0771fa0b6..c06ed9b28a2b 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/EncryptionKeyIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/EncryptionKeyIT.java @@ -45,12 +45,19 @@ public class EncryptionKeyIT extends SampleTestBase { @BeforeClass public static void setUp() { - String keyLocation = Preconditions - .checkNotNull(System.getProperty("spanner.test.key.location")); + String keyLocation = + Preconditions.checkNotNull(System.getProperty("spanner.test.key.location")); String keyRing = Preconditions.checkNotNull(System.getProperty("spanner.test.key.ring")); String keyName = Preconditions.checkNotNull(System.getProperty("spanner.test.key.name")); - key = "projects/" + projectId + "/locations/" + keyLocation + "/keyRings/" + keyRing - + "/cryptoKeys/" + keyName; + key = + "projects/" + + projectId + + "/locations/" + + keyLocation + + "/keyRings/" + + keyRing + + "/cryptoKeys/" + + keyName; } @Test @@ -59,45 +66,67 @@ public void testEncryptedDatabaseAndBackupAndRestore() throws Exception { final String backupId = idGenerator.generateBackupId(); final String restoreId = idGenerator.generateDatabaseId(); - String out = SampleRunner.runSample(() -> - CreateDatabaseWithEncryptionKey.createDatabaseWithEncryptionKey( - databaseAdminClient, - projectId, - instanceId, - databaseId, - key - )); - assertThat(out).contains( - "Database projects/" + projectId + "/instances/" + instanceId + "/databases/" + databaseId - + " created with encryption key " + key); + String out = + SampleRunner.runSample( + () -> + CreateDatabaseWithEncryptionKey.createDatabaseWithEncryptionKey( + databaseAdminClient, projectId, instanceId, databaseId, key)); + assertThat(out) + .contains( + "Database projects/" + + projectId + + "/instances/" + + instanceId + + "/databases/" + + databaseId + + " created with encryption key " + + key); - out = SampleRunner.runSampleWithRetry(() -> - CreateBackupWithEncryptionKey.createBackupWithEncryptionKey( - databaseAdminClient, - projectId, - instanceId, - databaseId, - backupId, - key - ), new ShouldRetryBackupOperation()); - assertThat(out).containsMatch( - "Backup projects/" + projectId + "/instances/" + instanceId + "/backups/" + backupId - + " of size \\d+ bytes was created at (.*) using encryption key " + key); + out = + SampleRunner.runSampleWithRetry( + () -> + CreateBackupWithEncryptionKey.createBackupWithEncryptionKey( + databaseAdminClient, projectId, instanceId, databaseId, backupId, key), + new ShouldRetryBackupOperation()); + assertThat(out) + .containsMatch( + "Backup projects/" + + projectId + + "/instances/" + + instanceId + + "/backups/" + + backupId + + " of size \\d+ bytes was created at (.*) using encryption key " + + key); - out = SampleRunner.runSampleWithRetry(() -> - RestoreBackupWithEncryptionKey.restoreBackupWithEncryptionKey( - databaseAdminClient, - projectId, - instanceId, - backupId, - restoreId, - key - ), new ShouldRetryBackupOperation()); - assertThat(out).contains( - "Database projects/" + projectId + "/instances/" + instanceId + "/databases/" + databaseId - + " restored to projects/" + projectId + "/instances/" + instanceId + "/databases/" - + restoreId + " from backup projects/" + projectId + "/instances/" + instanceId - + "/backups/" + backupId + " using encryption key " + key); + out = + SampleRunner.runSampleWithRetry( + () -> + RestoreBackupWithEncryptionKey.restoreBackupWithEncryptionKey( + databaseAdminClient, projectId, instanceId, backupId, restoreId, key), + new ShouldRetryBackupOperation()); + assertThat(out) + .contains( + "Database projects/" + + projectId + + "/instances/" + + instanceId + + "/databases/" + + databaseId + + " restored to projects/" + + projectId + + "/instances/" + + instanceId + + "/databases/" + + restoreId + + " from backup projects/" + + projectId + + "/instances/" + + instanceId + + "/backups/" + + backupId + + " using encryption key " + + key); } static class ShouldRetryBackupOperation implements Predicate { @@ -112,9 +141,12 @@ public boolean test(SpannerException e) { attempts++; if (attempts == MAX_ATTEMPTS) { // Throw custom exception so it is easier to locate in the log why it went wrong. - throw SpannerExceptionFactory.newSpannerException(ErrorCode.DEADLINE_EXCEEDED, - String.format("Operation failed %d times because of other pending operations. " - + "Giving up operation.\n", attempts), + throw SpannerExceptionFactory.newSpannerException( + ErrorCode.DEADLINE_EXCEEDED, + String.format( + "Operation failed %d times because of other pending operations. " + + "Giving up operation.\n", + attempts), e); } // Wait one minute before retrying. diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/GetDatabaseDdlSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/GetDatabaseDdlSampleIT.java index 404aceca7256..a681a0807c49 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/GetDatabaseDdlSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/GetDatabaseDdlSampleIT.java @@ -31,51 +31,53 @@ public class GetDatabaseDdlSampleIT extends SampleTestBase { @Test public void testGetDatabaseDdl() throws Exception { // Finds a possible new leader option - final InstanceConfigId instanceConfigId = instanceAdminClient - .getInstance(multiRegionalInstanceId) - .getInstanceConfigId(); - final InstanceConfig config = instanceAdminClient - .getInstanceConfig(instanceConfigId.getInstanceConfig()); + final InstanceConfigId instanceConfigId = + instanceAdminClient.getInstance(multiRegionalInstanceId).getInstanceConfigId(); + final InstanceConfig config = + instanceAdminClient.getInstanceConfig(instanceConfigId.getInstanceConfig()); assertTrue( "Expected instance config " + instanceConfigId + " to have at least one leader option", - config.getLeaderOptions().size() > 0 - ); + config.getLeaderOptions().size() > 0); final String defaultLeader = config.getLeaderOptions().get(0); // Creates database final String databaseId = idGenerator.generateDatabaseId(); - databaseAdminClient.createDatabase( - multiRegionalInstanceId, - databaseId, - Arrays.asList( - "CREATE TABLE Singers (Id INT64 NOT NULL) PRIMARY KEY (Id)", - "ALTER DATABASE `" - + databaseId - + "` SET OPTIONS ( default_leader = '" - + defaultLeader - + "')" - ) - ).get(5, TimeUnit.MINUTES); + databaseAdminClient + .createDatabase( + multiRegionalInstanceId, + databaseId, + Arrays.asList( + "CREATE TABLE Singers (Id INT64 NOT NULL) PRIMARY KEY (Id)", + "ALTER DATABASE `" + + databaseId + + "` SET OPTIONS ( default_leader = '" + + defaultLeader + + "')")) + .get(5, TimeUnit.MINUTES); // Runs sample - final String out = SampleRunner.runSample(() -> GetDatabaseDdlSample - .getDatabaseDdl(projectId, multiRegionalInstanceId, databaseId) - ); + final String out = + SampleRunner.runSample( + () -> + GetDatabaseDdlSample.getDatabaseDdl( + projectId, multiRegionalInstanceId, databaseId)); assertTrue( - "Expected to have retrieved database DDL for " + databaseId + "." - + " Output received was " + out, - out.contains("Retrieved database DDL for " + databaseId) - ); + "Expected to have retrieved database DDL for " + + databaseId + + "." + + " Output received was " + + out, + out.contains("Retrieved database DDL for " + databaseId)); assertTrue( - "Expected leader to be set to " + defaultLeader + "." - + " Output received was " + out, - out.contains("default_leader = '" + defaultLeader + "'") - ); + "Expected leader to be set to " + defaultLeader + "." + " Output received was " + out, + out.contains("default_leader = '" + defaultLeader + "'")); assertTrue( - "Expected table to have been created in " + databaseId + "." - + " Output received was " + out, - out.contains("CREATE TABLE Singers") - ); + "Expected table to have been created in " + + databaseId + + "." + + " Output received was " + + out, + out.contains("CREATE TABLE Singers")); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/GetInstanceConfigSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/GetInstanceConfigSampleIT.java index ac3598f549e8..2285f71d685d 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/GetInstanceConfigSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/GetInstanceConfigSampleIT.java @@ -26,14 +26,16 @@ public class GetInstanceConfigSampleIT extends SampleTestBase { @Test public void testGetInstanceConfig() throws Exception { - final String out = SampleRunner.runSample(() -> - GetInstanceConfigSample.getInstanceConfig(projectId, instanceConfigName) - ); + final String out = + SampleRunner.runSample( + () -> GetInstanceConfigSample.getInstanceConfig(projectId, instanceConfigName)); assertTrue( - "Expected instance config " + instanceConfigName + " to contain at least one leader option." - + " Output received was " + out, - out.matches("(?s:.*\\[.+\\].*)") - ); + "Expected instance config " + + instanceConfigName + + " to contain at least one leader option." + + " Output received was " + + out, + out.matches("(?s:.*\\[.+\\].*)")); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/ListInstanceConfigsSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/ListInstanceConfigsSampleIT.java index 8dcee20313ad..071b62436860 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/ListInstanceConfigsSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/ListInstanceConfigsSampleIT.java @@ -26,14 +26,15 @@ public class ListInstanceConfigsSampleIT extends SampleTestBase { @Test public void testListInstanceConfigs() throws Exception { - final String out = SampleRunner.runSample(() -> - ListInstanceConfigsSample.listInstanceConfigs(projectId) - ); + final String out = + SampleRunner.runSample(() -> ListInstanceConfigsSample.listInstanceConfigs(projectId)); assertTrue( - "Expected instance config " + instanceConfigName + " to contain at least one leader option." - + " Output received was " + out, - out.matches("(?s:.*nam6: \\[.+\\].*)") - ); + "Expected instance config " + + instanceConfigName + + " to contain at least one leader option." + + " Output received was " + + out, + out.matches("(?s:.*nam6: \\[.+\\].*)")); } } diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgCaseSensitivitySampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgCaseSensitivitySampleIT.java index 100014643d10..fbbc9924bd3e 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgCaseSensitivitySampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgCaseSensitivitySampleIT.java @@ -45,4 +45,4 @@ public void testPgCaseSensitivitySample() throws Exception { assertTrue(out, out.contains("SingerId: 1, FirstName: Bruce, LastName: Allison")); assertTrue(out, out.contains("SingerId: 1, FullName: Bruce Allison")); } -} \ No newline at end of file +} diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgInterleavedTableSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgInterleavedTableSampleIT.java index b7d229a1b8fe..835067ed74c1 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgInterleavedTableSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgInterleavedTableSampleIT.java @@ -44,4 +44,4 @@ public void testPgInterleavedTableSample() throws Exception { () -> PgInterleavedTableSample.pgInterleavedTable(projectId, instanceId, databaseId)); assertTrue(out.contains("Created interleaved table hierarchy using PostgreSQL dialect")); } -} \ No newline at end of file +} diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgSpannerSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgSpannerSampleIT.java index c4ba80f3f804..b92be07cc113 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgSpannerSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/PgSpannerSampleIT.java @@ -35,9 +35,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Unit tests for {@code PgSpannerSample} - */ +/** Unit tests for {@code PgSpannerSample} */ @RunWith(JUnit4.class) @SuppressWarnings("checkstyle:abbreviationaswordinname") public class PgSpannerSampleIT { @@ -69,14 +67,17 @@ static void deleteStaleTestDatabases() { Pattern samplePattern = getTestDbIdPattern(PgSpannerSampleIT.baseDbId); Pattern restoredPattern = getTestDbIdPattern("restored"); for (Database db : dbClient.listDatabases(PgSpannerSampleIT.instanceId).iterateAll()) { - if (TimeUnit.HOURS.convert(now.getSeconds() - db.getCreateTime().getSeconds(), - TimeUnit.SECONDS) > 24) { + if (TimeUnit.HOURS.convert( + now.getSeconds() - db.getCreateTime().getSeconds(), TimeUnit.SECONDS) + > 24) { if (db.getId().getDatabase().length() >= DBID_LENGTH) { - if (samplePattern.matcher(toComparableId(PgSpannerSampleIT.baseDbId, - db.getId().getDatabase())).matches()) { + if (samplePattern + .matcher(toComparableId(PgSpannerSampleIT.baseDbId, db.getId().getDatabase())) + .matches()) { db.drop(); } - if (restoredPattern.matcher(toComparableId("restored", db.getId().getDatabase())) + if (restoredPattern + .matcher(toComparableId("restored", db.getId().getDatabase())) .matches()) { db.drop(); } @@ -119,7 +120,7 @@ private String runSample(String command) { final PrintStream out = new PrintStream(bout); System.setOut(out); System.out.println(instanceId + ":" + databaseId); - PgSpannerSample.main(new String[]{command, instanceId, databaseId}); + PgSpannerSample.main(new String[] {command, instanceId, databaseId}); System.setOut(stdOut); return bout.toString(); } @@ -194,8 +195,7 @@ public void testSample() throws Exception { System.out.println("Read only transaction ..."); out = runSample("readonlytransaction"); - assertThat(out.replaceAll("[\r\n]+", " ")) - .containsMatch("(Total Junk.*){2}"); + assertThat(out.replaceAll("[\r\n]+", " ")).containsMatch("(Total Junk.*){2}"); System.out.println("Add Timestamp column ..."); out = runSample("addlastupdatetimestampcolumn"); diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/SequenceSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/SequenceSampleIT.java index b55203cb9069..c343abae1f33 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/SequenceSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/SequenceSampleIT.java @@ -17,7 +17,6 @@ package com.example.spanner.admin.archived; import static com.example.spanner.SampleRunner.runSample; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import com.example.spanner.SampleTestBase; diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/SpannerSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/SpannerSampleIT.java index 66410cce4d3b..fea8d639dad5 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/SpannerSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/SpannerSampleIT.java @@ -138,13 +138,15 @@ static void deleteStaleTestDatabases(String instanceId, String baseDbId) { Pattern samplePattern = getTestDbIdPattern(baseDbId); Pattern restoredPattern = getTestDbIdPattern("restored"); for (Database db : dbClient.listDatabases(instanceId).iterateAll()) { - if (TimeUnit.HOURS.convert(now.getSeconds() - db.getCreateTime().getSeconds(), - TimeUnit.SECONDS) > 24) { + if (TimeUnit.HOURS.convert( + now.getSeconds() - db.getCreateTime().getSeconds(), TimeUnit.SECONDS) + > 24) { if (db.getId().getDatabase().length() >= DBID_LENGTH) { if (samplePattern.matcher(toComparableId(baseDbId, db.getId().getDatabase())).matches()) { db.drop(); } - if (restoredPattern.matcher(toComparableId("restored", db.getId().getDatabase())) + if (restoredPattern + .matcher(toComparableId("restored", db.getId().getDatabase())) .matches()) { db.drop(); } @@ -346,27 +348,24 @@ public void testSample() throws Exception { String backupName = String.format( - "%s_%02d", - dbId.getDatabase(), LocalDate.now().get(ChronoField.ALIGNED_WEEK_OF_YEAR)); + "%s_%02d", dbId.getDatabase(), LocalDate.now().get(ChronoField.ALIGNED_WEEK_OF_YEAR)); BackupId backupId = BackupId.of(dbId.getInstanceId(), backupName); out = runSample("createbackup"); assertThat(out).contains("Created backup [" + backupId + "]"); out = runSample("cancelcreatebackup"); - assertThat(out).contains( - "Backup operation for [" + backupId + "_cancel] successfully"); + assertThat(out).contains("Backup operation for [" + backupId + "_cancel] successfully"); // TODO: remove try-catch when filtering on metadata fields works. try { out = runSample("listbackupoperations"); - assertThat(out).contains( - String.format( - "Backup %s on database %s pending:", - backupId.getName(), - dbId.getName())); - assertTrue("Out does not contain copy backup operations", out.contains( - "Copy Backup Operations")); + assertThat(out) + .contains( + String.format( + "Backup %s on database %s pending:", backupId.getName(), dbId.getName())); + assertTrue( + "Out does not contain copy backup operations", out.contains("Copy Backup Operations")); } catch (SpannerException e) { assertThat(e.getErrorCode()).isEqualTo(ErrorCode.INVALID_ARGUMENT); assertThat(e.getMessage()).contains("Cannot evaluate filter expression"); @@ -374,16 +373,17 @@ public void testSample() throws Exception { out = runSample("listbackups"); assertThat(out).contains("All backups:"); - assertThat(out).contains( - String.format("All backups with backup name containing \"%s\":", backupId.getBackup())); - assertThat(out).contains(String.format( - "All backups for databases with a name containing \"%s\":", - dbId.getDatabase())); - assertThat(out).contains( - String.format("All backups that expire before")); + assertThat(out) + .contains( + String.format("All backups with backup name containing \"%s\":", backupId.getBackup())); + assertThat(out) + .contains( + String.format( + "All backups for databases with a name containing \"%s\":", dbId.getDatabase())); + assertThat(out).contains(String.format("All backups that expire before")); assertThat(out).contains("All backups with size greater than 100 bytes:"); - assertThat(out).containsMatch( - Pattern.compile("All databases created after (.+) and that are ready:")); + assertThat(out) + .containsMatch(Pattern.compile("All databases created after (.+) and that are ready:")); assertThat(out).contains("All backups, listed using pagination:"); // All the above tests should include the created backup exactly once, i.e. exactly 7 times. assertThat(countOccurrences(out, backupId.getName())).isEqualTo(7); @@ -396,12 +396,9 @@ public void testSample() throws Exception { while (true) { try { out = runSample("restorebackup"); - assertThat(out).contains( - "Restored database [" - + dbId.getName() - + "] from [" - + backupId.getName() - + "]"); + assertThat(out) + .contains( + "Restored database [" + dbId.getName() + "] from [" + backupId.getName() + "]"); restored = true; break; } catch (SpannerException e) { @@ -412,7 +409,7 @@ public void testSample() throws Exception { if (restoreAttempts == 10) { System.out.println( "Restore operation failed 10 times because of other pending restores. " - + "Giving up restore."); + + "Giving up restore."); break; } Uninterruptibles.sleepUninterruptibly(60L, TimeUnit.SECONDS); @@ -424,18 +421,16 @@ public void testSample() throws Exception { if (restored) { out = runSample("listdatabaseoperations"); - assertThat(out).contains( - String.format( - "Database %s restored from backup", - DatabaseId.of( - dbId.getInstanceId(), - SpannerSample.createRestoredSampleDbId(dbId)) - .getName())); + assertThat(out) + .contains( + String.format( + "Database %s restored from backup", + DatabaseId.of(dbId.getInstanceId(), SpannerSample.createRestoredSampleDbId(dbId)) + .getName())); } out = runSample("updatebackup"); - assertThat(out).contains( - String.format("Updated backup [" + backupId + "]")); + assertThat(out).contains(String.format("Updated backup [" + backupId + "]")); // Drop the restored database before we try to delete the backup. // Otherwise the delete backup operation might fail as the backup is still in use by @@ -455,38 +450,61 @@ public void testEncryptedDatabaseAndBackupSamples() throws Exception { String instanceId = String.format("encrypted-test-%s", UUID.randomUUID()); InstanceAdminClient instanceAdminClient = spanner.getInstanceAdminClient(); instanceAdminClient - .createInstance(InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId)) - .setDisplayName("Encrypted test instance") - .setInstanceConfigId(InstanceConfigId.of(projectId, "regional-" + keyLocation)) - .setNodeCount(1).build()) + .createInstance( + InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId)) + .setDisplayName("Encrypted test instance") + .setInstanceConfigId(InstanceConfigId.of(projectId, "regional-" + keyLocation)) + .setNodeCount(1) + .build()) .get(); try { - String out = SampleRunner - .runSample(() -> CreateDatabaseWithEncryptionKey.createDatabaseWithEncryptionKey(dbClient, - projectId, instanceId, encryptedDatabaseId, key)); - assertThat(out).contains(String.format( - "Database projects/%s/instances/%s/databases/%s created with encryption key %s", - projectId, instanceId, encryptedDatabaseId, key)); - - out = SampleRunner.runSampleWithRetry( - () -> CreateBackupWithEncryptionKey.createBackupWithEncryptionKey(dbClient, projectId, - instanceId, encryptedDatabaseId, encryptedBackupId, key), - new ShouldRetryBackupOperation()); - assertThat(out).containsMatch(String.format( - "Backup projects/%s/instances/%s/backups/%s of size \\d+ bytes " - + "was created at (.*) using encryption key %s", - projectId, instanceId, encryptedBackupId, key)); - - out = SampleRunner.runSampleWithRetry( - () -> RestoreBackupWithEncryptionKey.restoreBackupWithEncryptionKey(dbClient, projectId, - instanceId, encryptedBackupId, encryptedRestoreId, key), - new ShouldRetryBackupOperation()); - assertThat(out).contains(String.format( - "Database projects/%s/instances/%s/databases/%s" - + " restored to projects/%s/instances/%s/databases/%s" - + " from backup projects/%s/instances/%s/backups/%s" + " using encryption key %s", - projectId, instanceId, encryptedDatabaseId, projectId, instanceId, encryptedRestoreId, - projectId, instanceId, encryptedBackupId, key)); + String out = + SampleRunner.runSample( + () -> + CreateDatabaseWithEncryptionKey.createDatabaseWithEncryptionKey( + dbClient, projectId, instanceId, encryptedDatabaseId, key)); + assertThat(out) + .contains( + String.format( + "Database projects/%s/instances/%s/databases/%s created with encryption key %s", + projectId, instanceId, encryptedDatabaseId, key)); + + out = + SampleRunner.runSampleWithRetry( + () -> + CreateBackupWithEncryptionKey.createBackupWithEncryptionKey( + dbClient, projectId, instanceId, encryptedDatabaseId, encryptedBackupId, key), + new ShouldRetryBackupOperation()); + assertThat(out) + .containsMatch( + String.format( + "Backup projects/%s/instances/%s/backups/%s of size \\d+ bytes " + + "was created at (.*) using encryption key %s", + projectId, instanceId, encryptedBackupId, key)); + + out = + SampleRunner.runSampleWithRetry( + () -> + RestoreBackupWithEncryptionKey.restoreBackupWithEncryptionKey( + dbClient, projectId, instanceId, encryptedBackupId, encryptedRestoreId, key), + new ShouldRetryBackupOperation()); + assertThat(out) + .contains( + String.format( + "Database projects/%s/instances/%s/databases/%s" + + " restored to projects/%s/instances/%s/databases/%s" + + " from backup projects/%s/instances/%s/backups/%s" + + " using encryption key %s", + projectId, + instanceId, + encryptedDatabaseId, + projectId, + instanceId, + encryptedRestoreId, + projectId, + instanceId, + encryptedBackupId, + key)); } finally { // Delete the backups from the test instance first, as the instance can only be deleted once // all backups have been deleted. @@ -504,9 +522,11 @@ private static void deleteAllBackups(String instanceId) throws InterruptedExcept backup.delete(); break; } catch (SpannerException e) { - if (e.getErrorCode() == ErrorCode.FAILED_PRECONDITION && e.getMessage() - .contains("Please try deleting the backup once the restore or post-restore optimize " - + "operations have completed on these databases.")) { + if (e.getErrorCode() == ErrorCode.FAILED_PRECONDITION + && e.getMessage() + .contains( + "Please try deleting the backup once the restore or post-restore optimize " + + "operations have completed on these databases.")) { // Wait 30 seconds and then retry. Thread.sleep(30_000L); } else { @@ -531,14 +551,14 @@ private String runSampleRunnable(Runnable sample) { public void testCreateInstanceSample() { String instanceId = formatForTest("sample-inst"); String out = - runSampleRunnable(() -> { - try { - CreateInstanceExample.createInstance( - dbId.getInstanceId().getProject(), instanceId); - } finally { - spanner.getInstanceAdminClient().deleteInstance(instanceId); - } - }); + runSampleRunnable( + () -> { + try { + CreateInstanceExample.createInstance(dbId.getInstanceId().getProject(), instanceId); + } finally { + spanner.getInstanceAdminClient().deleteInstance(instanceId); + } + }); assertThat(out) .contains( String.format( @@ -578,9 +598,12 @@ public boolean test(SpannerException e) { attempts++; if (attempts == MAX_ATTEMPTS) { // Throw custom exception so it is easier to locate in the log why it went wrong. - throw SpannerExceptionFactory.newSpannerException(ErrorCode.DEADLINE_EXCEEDED, - String.format("Operation failed %d times because of other pending operations. " - + "Giving up operation.\n", attempts), + throw SpannerExceptionFactory.newSpannerException( + ErrorCode.DEADLINE_EXCEEDED, + String.format( + "Operation failed %d times because of other pending operations. " + + "Giving up operation.\n", + attempts), e); } // Wait one minute before retrying. diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/UpdateDatabaseSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/UpdateDatabaseSampleIT.java index 29a99ed3b890..561631c890aa 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/UpdateDatabaseSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/UpdateDatabaseSampleIT.java @@ -21,7 +21,6 @@ import com.example.spanner.SampleRunner; import com.example.spanner.SampleTestBase; -import com.example.spanner.admin.archived.UpdateDatabaseSample; import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.spanner.Database; import com.google.cloud.spanner.DatabaseId; diff --git a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/UpdateDatabaseWithDefaultLeaderSampleIT.java b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/UpdateDatabaseWithDefaultLeaderSampleIT.java index ce657575f07a..5ff2216fc0fa 100644 --- a/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/UpdateDatabaseWithDefaultLeaderSampleIT.java +++ b/java-spanner/samples/snippets/src/test/java/com/example/spanner/admin/archived/UpdateDatabaseWithDefaultLeaderSampleIT.java @@ -20,7 +20,6 @@ import com.example.spanner.SampleRunner; import com.example.spanner.SampleTestBase; -import com.example.spanner.admin.archived.UpdateDatabaseWithDefaultLeaderSample; import com.google.cloud.spanner.Database; import com.google.cloud.spanner.InstanceConfig; import com.google.cloud.spanner.InstanceConfigId; @@ -34,35 +33,39 @@ public class UpdateDatabaseWithDefaultLeaderSampleIT extends SampleTestBase { public void testUpdateDatabaseWithDefaultLeader() throws Exception { // Create database final String databaseId = idGenerator.generateDatabaseId(); - final Database createdDatabase = databaseAdminClient - .createDatabase(multiRegionalInstanceId, databaseId, Collections.emptyList()) - .get(5, TimeUnit.MINUTES); + final Database createdDatabase = + databaseAdminClient + .createDatabase(multiRegionalInstanceId, databaseId, Collections.emptyList()) + .get(5, TimeUnit.MINUTES); final String defaultLeader = createdDatabase.getDefaultLeader(); // Finds a possible new leader option - final InstanceConfigId instanceConfigId = instanceAdminClient - .getInstance(multiRegionalInstanceId) - .getInstanceConfigId(); - final InstanceConfig config = instanceAdminClient - .getInstanceConfig(instanceConfigId.getInstanceConfig()); - final String newLeader = config - .getLeaderOptions() - .stream() - .filter(leader -> !leader.equals(defaultLeader)) - .findFirst() - .orElseThrow(() -> - new RuntimeException("Expected to find a leader option different than " + defaultLeader) - ); + final InstanceConfigId instanceConfigId = + instanceAdminClient.getInstance(multiRegionalInstanceId).getInstanceConfigId(); + final InstanceConfig config = + instanceAdminClient.getInstanceConfig(instanceConfigId.getInstanceConfig()); + final String newLeader = + config.getLeaderOptions().stream() + .filter(leader -> !leader.equals(defaultLeader)) + .findFirst() + .orElseThrow( + () -> + new RuntimeException( + "Expected to find a leader option different than " + defaultLeader)); // Runs sample - final String out = SampleRunner.runSample(() -> UpdateDatabaseWithDefaultLeaderSample - .updateDatabaseWithDefaultLeader(projectId, multiRegionalInstanceId, databaseId, newLeader) - ); + final String out = + SampleRunner.runSample( + () -> + UpdateDatabaseWithDefaultLeaderSample.updateDatabaseWithDefaultLeader( + projectId, multiRegionalInstanceId, databaseId, newLeader)); assertTrue( - "Expected that database new leader would had been updated to " + newLeader + "." - + " Output received was " + out, - out.contains("Updated default leader to " + newLeader) - ); + "Expected that database new leader would had been updated to " + + newLeader + + "." + + " Output received was " + + out, + out.contains("Updated default leader to " + newLeader)); } }