Skip to content

Commit aa729a0

Browse files
committed
Merge branch 'main' of https://github.com/googleapis/java-spanner into grpc-telemetry-client-interceptor
2 parents 0446fb5 + 3007145 commit aa729a0

File tree

463 files changed

+6325
-1656
lines changed

Some content is hidden

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

463 files changed

+6325
-1656
lines changed

.github/workflows/hermetic_library_generation.yaml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@ name: Hermetic library generation upon generation config change through pull req
1717
on:
1818
pull_request:
1919

20+
env:
21+
HEAD_REF: ${{ github.head_ref }}
22+
REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }}
23+
2024
jobs:
2125
library_generation:
2226
# skip pull requests coming from a forked repository
23-
if: github.event.pull_request.head.repo.full_name == github.repository
27+
if: github.env.REPO_FULL_NAME == github.repository
2428
runs-on: ubuntu-latest
2529
steps:
2630
- uses: actions/checkout@v4
@@ -30,11 +34,11 @@ jobs:
3034
- name: Generate changed libraries
3135
shell: bash
3236
run: |
33-
set -x
37+
set -ex
3438
[ -z "$(git config user.email)" ] && git config --global user.email "[email protected]"
3539
[ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot"
3640
bash .github/scripts/hermetic_library_generation.sh \
3741
--target_branch ${{ github.base_ref }} \
38-
--current_branch ${{ github.head_ref }}
42+
--current_branch $HEAD_REF
3943
env:
4044
GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }}

CHANGELOG.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,46 @@
11
# Changelog
22

