Skip to content

Commit a0cb6cd

Browse files
authored
Merge branch 'main' into generate-libraries-main
2 parents 62117e1 + 68784ff commit a0cb6cd

File tree

62 files changed

+2641
-197
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2641
-197
lines changed

benchmarks/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<parent>
2525
<groupId>com.google.cloud</groupId>
2626
<artifactId>google-cloud-spanner-parent</artifactId>
27-
<version>6.89.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
27+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
2828
</parent>
2929

3030
<properties>
@@ -92,7 +92,7 @@
9292
<dependency>
9393
<groupId>com.google.cloud</groupId>
9494
<artifactId>google-cloud-spanner</artifactId>
95-
<version>6.84.0</version>
95+
<version>6.89.0</version>
9696
</dependency>
9797
<dependency>
9898
<groupId>commons-cli</groupId>

google-cloud-spanner-bom/pom.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner-bom</artifactId>
6-
<version>6.89.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>pom</packaging>
88
<parent>
99
<groupId>com.google.cloud</groupId>
@@ -53,43 +53,43 @@
5353
<dependency>
5454
<groupId>com.google.cloud</groupId>
5555
<artifactId>google-cloud-spanner</artifactId>
56-
<version>6.89.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
56+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
5757
</dependency>
5858
<dependency>
5959
<groupId>com.google.cloud</groupId>
6060
<artifactId>google-cloud-spanner</artifactId>
6161
<type>test-jar</type>
62-
<version>6.89.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
62+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
6363
</dependency>
6464
<dependency>
6565
<groupId>com.google.api.grpc</groupId>
6666
<artifactId>grpc-google-cloud-spanner-v1</artifactId>
67-
<version>6.89.0</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
67+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
6868
</dependency>
6969
<dependency>
7070
<groupId>com.google.api.grpc</groupId>
7171
<artifactId>grpc-google-cloud-spanner-admin-instance-v1</artifactId>
72-
<version>6.89.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
72+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
7373
</dependency>
7474
<dependency>
7575
<groupId>com.google.api.grpc</groupId>
7676
<artifactId>grpc-google-cloud-spanner-admin-database-v1</artifactId>
77-
<version>6.89.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
77+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
7878
</dependency>
7979
<dependency>
8080
<groupId>com.google.api.grpc</groupId>
8181
<artifactId>proto-google-cloud-spanner-admin-instance-v1</artifactId>
82-
<version>6.89.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
82+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
8383
</dependency>
8484
<dependency>
8585
<groupId>com.google.api.grpc</groupId>
8686
<artifactId>proto-google-cloud-spanner-v1</artifactId>
87-
<version>6.89.0</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
87+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
8888
</dependency>
8989
<dependency>
9090
<groupId>com.google.api.grpc</groupId>
9191
<artifactId>proto-google-cloud-spanner-admin-database-v1</artifactId>
92-
<version>6.89.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
92+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
9393
</dependency>
9494
</dependencies>
9595
</dependencyManagement>

google-cloud-spanner-executor/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>com.google.cloud</groupId>
77
<artifactId>google-cloud-spanner-executor</artifactId>
8-
<version>6.89.0</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
8+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
99
<packaging>jar</packaging>
1010
<name>Google Cloud Spanner Executor</name>
1111

1212
<parent>
1313
<groupId>com.google.cloud</groupId>
1414
<artifactId>google-cloud-spanner-parent</artifactId>
15-
<version>6.89.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
15+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1616
</parent>
1717

1818
<properties>

google-cloud-spanner/clirr-ignored-differences.xml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,58 @@
566566
<method>java.util.List getFloat32Array()</method>
567567
</difference>
568568

