@@ -427,6 +427,36 @@ void CreateDatabase(std::vector<std::string> const& argv) {
427
427
(argv[0 ], argv[1 ], argv[2 ]);
428
428
}
429
429
430
+ void AddIndex (std::vector<std::string> const & argv) {
431
+ if (argv.size () != 3 ) {
432
+ throw std::runtime_error (
433
+ " add-index <project-id> <instance-id> <database-id>" );
434
+ }
435
+ // [START spanner_create_index]
436
+ using google::cloud::future;
437
+ using google::cloud::StatusOr;
438
+ [](std::string const & project_id, std::string const & instance_id,
439
+ std::string const & database_id) {
440
+ google::cloud::spanner::DatabaseAdminClient client;
441
+ google::cloud::spanner::Database database (project_id, instance_id,
442
+ database_id);
443
+ future<StatusOr<
444
+ google::spanner::admin::database::v1::UpdateDatabaseDdlMetadata>>
445
+ future = client.UpdateDatabase (
446
+ database,
447
+ {" CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)" });
448
+ StatusOr<google::spanner::admin::database::v1::UpdateDatabaseDdlMetadata>
449
+ result = future.get ();
450
+ if (!result) {
451
+ throw std::runtime_error (result.status ().message ());
452
+ }
453
+ std::cout << " `AlbumsByAlbumTitle` Index successfully added, new DDL:\n "
454
+ << result->DebugString () << " \n " ;
455
+ }
456
+ // [END spanner_create_index]
457
+ (argv[0 ], argv[1 ], argv[2 ]);
458
+ }
459
+
430
460
// ! [get-database]
431
461
void GetDatabase (google::cloud::spanner::DatabaseAdminClient client,
432
462
std::string const & project_id, std::string const & instance_id,
@@ -1289,6 +1319,7 @@ int RunOneCommand(std::vector<std::string> argv) {
1289
1319
{" remove-database-reader" , &RemoveDatabaseReaderCommand},
1290
1320
{" instance-test-iam-permissions" , &InstanceTestIamPermissionsCommand},
1291
1321
{" create-database" , &CreateDatabase},
1322
+ {" add-index" , &AddIndex},
1292
1323
{" get-database" , &GetDatabaseCommand},
1293
1324
{" get-database-ddl" , &GetDatabaseCommandDdl},
1294
1325
{" add-column" , &AddColumn},
@@ -1441,6 +1472,9 @@ void RunAll() {
1441
1472
std::cout << " \n Running spanner_create_database sample\n " ;
1442
1473
RunOneCommand ({" " , " create-database" , project_id, instance_id, database_id});
1443
1474
1475
+ std::cout << " \n Running spanner_create_index sample\n " ;
1476
+ RunOneCommand ({" " , " add-index" , project_id, instance_id, database_id});
1477
+
1444
1478
std::cout << " \n Running spanner get-database sample\n " ;
1445
1479
RunOneCommand ({" " , " get-database" , project_id, instance_id, database_id});
1446
1480
0 commit comments