Skip to content

Commit 8defc9c

Browse files
committed
feat: add QueryOptions to Spanner samples
1 parent a823f2c commit 8defc9c

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

spanner/cloud-client/src/main/java/com/example/spanner/SpannerSample.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import com.google.common.io.BaseEncoding;
4646
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
4747
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;
48+
import com.google.spanner.v1.ExecuteSqlRequest.QueryOptions;
4849
import java.sql.Timestamp;
4950
import java.time.Instant;
5051
import java.util.ArrayList;
@@ -1433,6 +1434,45 @@ static void queryWithTimestampParameter(DatabaseClient dbClient) {
14331434
}
14341435
// [END spanner_query_with_timestamp_parameter]
14351436

1437+
// [START spanner_create_client_with_query_options]
1438+
static void clientWithQueryOptions(DatabaseId db) {
1439+
SpannerOptions options =
1440+
SpannerOptions.newBuilder()
1441+
.setDefaultQueryOptions(
1442+
db, QueryOptions.newBuilder().setOptimizerVersion("latest").build())
1443+
.build();
1444+
Spanner spanner = options.getService();
1445+
DatabaseClient dbClient = spanner.getDatabaseClient(db);
1446+
try (ResultSet resultSet =
1447+
dbClient
1448+
.singleUse()
1449+
.executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) {
1450+
while (resultSet.next()) {
1451+
System.out.printf(
1452+
"%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2));
1453+
}
1454+
}
1455+
}
1456+
// [END spanner_create_client_with_query_options]
1457+
1458+
// [START spanner_query_with_query_options]
1459+
static void queryWithQueryOptions(DatabaseClient dbClient) {
1460+
try (ResultSet resultSet =
1461+
dbClient
1462+
.singleUse()
1463+
.executeQuery(
1464+
Statement
1465+
.newBuilder("SELECT SingerId, AlbumId, AlbumTitle FROM Albums")
1466+
.withQueryOptions(QueryOptions.newBuilder().setOptimizerVersion("latest").build())
1467+
.build())) {
1468+
while (resultSet.next()) {
1469+
System.out.printf(
1470+
"%d %d %s\n", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2));
1471+
}
1472+
}
1473+
}
1474+
// [END spanner_query_with_query_options]
1475+
14361476
static void run(
14371477
DatabaseClient dbClient,
14381478
DatabaseAdminClient dbAdminClient,
@@ -1589,6 +1629,12 @@ static void run(
15891629
case "querywithtimestampparameter":
15901630
queryWithTimestampParameter(dbClient);
15911631
break;
1632+
case "clientwithqueryoptions":
1633+
clientWithQueryOptions(database);
1634+
break;
1635+
case "querywithqueryoptions":
1636+
queryWithQueryOptions(dbClient);
1637+
break;
15921638
default:
15931639
printUsageAndExit();
15941640
}
@@ -1649,6 +1695,8 @@ static void printUsageAndExit() {
16491695
System.err.println(" SpannerExample querywithint my-instance example-db");
16501696
System.err.println(" SpannerExample querywithstring my-instance example-db");
16511697
System.err.println(" SpannerExample querywithtimestampparameter my-instance example-db");
1698+
System.err.println(" SpannerExample clientwithqueryoptions my-instance example-db");
1699+
System.err.println(" SpannerExample querywithqueryoptions my-instance example-db");
16521700
System.exit(1);
16531701
}
16541702

spanner/cloud-client/src/test/java/com/example/spanner/SpannerSampleIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ public void testSample() throws Exception {
216216

217217
out = runSample("querywithbytes");
218218
assertThat(out).contains("4 Venue 4");
219-
219+
220220
out = runSample("querywithdate");
221221
assertThat(out).contains("4 Venue 4 2018-09-02");
222222
assertThat(out).contains("42 Venue 42 2018-10-01");
@@ -236,6 +236,11 @@ public void testSample() throws Exception {
236236
assertThat(out).contains("4 Venue 4");
237237
assertThat(out).contains("19 Venue 19");
238238
assertThat(out).contains("42 Venue 42");
239+
240+
out = runSample("clientwithqueryoptions");
241+
assertThat(out).contains("1 1 Total Junk");
242+
out = runSample("querywithqueryoptions");
243+
assertThat(out).contains("1 1 Total Junk");
239244
}
240245

241246
private String formatForTest(String name) {

0 commit comments

Comments
 (0)