569+
<!-- INTERVAL -->
570+
<difference>
571+
<differenceType>7012</differenceType>
572+
<className>com/google/cloud/spanner/StructReader</className>
573+
<method>com.google.cloud.spanner.Interval getInterval(int)</method>
574+
</difference>
575+
<difference>
576+
<differenceType>7012</differenceType>
577+
<className>com/google/cloud/spanner/StructReader</className>
578+
<method>com.google.cloud.spanner.Interval getInterval(java.lang.String)</method>
579+
</difference>
580+
<difference>
581+
<differenceType>7012</differenceType>
582+
<className>com/google/cloud/spanner/StructReader</className>
583+
<method>com.google.cloud.spanner.Interval[] getIntervalArray(int)</method>
584+
</difference>
585+
<difference>
586+
<differenceType>7012</differenceType>
587+
<className>com/google/cloud/spanner/StructReader</className>
588+
<method>com.google.cloud.spanner.Interval[] getIntervalArray(java.lang.String)</method>
589+
</difference>
590+
<difference>
591+
<differenceType>7012</differenceType>
592+
<className>com/google/cloud/spanner/StructReader</className>
593+
<method>java.util.List getIntervalList(int)</method>
594+
</difference>
595+
<difference>
596+
<differenceType>7012</differenceType>
597+
<className>com/google/cloud/spanner/StructReader</className>
598+
<method>java.util.List getIntervalList(java.lang.String)</method>
599+
</difference>
600+
<difference>
601+
<differenceType>7013</differenceType>
602+
<className>com/google/cloud/spanner/AbstractStructReader</className>
603+
<method>com.google.cloud.spanner.Interval getIntervalInternal(int)</method>
604+
</difference>
605+
<difference>
606+
<differenceType>7013</differenceType>
607+
<className>com/google/cloud/spanner/AbstractStructReader</className>
608+
<method>java.util.List getIntervalListInternal(int)</method>
609+
</difference>
610+
<difference>
611+
<differenceType>7013</differenceType>
612+
<className>com/google/cloud/spanner/Value</className>
613+
<method>com.google.cloud.spanner.Interval getInterval()</method>
614+
</difference>
615+
<difference>
616+
<differenceType>7013</differenceType>
617+
<className>com/google/cloud/spanner/Value</className>
618+
<method>java.util.List getIntervalArray()</method>
619+
</difference>
620+
569621
<!-- (Internal change, use stream timeout) -->
570622
<difference>
571623
<differenceType>7012</differenceType>
@@ -850,6 +902,18 @@
850902
<className>com/google/cloud/spanner/connection/Connection</className>
851903
<method>java.lang.String getDefaultSequenceKind()</method>
852904
</difference>
905+
906+
<!-- Default isolation level -->
907+
<difference>
908+
<differenceType>7012</differenceType>
909+
<className>com/google/cloud/spanner/connection/Connection</className>
910+
<method>void setDefaultIsolationLevel(com.google.spanner.v1.TransactionOptions$IsolationLevel)</method>
911+
</difference>
912+
<difference>
913+
<differenceType>7012</differenceType>
914+
<className>com/google/cloud/spanner/connection/Connection</className>
915+
<method>com.google.spanner.v1.TransactionOptions$IsolationLevel getDefaultIsolationLevel()</method>
916+
</difference>
853917

854918
<!-- Removed ConnectionOptions$ConnectionProperty in favor of the more generic ConnectionProperty class. -->
855919
<difference>

google-cloud-spanner/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner</artifactId>
6-
<version>6.89.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>jar</packaging>
88
<name>Google Cloud Spanner</name>
99
<url>https://github.com/googleapis/java-spanner</url>
1010
<description>Java idiomatic client for Google Cloud Spanner.</description>
1111
<parent>
1212
<groupId>com.google.cloud</groupId>
1313
<artifactId>google-cloud-spanner-parent</artifactId>
14-
<version>6.89.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
14+
<version>6.89.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1515
</parent>
1616
<properties>
1717
<site.installationModule>google-cloud-spanner</site.installationModule>

google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractReadContext.java

Lines changed: 61 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,32 @@ ByteString getTransactionId() {
404404
}
405405
}
406406