3+
## [6.74.0](https://github.com/googleapis/java-spanner/compare/v6.73.0...v6.74.0) (2024-08-27)
4+
5+
6+
### Features
7+
8+
* **spanner:** Add edition field to the instance proto ([6b7e6ca](https://github.com/googleapis/java-spanner/commit/6b7e6ca109ea9679b5e36598d3c343fa40bff724))
9+
10+
11+
### Documentation
12+
13+
* Change the example timestamps in Spanner Graph java sample code ([#3295](https://github.com/googleapis/java-spanner/issues/3295)) ([b6490b6](https://github.com/googleapis/java-spanner/commit/b6490b6a6ee2b7399431881a5e87b5ef7b577c89))
14+
15+
## [6.73.0](https://github.com/googleapis/java-spanner/compare/v6.72.0...v6.73.0) (2024-08-22)
16+
17+
18+
### Features
19+
20+
* Add option for cancelling queries when closing client ([#3276](https://github.com/googleapis/java-spanner/issues/3276)) ([95da1ed](https://github.com/googleapis/java-spanner/commit/95da1eddbc979f4ce78c9d1ac15bc4c1faba6dca))
21+
22+
23+
### Bug Fixes
24+
25+
* Github workflow vulnerable to script injection ([#3232](https://github.com/googleapis/java-spanner/issues/3232)) ([599255c](https://github.com/googleapis/java-spanner/commit/599255c36d1fbe8317705a7eeb2a9e400c3efd15))
26+
* Make DecodeMode.DIRECT the deafult ([#3280](https://github.com/googleapis/java-spanner/issues/3280)) ([f31a95a](https://github.com/googleapis/java-spanner/commit/f31a95ab105407305e988e86c8f7b0d8654995e0))
27+
* Synchronize lazy ResultSet decoding ([#3267](https://github.com/googleapis/java-spanner/issues/3267)) ([4219cf8](https://github.com/googleapis/java-spanner/commit/4219cf86dba5e44d55f13ab118113f119c92b9e9))
28+
29+
30+
### Dependencies
31+
32+
* Update dependency com.google.cloud:sdk-platform-java-config to v3.34.0 ([#3277](https://github.com/googleapis/java-spanner/issues/3277)) ([c449a91](https://github.com/googleapis/java-spanner/commit/c449a91628b005481996bce5ab449d62496a4d2d))
33+
* Update dependency commons-cli:commons-cli to v1.9.0 ([#3275](https://github.com/googleapis/java-spanner/issues/3275)) ([84790f7](https://github.com/googleapis/java-spanner/commit/84790f7d437e88739487b148bf963f0ac9dc3f96))
34+
* Update dependency io.opentelemetry:opentelemetry-bom to v1.41.0 ([#3269](https://github.com/googleapis/java-spanner/issues/3269)) ([a7458e9](https://github.com/googleapis/java-spanner/commit/a7458e970e4ca55ff3e312b2129e890576145db1))
35+
* Update dependency org.hamcrest:hamcrest to v3 ([#3271](https://github.com/googleapis/java-spanner/issues/3271)) ([fc2e343](https://github.com/googleapis/java-spanner/commit/fc2e343dc06f80617a2cd6f2bea59b0631e70678))
36+
* Update dependency org.junit.vintage:junit-vintage-engine to v5.11.0 ([#3272](https://github.com/googleapis/java-spanner/issues/3272)) ([1bc0c46](https://github.com/googleapis/java-spanner/commit/1bc0c469b99ebf3778592b04dbf175b00bf5b06e))
37+
* Update opentelemetry.version to v1.41.0 ([#3270](https://github.com/googleapis/java-spanner/issues/3270)) ([88f6b56](https://github.com/googleapis/java-spanner/commit/88f6b56fb243bb17b814a7ae150c8f38dced119a))
38+
39+
40+
### Documentation
41+
42+
* Create a few code snippets as examples for using Spanner Graph using Java ([#3234](https://github.com/googleapis/java-spanner/issues/3234)) ([61f0ab7](https://github.com/googleapis/java-spanner/commit/61f0ab7a48bc3e51b830534b1cfa70e40166ec91))
43+
344
## [6.72.0](https://github.com/googleapis/java-spanner/compare/v6.71.0...v6.72.0) (2024-08-07)
445

546

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ If you are using Maven without the BOM, add this to your dependencies:
5050
If you are using Gradle 5.x or later, add this to your dependencies:
5151

5252
```Groovy
53-
implementation platform('com.google.cloud:libraries-bom:26.43.0')
53+
implementation platform('com.google.cloud:libraries-bom:26.44.0')
5454
5555
implementation 'com.google.cloud:google-cloud-spanner'
5656
```
@@ -516,6 +516,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-spanner/tree/
516516
| Create Database With Version Retention Period Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/CreateDatabaseWithVersionRetentionPeriodSample.java) |
517517
| Create Instance Config Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateInstanceConfigSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/CreateInstanceConfigSample.java) |
518518
| Create Instance Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateInstanceExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/CreateInstanceExample.java) |
519+
| Create Instance Partition Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java) |
519520
| Create Instance With Autoscaling Config Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAutoscalingConfigExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithAutoscalingConfigExample.java) |
520521
| Create Instance With Processing Units Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithProcessingUnitsExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithProcessingUnitsExample.java) |
521522
| Create Sequence Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateSequenceSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/CreateSequenceSample.java) |

benchmarks/pom.xml

Lines changed: 1 addition & 1 deletion
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.72.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
27+
<version>6.74.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
2828
</parent>
2929

3030
<properties>

generation_config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
gapic_generator_version: 2.43.0
2-
googleapis_commitish: 7314e20f5e3b2550b2e10a8c53f58ae57c511773
3-
libraries_bom_version: 26.43.0
1+
gapic_generator_version: 2.44.0
2+
googleapis_commitish: 6f3c628e7fc39b5ca7186aba1a67ae39454d0752
3+
libraries_bom_version: 26.44.0
44
libraries:
55
- api_shortname: spanner
66
name_pretty: Cloud Spanner

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.72.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
56+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
62+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
67+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
72+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
77+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
82+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
87+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
92+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
8+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
15+
<version>6.74.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1616
</parent>
1717

1818
<properties>

google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudClientExecutor.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import com.google.cloud.spanner.encryption.CustomerManagedEncryption;
7676
import com.google.cloud.spanner.v1.stub.SpannerStubSettings;
7777
import com.google.common.base.Function;
78+
import com.google.common.base.Joiner;
7879
import com.google.common.base.Preconditions;
7980
import com.google.common.collect.Lists;
8081
import com.google.common.util.concurrent.ThreadFactoryBuilder;
@@ -191,6 +192,16 @@ public CloudClientExecutor(boolean enableGrpcFaultInjector) {
191192
this.enableGrpcFaultInjector = enableGrpcFaultInjector;
192193
}
193194

195+
// Helper for unexpected results.
196+
public static String unexpectedExceptionResponse(Exception e) {
197+
return "Unexpected error in Github Cloud Java Client Executor: "
198+
+ e
199+
+ " Msg: "
200+
+ e.getMessage()
201+
+ " Stack: "
202+
+ Joiner.on("\n").join(e.getStackTrace());
203+
}
204+
194205
/**
195206
* Implementation of a ReadWriteTransaction, which is a wrapper of the cloud TransactionRunner. It
196207
* stores all the status and related variables from the start to finish, and control the running
@@ -1083,7 +1094,7 @@ private Status executeCreateCloudInstance(
10831094
return sender.finishWithError(
10841095
toStatus(
10851096
SpannerExceptionFactory.newSpannerException(
1086-
ErrorCode.INVALID_ARGUMENT, "Unexpected error: " + e.getMessage())));
1097+
ErrorCode.INVALID_ARGUMENT, CloudClientExecutor.unexpectedExceptionResponse(e))));
10871098
}
10881099
return sender.finishWithOK();
10891100
}

google-cloud-spanner-executor/src/main/resources/META-INF/native-image/com.google.cloud.spanner.executor.v1/reflect-config.json

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2987,6 +2987,15 @@
29872987
"allDeclaredClasses": true,
29882988
"allPublicClasses": true
29892989
},
2990+
{
2991+
"name": "com.google.spanner.admin.instance.v1.Instance$Edition",
2992+
"queryAllDeclaredConstructors": true,
2993+
"queryAllPublicConstructors": true,
2994+
"queryAllDeclaredMethods": true,
2995+
"allPublicMethods": true,
2996+
"allDeclaredClasses": true,
2997+
"allPublicClasses": true
2998+
},
29902999
{
29913000
"name": "com.google.spanner.admin.instance.v1.Instance$State",
29923001
"queryAllDeclaredConstructors": true,
@@ -3239,6 +3248,60 @@
32393248
"allDeclaredClasses": true,
32403249
"allPublicClasses": true
32413250
},
3251+
{
3252+
"name": "com.google.spanner.admin.instance.v1.MoveInstanceMetadata",
3253+
"queryAllDeclaredConstructors": true,
3254+
"queryAllPublicConstructors": true,
3255+
"queryAllDeclaredMethods": true,
3256+
"allPublicMethods": true,
3257+
"allDeclaredClasses": true,
3258+
"allPublicClasses": true
3259+
},
3260+
{
3261+
"name": "com.google.spanner.admin.instance.v1.MoveInstanceMetadata$Builder",
3262+
"queryAllDeclaredConstructors": true,
3263+
"queryAllPublicConstructors": true,
3264+
"queryAllDeclaredMethods": true,
3265+
"allPublicMethods": true,
3266+
"allDeclaredClasses": true,
3267+
"allPublicClasses": true
3268+
},
3269+
{
3270+
"name": "com.google.spanner.admin.instance.v1.MoveInstanceRequest",
3271+
"queryAllDeclaredConstructors": true,
3272+
"queryAllPublicConstructors": true,
3273+
"queryAllDeclaredMethods": true,
3274+
"allPublicMethods": true,
3275+
"allDeclaredClasses": true,
3276+
"allPublicClasses": true
3277+
},
3278+
{
3279+
"name": "com.google.spanner.admin.instance.v1.MoveInstanceRequest$Builder",
3280+
"queryAllDeclaredConstructors": true,
3281+
"queryAllPublicConstructors": true,
3282+
"queryAllDeclaredMethods": true,
3283+
"allPublicMethods": true,
3284+
"allDeclaredClasses": true,
3285+
"allPublicClasses": true
3286+
},
3287+
{
3288+
"name": "com.google.spanner.admin.instance.v1.MoveInstanceResponse",
3289+
"queryAllDeclaredConstructors": true,
3290+
"queryAllPublicConstructors": true,
3291+
"queryAllDeclaredMethods": true,
3292+
"allPublicMethods": true,
3293+
"allDeclaredClasses": true,
3294+
"allPublicClasses": true
3295+
},
3296+
{
3297+
"name": "com.google.spanner.admin.instance.v1.MoveInstanceResponse$Builder",
3298+
"queryAllDeclaredConstructors": true,
3299+
"queryAllPublicConstructors": true,
3300+
"queryAllDeclaredMethods": true,
3301+
"allPublicMethods": true,
3302+
"allDeclaredClasses": true,
3303+
"allPublicClasses": true
3304+
},
32423305
{
32433306
"name": "com.google.spanner.admin.instance.v1.OperationProgress",
32443307
"queryAllDeclaredConstructors": true,

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.72.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.74.0</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.72.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
14+
<version>6.74.0</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/GrpcResultSet.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.google.spanner.v1.ResultSetMetadata;
2626
import com.google.spanner.v1.ResultSetStats;
2727
import java.util.ArrayList;
28+
import java.util.Collections;
2829
import java.util.List;
2930
import javax.annotation.Nullable;
3031

@@ -35,6 +36,7 @@ class GrpcResultSet extends AbstractResultSet<List<Object>> implements ProtobufR
3536
private final DecodeMode decodeMode;
3637
private ResultSetMetadata metadata;
3738
private GrpcStruct currRow;
39+
private List<Object> rowData;
3840
private SpannerException error;
3941
private ResultSetStats statistics;
4042
private boolean closed;
@@ -85,7 +87,15 @@ public boolean next() throws SpannerException {
8587
throw SpannerExceptionFactory.newSpannerException(
8688
ErrorCode.FAILED_PRECONDITION, AbstractReadContext.NO_TRANSACTION_RETURNED_MSG);
8789
}
88-
currRow = new GrpcStruct(iterator.type(), new ArrayList<>(), decodeMode);
90+
if (rowData == null) {
91+
rowData = new ArrayList<>(metadata.getRowType().getFieldsCount());
92+
if (decodeMode != DecodeMode.DIRECT) {
93+
rowData = Collections.synchronizedList(rowData);
94+
}
95+
} else {
96+
rowData.clear();
97+
}
98+
currRow = new GrpcStruct(iterator.type(), rowData, decodeMode);
8999
}
90100
boolean hasNext = currRow.consumeRow(iterator);
91101
if (!hasNext) {

0 commit comments

Comments
 (0)