bitField0_ = (bitField0_ & ~0x00000001); } else { ensureKeysIsMutable(); keys_.addAll(other.keys_); onChanged(); keysBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKeysFieldBuilder() : null; } else { bitField0_ = (bitField0_ & ~0x00000002); } else { ensureRangesIsMutable(); ranges_.addAll(other.ranges_); onChanged(); rangesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getRangesFieldBuilder() : null; } else { setAll(other.getAll()); this.mergeUnknownFields(other.unknownFields);
subBuilder.mergeFrom(keySet_); keySet_ = subBuilder.buildPartial();
private com.google.protobuf.RepeatedFieldBuilderV3< com.google.protobuf.ListValue, com.google.protobuf.ListValue.Builder, com.google.protobuf.ListValueOrBuilder> getKeysFieldBuilder() { if (keysBuilder_ == null) { keysBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< com.google.protobuf.ListValue, com.google.protobuf.ListValue.Builder, com.google.protobuf.ListValueOrBuilder>( keys_, ((bitField0_ & 0x00000001) == 0x00000001), getParentForChildren(), isClean()); keys_ = null; } return keysBuilder_; }
subBuilder.mergeFrom(keySet_); keySet_ = subBuilder.buildPartial();
input.readMessage(com.google.spanner.v1.KeySet.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(keySet_); keySet_ = subBuilder.buildPartial();
if (keySet_ != null) { keySet_ = com.google.spanner.v1.KeySet.newBuilder(keySet_).mergeFrom(value).buildPartial(); } else { keySet_ = value;
@Test @SuppressWarnings("all") public void streamingReadTest() throws Exception { boolean chunkedValue = true; ByteString resumeToken = ByteString.copyFromUtf8("103"); PartialResultSet expectedResponse = PartialResultSet.newBuilder() .setChunkedValue(chunkedValue) .setResumeToken(resumeToken) .build(); mockSpanner.addResponse(expectedResponse); SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); String table = "table110115790"; List<String> columns = new ArrayList<>(); KeySet keySet = KeySet.newBuilder().build(); ReadRequest request = ReadRequest.newBuilder() .setSession(session.toString()) .setTable(table) .addAllColumns(columns) .setKeySet(keySet) .build(); MockStreamObserver<PartialResultSet> responseObserver = new MockStreamObserver<>(); ServerStreamingCallable<ReadRequest, PartialResultSet> callable = client.streamingReadCallable(); callable.serverStreamingCall(request, responseObserver); List<PartialResultSet> actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); }
@Test @SuppressWarnings("all") public void streamingReadExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); mockSpanner.addException(exception); SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); String table = "table110115790"; List<String> columns = new ArrayList<>(); KeySet keySet = KeySet.newBuilder().build(); ReadRequest request = ReadRequest.newBuilder() .setSession(session.toString()) .setTable(table) .addAllColumns(columns) .setKeySet(keySet) .build(); MockStreamObserver<PartialResultSet> responseObserver = new MockStreamObserver<>(); ServerStreamingCallable<ReadRequest, PartialResultSet> callable = client.streamingReadCallable(); callable.serverStreamingCall(request, responseObserver); try { List<PartialResultSet> actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); } catch (ExecutionException e) { Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); InvalidArgumentException apiException = (InvalidArgumentException) e.getCause(); Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); } }
/** * * * <pre> * Required. `key_set` identifies the rows to be yielded. `key_set` names the * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. * </pre> * * <code>.google.spanner.v1.KeySet key_set = 6;</code> */ public Builder mergeKeySet(com.google.spanner.v1.KeySet value) { if (keySetBuilder_ == null) { if (keySet_ != null) { keySet_ = com.google.spanner.v1.KeySet.newBuilder(keySet_).mergeFrom(value).buildPartial(); } else { keySet_ = value; } onChanged(); } else { keySetBuilder_.mergeFrom(value); } return this; } /**
/** * * * <pre> * Required. The primary keys of the rows within [table][google.spanner.v1.Mutation.Delete.table] to delete. * Delete is idempotent. The transaction will succeed even if some or all * rows do not exist. * </pre> * * <code>.google.spanner.v1.KeySet key_set = 2;</code> */ public Builder mergeKeySet(com.google.spanner.v1.KeySet value) { if (keySetBuilder_ == null) { if (keySet_ != null) { keySet_ = com.google.spanner.v1.KeySet.newBuilder(keySet_).mergeFrom(value).buildPartial(); } else { keySet_ = value; } onChanged(); } else { keySetBuilder_.mergeFrom(value); } return this; } /**
/** * * * <pre> * A list of specific keys. Entries in `keys` should have exactly as * many elements as there are columns in the primary or index key * with which this `KeySet` is used. Individual key values are * encoded as described [here][google.spanner.v1.TypeCode]. * </pre> * * <code>repeated .google.protobuf.ListValue keys = 1;</code> */ public Builder setKeys(int index, com.google.protobuf.ListValue value) { if (keysBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureKeysIsMutable(); keys_.set(index, value); onChanged(); } else { keysBuilder_.setMessage(index, value); } return this; } /**
/** * * * <pre> * A list of specific keys. Entries in `keys` should have exactly as * many elements as there are columns in the primary or index key * with which this `KeySet` is used. Individual key values are * encoded as described [here][google.spanner.v1.TypeCode]. * </pre> * * <code>repeated .google.protobuf.ListValue keys = 1;</code> */ public Builder addKeys(com.google.protobuf.ListValue value) { if (keysBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureKeysIsMutable(); keys_.add(value); onChanged(); } else { keysBuilder_.addMessage(value); } return this; } /**
/** * * * <pre> * A list of specific keys. Entries in `keys` should have exactly as * many elements as there are columns in the primary or index key * with which this `KeySet` is used. Individual key values are * encoded as described [here][google.spanner.v1.TypeCode]. * </pre> * * <code>repeated .google.protobuf.ListValue keys = 1;</code> */ public Builder addKeys(int index, com.google.protobuf.ListValue value) { if (keysBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureKeysIsMutable(); keys_.add(index, value); onChanged(); } else { keysBuilder_.addMessage(index, value); } return this; } /**
/** * * * <pre> * Required. `key_set` identifies the rows to be yielded. `key_set` names the * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. * </pre> * * <code>.google.spanner.v1.KeySet key_set = 6;</code> */ public Builder setKeySet(com.google.spanner.v1.KeySet.Builder builderForValue) { if (keySetBuilder_ == null) { keySet_ = builderForValue.build(); onChanged(); } else { keySetBuilder_.setMessage(builderForValue.build()); } return this; } /**
/** * * * <pre> * A list of key ranges. See [KeyRange][google.spanner.v1.KeyRange] for more information about * key range specifications. * </pre> * * <code>repeated .google.spanner.v1.KeyRange ranges = 2;</code> */ public Builder addRanges(com.google.spanner.v1.KeyRange value) { if (rangesBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureRangesIsMutable(); ranges_.add(value); onChanged(); } else { rangesBuilder_.addMessage(value); } return this; } /**
/** * * * <pre> * A list of key ranges. See [KeyRange][google.spanner.v1.KeyRange] for more information about * key range specifications. * </pre> * * <code>repeated .google.spanner.v1.KeyRange ranges = 2;</code> */ public Builder setRanges(int index, com.google.spanner.v1.KeyRange value) { if (rangesBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureRangesIsMutable(); ranges_.set(index, value); onChanged(); } else { rangesBuilder_.setMessage(index, value); } return this; } /**
/** * * * <pre> * A list of key ranges. See [KeyRange][google.spanner.v1.KeyRange] for more information about * key range specifications. * </pre> * * <code>repeated .google.spanner.v1.KeyRange ranges = 2;</code> */ public Builder addRanges(int index, com.google.spanner.v1.KeyRange value) { if (rangesBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureRangesIsMutable(); ranges_.add(index, value); onChanged(); } else { rangesBuilder_.addMessage(index, value); } return this; } /**
/** * * * <pre> * A list of specific keys. Entries in `keys` should have exactly as * many elements as there are columns in the primary or index key * with which this `KeySet` is used. Individual key values are * encoded as described [here][google.spanner.v1.TypeCode]. * </pre> * * <code>repeated .google.protobuf.ListValue keys = 1;</code> */ public Builder setKeys(int index, com.google.protobuf.ListValue.Builder builderForValue) { if (keysBuilder_ == null) { ensureKeysIsMutable(); keys_.set(index, builderForValue.build()); onChanged(); } else { keysBuilder_.setMessage(index, builderForValue.build()); } return this; } /**
/** * * * <pre> * Required. `key_set` identifies the rows to be yielded. `key_set` names the * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. * </pre> * * <code>.google.spanner.v1.KeySet key_set = 6;</code> */ public Builder setKeySet(com.google.spanner.v1.KeySet.Builder builderForValue) { if (keySetBuilder_ == null) { keySet_ = builderForValue.build(); onChanged(); } else { keySetBuilder_.setMessage(builderForValue.build()); } return this; } /**