407+
/**
408+
* Initializes the transaction with the timestamp specified within MultiUseReadOnlyTransaction.
409+
* This is used only for fallback of PartitionQueryRequest and PartitionReadRequest with
410+
* Multiplexed Session.
411+
*/
412+
void initFallbackTransaction() {
413+
synchronized (txnLock) {
414+
span.addAnnotation("Creating Transaction");
415+
TransactionOptions.Builder options = TransactionOptions.newBuilder();
416+
if (timestamp != null) {
417+
options
418+
.getReadOnlyBuilder()
419+
.setReadTimestamp(timestamp.toProto())
420+
.setReturnReadTimestamp(true);
421+
} else {
422+
bound.applyToBuilder(options.getReadOnlyBuilder()).setReturnReadTimestamp(true);
423+
}
424+
final BeginTransactionRequest request =
425+
BeginTransactionRequest.newBuilder()
426+
.setSession(session.getName())
427+
.setOptions(options)
428+
.build();
429+
initTransactionInternal(request);
430+
}
431+
}
432+
407433
void initTransaction() {
408434
SessionImpl.throwIfTransactionsPending();
409435

@@ -419,40 +445,43 @@ void initTransaction() {
419445
return;
420446
}
421447
span.addAnnotation("Creating Transaction");
448+
TransactionOptions.Builder options = TransactionOptions.newBuilder();
449+
bound.applyToBuilder(options.getReadOnlyBuilder()).setReturnReadTimestamp(true);
450+
final BeginTransactionRequest request =
451+
BeginTransactionRequest.newBuilder()
452+
.setSession(session.getName())
453+
.setOptions(options)
454+
.build();
455+
initTransactionInternal(request);
456+
}
457+
}
458+
459+
private void initTransactionInternal(BeginTransactionRequest request) {
460+
try {
461+
Transaction transaction =
462+
rpc.beginTransaction(request, getTransactionChannelHint(), isRouteToLeader());
463+
if (!transaction.hasReadTimestamp()) {
464+
throw SpannerExceptionFactory.newSpannerException(
465+
ErrorCode.INTERNAL, "Missing expected transaction.read_timestamp metadata field");
466+
}
467+
if (transaction.getId().isEmpty()) {
468+
throw SpannerExceptionFactory.newSpannerException(
469+
ErrorCode.INTERNAL, "Missing expected transaction.id metadata field");
470+
}
422471
try {
423-
TransactionOptions.Builder options = TransactionOptions.newBuilder();
424-
bound.applyToBuilder(options.getReadOnlyBuilder()).setReturnReadTimestamp(true);
425-
final BeginTransactionRequest request =
426-
BeginTransactionRequest.newBuilder()
427-
.setSession(session.getName())
428-
.setOptions(options)
429-
.build();
430-
Transaction transaction =
431-
rpc.beginTransaction(request, getTransactionChannelHint(), isRouteToLeader());
432-
if (!transaction.hasReadTimestamp()) {
433-
throw SpannerExceptionFactory.newSpannerException(
434-
ErrorCode.INTERNAL, "Missing expected transaction.read_timestamp metadata field");
435-
}
436-
if (transaction.getId().isEmpty()) {
437-
throw SpannerExceptionFactory.newSpannerException(
438-
ErrorCode.INTERNAL, "Missing expected transaction.id metadata field");
439-
}
440-
try {
441-
timestamp = Timestamp.fromProto(transaction.getReadTimestamp());
442-
} catch (IllegalArgumentException e) {
443-
throw SpannerExceptionFactory.newSpannerException(
444-
ErrorCode.INTERNAL, "Bad value in transaction.read_timestamp metadata field", e);
445-
}
446-
transactionId = transaction.getId();
447-
span.addAnnotation(
448-
"Transaction Creation Done",
449-
ImmutableMap.of(
450-
"Id", transaction.getId().toStringUtf8(), "Timestamp", timestamp.toString()));
451-
452-
} catch (SpannerException e) {
453-
span.addAnnotation("Transaction Creation Failed", e);
454-
throw e;
472+
timestamp = Timestamp.fromProto(transaction.getReadTimestamp());
473+
} catch (IllegalArgumentException e) {
474+
throw SpannerExceptionFactory.newSpannerException(
475+
ErrorCode.INTERNAL, "Bad value in transaction.read_timestamp metadata field", e);
455476
}
477+
transactionId = transaction.getId();
478+
span.addAnnotation(
479+
"Transaction Creation Done",
480+
ImmutableMap.of(
481+
"Id", transaction.getId().toStringUtf8(), "Timestamp", timestamp.toString()));
482+
} catch (SpannerException e) {
483+
span.addAnnotation("Transaction Creation Failed", e);
484+
throw e;
456485
}
457486
}
458487
}

