use of com.google.cloud.spanner.Partition in project google-cloud-java by GoogleCloudPlatform.
the class BatchClientSnippets method partitionReadUsingIndex.
void partitionReadUsingIndex() {
// [START partition_read_using_index]
final BatchReadOnlyTransaction txn = batchClient.batchReadOnlyTransaction(TimestampBound.strong());
List<Partition> partitions = txn.partitionReadUsingIndex(PartitionOptions.getDefaultInstance(), "Singers", "SingerId", KeySet.all(), Arrays.asList("SingerId", "FirstName", "LastName"));
for (Partition p : partitions) {
try (ResultSet results = txn.execute(p)) {
while (results.next()) {
long singerId = results.getLong(0);
String firstName = results.getString(1);
String lastName = results.getString(2);
System.out.println("[" + singerId + "] " + firstName + " " + lastName);
}
}
}
// [END partition_read_using_index]
}
use of com.google.cloud.spanner.Partition in project google-cloud-java by GoogleCloudPlatform.
the class BatchClientSnippets method partitionQuery.
void partitionQuery() {
// [START partition_query]
final BatchReadOnlyTransaction txn = batchClient.batchReadOnlyTransaction(TimestampBound.strong());
List<Partition> partitions = txn.partitionQuery(PartitionOptions.getDefaultInstance(), Statement.of("SELECT SingerId, FirstName, LastName FROM Singers"));
for (final Partition p : partitions) {
try (ResultSet results = txn.execute(p)) {
while (results.next()) {
long singerId = results.getLong(0);
String firstName = results.getString(1);
String lastName = results.getString(2);
System.out.println("[" + singerId + "] " + firstName + " " + lastName);
}
}
}
// [END partition_query]
}
use of com.google.cloud.spanner.Partition in project spanner-jdbc by olavloite.
the class CloudSpannerStatement method execute.
@Override
public boolean execute(String sql) throws SQLException {
String[] sqlTokens = getTokens(sql);
CustomDriverStatement custom = getCustomDriverStatement(sqlTokens);
if (custom != null)
return custom.execute(sqlTokens);
Statement statement = null;
boolean ddl = isDDLStatement(sqlTokens);
if (!ddl) {
try {
statement = CCJSqlParserUtil.parse(sanitizeSQL(sql));
} catch (JSQLParserException | TokenMgrException e) {
throw new CloudSpannerSQLException("Error while parsing sql statement " + sql + ": " + e.getLocalizedMessage(), Code.INVALID_ARGUMENT, e);
}
}
if (!ddl && statement instanceof Select) {
determineForceSingleUseReadContext((Select) statement);
if (!isForceSingleUseReadContext() && getConnection().isBatchReadOnly()) {
List<Partition> partitions = partitionQuery(com.google.cloud.spanner.Statement.of(sql));
currentResultSets = new ArrayList<>(partitions.size());
for (Partition p : partitions) {
currentResultSets.add(new CloudSpannerPartitionResultSet(this, getBatchReadOnlyTransaction(), p, sql));
}
} else {
try (ReadContext context = getReadContext()) {
com.google.cloud.spanner.ResultSet rs = context.executeQuery(com.google.cloud.spanner.Statement.of(sql));
currentResultSets = Arrays.asList(new CloudSpannerResultSet(this, rs, sql));
currentResultSetIndex = 0;
lastUpdateCount = -1;
}
}
return true;
} else {
lastUpdateCount = executeUpdate(sql);
currentResultSetIndex = 0;
currentResultSets = null;
return false;
}
}
use of com.google.cloud.spanner.Partition in project spanner-jdbc by olavloite.
the class CloudSpannerPreparedStatement method execute.
@Override
public boolean execute() throws SQLException {
CustomDriverStatement custom = getCustomDriverStatement(sqlTokens);
if (custom != null)
return custom.execute(sqlTokens);
Statement statement = null;
boolean ddl = isDDLStatement();
if (!ddl) {
try {
statement = CCJSqlParserUtil.parse(sanitizeSQL(sql));
} catch (JSQLParserException | TokenMgrException e) {
throw new CloudSpannerSQLException(PARSE_ERROR + sql + ": " + e.getLocalizedMessage(), Code.INVALID_ARGUMENT, e);
}
}
if (!ddl && statement instanceof Select) {
determineForceSingleUseReadContext((Select) statement);
com.google.cloud.spanner.Statement.Builder builder = createSelectBuilder(statement, sql);
if (!isForceSingleUseReadContext() && getConnection().isBatchReadOnly()) {
List<Partition> partitions = partitionQuery(builder.build());
currentResultSets = new ArrayList<>(partitions.size());
for (Partition p : partitions) {
currentResultSets.add(new CloudSpannerPartitionResultSet(this, getBatchReadOnlyTransaction(), p, sql));
}
} else {
try (ReadContext context = getReadContext()) {
com.google.cloud.spanner.ResultSet rs = context.executeQuery(builder.build());
currentResultSets = Arrays.asList(new CloudSpannerResultSet(this, rs, sql));
currentResultSetIndex = 0;
lastUpdateCount = -1;
}
}
return true;
} else {
lastUpdateCount = executeUpdate();
currentResultSets = null;
currentResultSetIndex = 0;
return false;
}
}
use of com.google.cloud.spanner.Partition in project spanner-jdbc by olavloite.
the class CloudSpannerPartitionResultSetTest method createSubject.
private CloudSpannerPartitionResultSet createSubject() {
Partition partition = mock(Partition.class);
BatchReadOnlyTransaction transaction = mock(BatchReadOnlyTransaction.class);
ResultSet rs = CloudSpannerResultSetTest.getMockResultSet();
when(transaction.execute(partition)).thenReturn(rs);
return new CloudSpannerPartitionResultSet(mock(CloudSpannerStatement.class), transaction, partition, "SELECT * FROM FOO");
}
Aggregations