google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractResultSet.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,11 @@ protected Date getDateInternal(int columnIndex) {
434434
return currRow().getDateInternal(columnIndex);
435435
}
436436

437+
@Override
438+
protected Interval getIntervalInternal(int columnIndex) {
439+
return currRow().getIntervalInternal(columnIndex);
440+
}
441+
437442
@Override
438443
protected Value getValueInternal(int columnIndex) {
439444
return currRow().getValueInternal(columnIndex);
@@ -526,6 +531,11 @@ protected List<Date> getDateListInternal(int columnIndex) {
526531
return currRow().getDateListInternal(columnIndex);
527532
}
528533

534+
@Override
535+
protected List<Interval> getIntervalListInternal(int columnIndex) {
536+
return currRow().getIntervalListInternal(columnIndex);
537+
}
538+
529539
@Override
530540
protected List<Struct> getStructListInternal(int columnIndex) {
531541
return currRow().getStructListInternal(columnIndex);

google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractStructReader.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ protected String getPgJsonbInternal(int columnIndex) {
6767

6868
protected abstract Date getDateInternal(int columnIndex);
6969

70+
protected abstract Interval getIntervalInternal(int columnIndex);
71+
7072
protected <T extends AbstractMessage> T getProtoMessageInternal(int columnIndex, T message) {
7173
throw new UnsupportedOperationException("Not implemented");
7274
}
@@ -128,6 +130,8 @@ protected List<String> getPgJsonbListInternal(int columnIndex) {
128130

129131
protected abstract List<Date> getDateListInternal(int columnIndex);
130132

133+
protected abstract List<Interval> getIntervalListInternal(int columnIndex);
134+
131135
protected abstract List<Struct> getStructListInternal(int columnIndex);
132136

133137
@Override
@@ -299,6 +303,19 @@ public Date getDate(String columnName) {
299303
return getDateInternal(columnIndex);
300304
}
301305

306+
@Override
307+
public Interval getInterval(int columnIndex) {
308+
checkNonNullOfType(columnIndex, Type.interval(), columnIndex);
309+
return getIntervalInternal(columnIndex);
310+
}
311+
312+
@Override
313+
public Interval getInterval(String columnName) {
314+
int columnIndex = getColumnIndex(columnName);
315+
checkNonNullOfType(columnIndex, Type.interval(), columnName);
316+
return getIntervalInternal(columnIndex);
317+
}
318+
302319
@Override
303320
public <T extends ProtocolMessageEnum> T getProtoEnum(
304321
int columnIndex, Function<Integer, ProtocolMessageEnum> method) {
@@ -583,6 +600,19 @@ public List<Date> getDateList(String columnName) {
583600
return getDateListInternal(columnIndex);
584601
}
585602

603+
@Override
604+
public List<Interval> getIntervalList(int columnIndex) {
605+
checkNonNullOfType(columnIndex, Type.array(Type.interval()), columnIndex);
606+
return getIntervalListInternal(columnIndex);
607+
}
608+
609+
@Override
610+
public List<Interval> getIntervalList(String columnName) {
611+
int columnIndex = getColumnIndex(columnName);
612+
checkNonNullOfType(columnIndex, Type.array(Type.interval()), columnName);
613+
return getIntervalListInternal(columnIndex);
614+
}
615+
586616
@Override
587617
public List<Struct> getStructList(int columnIndex) {
588618
checkNonNullArrayOfStruct(columnIndex, columnIndex);

0 commit comments

Comments
 (0)