google-cloud-bigquerystorage
diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java
index 05390c56aa..8eab8bfdde 100644
--- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java
+++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java
@@ -59,6 +59,7 @@
* TODO: support updated schema
*/
class ConnectionWorker implements AutoCloseable {
+
private static final Logger log = Logger.getLogger(StreamWriter.class.getName());
// Maximum wait time on inflight quota before error out.
@@ -280,6 +281,8 @@ ApiFuture append(StreamWriter streamWriter, ProtoRows rows,
requestBuilder.setOffset(Int64Value.of(offset));
}
requestBuilder.setWriteStream(streamWriter.getStreamName());
+ requestBuilder.putAllMissingValueInterpretations(
+ streamWriter.getMissingValueInterpretationMap());
return appendInternal(streamWriter, requestBuilder.build());
}
@@ -581,7 +584,17 @@ private void appendLoop() {
}
}
- log.fine("Cleanup starts. Stream: " + streamName + " id: " + writerId);
+ log.info(
+ "Cleanup starts. Stream: "
+ + streamName
+ + " id: "
+ + writerId
+ + " userClose: "
+ + userClosed
+ + " final exception: "
+ + (this.connectionFinalStatus == null
+ ? "null"
+ : this.connectionFinalStatus.toString()));
// At this point, the waiting queue is drained, so no more requests.
// We can close the stream connection and handle the remaining inflight requests.
if (streamConnection != null) {
@@ -590,13 +603,13 @@ private void appendLoop() {
}
// At this point, there cannot be more callback. It is safe to clean up all inflight requests.
- log.fine(
+ log.info(
"Stream connection is fully closed. Cleaning up inflight requests. Stream: "
+ streamName
+ " id: "
+ writerId);
cleanupInflightRequests();
- log.fine("Append thread is done. Stream: " + streamName + " id: " + writerId);
+ log.info("Append thread is done. Stream: " + streamName + " id: " + writerId);
}
/*
@@ -809,7 +822,9 @@ private void doneCallback(Throwable finalStatus) {
+ (maxRetryDuration.toMillis()
- (System.currentTimeMillis() - connectionRetryStartTime))
+ ", for stream "
- + streamName);
+ + streamName
+ + " id:"
+ + writerId);
} else {
Exceptions.StorageException storageException = Exceptions.toStorageException(finalStatus);
this.connectionFinalStatus = storageException != null ? storageException : finalStatus;
@@ -841,6 +856,7 @@ synchronized TableSchemaAndTimestamp getUpdatedSchema() {
// Class that wraps AppendRowsRequest and its corresponding Response future.
static final class AppendRequestAndResponse {
+
final SettableApiFuture appendResult;
final AppendRowsRequest message;
final long messageSize;
@@ -872,6 +888,7 @@ public Load getLoad() {
*/
@AutoValue
public abstract static class Load {
+
// Consider the load on this worker to be overwhelmed when above some percentage of
// in-flight bytes or in-flight requests count.
private static double overwhelmedInflightCount = 0.2;
@@ -945,6 +962,7 @@ static void setMaxInflightQueueWaitTime(long waitTime) {
@AutoValue
abstract static class TableSchemaAndTimestamp {
+
// Shows the timestamp updated schema is reported from response
abstract long updateTimeStamp();
diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java
index 24061878f2..edf40c1e64 100644
--- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java
+++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java
@@ -275,6 +275,24 @@ public long getInflightWaitSeconds() {
return streamWriter.getInflightWaitSeconds();
}
+ /**
+ * Sets the missing value interpretation map for the JsonStreamWriter. The input
+ * missingValueInterpretationMap is used for all append requests unless otherwise changed.
+ *
+ * @param missingValueInterpretationMap the missing value interpretation map used by the
+ * JsonStreamWriter.
+ */
+ public void setMissingValueInterpretationMap(
+ Map missingValueInterpretationMap) {
+ streamWriter.setMissingValueInterpretationMap(missingValueInterpretationMap);
+ }
+
+ /** @return the missing value interpretation map used for the writer. */
+ public Map
+ getMissingValueInterpretationMap() {
+ return streamWriter.getMissingValueInterpretationMap();
+ }
+
/** Sets all StreamWriter settings. */
private void setStreamWriterSettings(
@Nullable TransportChannelProvider channelProvider,
diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java
index 77bad3eb24..ff965f0477 100644
--- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java
+++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java
@@ -32,6 +32,7 @@
import io.grpc.StatusRuntimeException;
import java.io.IOException;
import java.time.Duration;
+import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
@@ -61,6 +62,11 @@ public class StreamWriter implements AutoCloseable {
// Cache of location info for a given dataset.
private static Map projectAndDatasetToLocation = new ConcurrentHashMap<>();
+ // Map of fields to their MissingValueInterpretation, which dictates how a field should be
+ // populated when it is missing from an input user row.
+ private Map missingValueInterpretationMap =
+ new HashMap();
+
/*
* The identifier of stream to write to.
*/
@@ -336,6 +342,18 @@ private void validateFetchedConnectonPool(StreamWriter.Builder builder) {
}
}
+ /**
+ * Sets the missing value interpretation map for the stream writer. The input
+ * missingValueInterpretationMap is used for all write requests unless otherwise changed.
+ *
+ * @param missingValueInterpretationMap the missing value interpretation map used by stream
+ * writer.
+ */
+ public void setMissingValueInterpretationMap(
+ Map missingValueInterpretationMap) {
+ this.missingValueInterpretationMap = missingValueInterpretationMap;
+ }
+
/**
* Schedules the writing of rows at the end of current stream.
*
@@ -419,6 +437,12 @@ public String getLocation() {
return location;
}
+ /** @return the missing value interpretation map used for the writer. */
+ public Map
+ getMissingValueInterpretationMap() {
+ return missingValueInterpretationMap;
+ }
+
/**
* @return if a stream writer can no longer be used for writing. It is due to either the
* StreamWriter is explicitly closed or the underlying connection is broken when connection
diff --git a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java
index 691ec4afde..a748678839 100644
--- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java
+++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java
@@ -48,6 +48,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
@@ -1290,4 +1291,43 @@ private AppendRowsResponse createAppendResponse(long offset) {
AppendRowsResponse.AppendResult.newBuilder().setOffset(Int64Value.of(offset)).build())
.build();
}
+
+ @Test
+ public void testAppendWithMissingValueMap() throws Exception {
+ TableFieldSchema field =
+ TableFieldSchema.newBuilder()
+ .setType(TableFieldSchema.Type.STRING)
+ .setMode(TableFieldSchema.Mode.NULLABLE)
+ .setName("test-列")
+ .build();
+ TableSchema tableSchema = TableSchema.newBuilder().addFields(0, field).build();
+ FlexibleType expectedProto = FlexibleType.newBuilder().setColDGVzdC3LiJc("allen").build();
+ JSONObject flexible = new JSONObject();
+ flexible.put("test-列", "allen");
+ JSONArray jsonArr = new JSONArray();
+ jsonArr.put(flexible);
+
+ try (JsonStreamWriter writer =
+ getTestJsonStreamWriterBuilder(TEST_STREAM, tableSchema).setTraceId("test:empty").build()) {
+
+ Map missingValueMap = new HashMap();
+ missingValueMap.put("col1", AppendRowsRequest.MissingValueInterpretation.NULL_VALUE);
+ missingValueMap.put("col3", AppendRowsRequest.MissingValueInterpretation.DEFAULT_VALUE);
+ writer.setMissingValueInterpretationMap(missingValueMap);
+ assertEquals(missingValueMap, writer.getMissingValueInterpretationMap());
+
+ testBigQueryWrite.addResponse(
+ AppendRowsResponse.newBuilder()
+ .setAppendResult(
+ AppendRowsResponse.AppendResult.newBuilder().setOffset(Int64Value.of(0)).build())
+ .build());
+
+ ApiFuture appendFuture = writer.append(jsonArr);
+ assertEquals(0L, appendFuture.get().getAppendResult().getOffset().getValue());
+ appendFuture.get();
+ assertEquals(
+ testBigQueryWrite.getAppendRequests().get(0).getMissingValueInterpretations(),
+ missingValueMap);
+ }
+ }
}
diff --git a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/StreamWriterTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/StreamWriterTest.java
index 383301d820..43c5fd2bea 100644
--- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/StreamWriterTest.java
+++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/StreamWriterTest.java
@@ -49,7 +49,9 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -67,6 +69,7 @@
@RunWith(JUnit4.class)
public class StreamWriterTest {
+
private static final Logger log = Logger.getLogger(StreamWriterTest.class.getName());
private static final String TEST_STREAM_1 = "projects/p/datasets/d1/tables/t1/streams/_default";
private static final String TEST_STREAM_2 = "projects/p/datasets/d2/tables/t2/streams/_default";
@@ -1227,6 +1230,51 @@ public void testCloseDisconnectedStream() throws Exception {
writer.close();
}
+ @Test
+ public void testSetAndGetMissingValueInterpretationMap() throws Exception {
+ StreamWriter writer = getTestStreamWriter();
+ Map missingValueMap = new HashMap();
+ missingValueMap.put("col1", AppendRowsRequest.MissingValueInterpretation.NULL_VALUE);
+ missingValueMap.put("col3", AppendRowsRequest.MissingValueInterpretation.DEFAULT_VALUE);
+ writer.setMissingValueInterpretationMap(missingValueMap);
+ assertEquals(missingValueMap, writer.getMissingValueInterpretationMap());
+ }
+
+ @Test
+ public void testAppendWithMissingValueMap() throws Exception {
+ StreamWriter writer = getTestStreamWriter();
+
+ long appendCount = 2;
+ testBigQueryWrite.addResponse(createAppendResponse(0));
+ testBigQueryWrite.addResponse(createAppendResponse(1));
+
+ List> futures = new ArrayList<>();
+ // The first append doesn't use a missing value map.
+ futures.add(writer.append(createProtoRows(new String[] {String.valueOf(0)}), 0));
+
+ // The second append uses a missing value map.
+ Map missingValueMap = new HashMap();
+ missingValueMap.put("col1", AppendRowsRequest.MissingValueInterpretation.NULL_VALUE);
+ missingValueMap.put("col3", AppendRowsRequest.MissingValueInterpretation.DEFAULT_VALUE);
+ writer.setMissingValueInterpretationMap(missingValueMap);
+ futures.add(writer.append(createProtoRows(new String[] {String.valueOf(1)}), 1));
+
+ for (int i = 0; i < appendCount; i++) {
+ assertEquals(i, futures.get(i).get().getAppendResult().getOffset().getValue());
+ }
+
+ // Ensure that the AppendRowsRequest for the first append operation does not have a missing
+ // value map, and that the second AppendRowsRequest has the missing value map provided in the
+ // second append.
+ verifyAppendRequests(appendCount);
+ AppendRowsRequest request1 = testBigQueryWrite.getAppendRequests().get(0);
+ AppendRowsRequest request2 = testBigQueryWrite.getAppendRequests().get(1);
+ assertTrue(request1.getMissingValueInterpretations().isEmpty());
+ assertEquals(request2.getMissingValueInterpretations(), missingValueMap);
+
+ writer.close();
+ }
+
@Test(timeout = 10000)
public void testStreamWriterUserCloseMultiplexing() throws Exception {
StreamWriter writer =
diff --git a/grpc-google-cloud-bigquerystorage-v1/pom.xml b/grpc-google-cloud-bigquerystorage-v1/pom.xml
index 6c1facc6cc..7ed32d0cc4 100644
--- a/grpc-google-cloud-bigquerystorage-v1/pom.xml
+++ b/grpc-google-cloud-bigquerystorage-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-bigquerystorage-v1
- 2.31.1
+ 2.32.0
grpc-google-cloud-bigquerystorage-v1
GRPC library for grpc-google-cloud-bigquerystorage-v1
com.google.cloud
google-cloud-bigquerystorage-parent
- 2.31.1
+ 2.32.0
diff --git a/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml b/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml
index e16599f28b..d629786430 100644
--- a/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml
+++ b/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-bigquerystorage-v1beta1
- 0.155.1
+ 0.156.0
grpc-google-cloud-bigquerystorage-v1beta1
GRPC library for grpc-google-cloud-bigquerystorage-v1beta1
com.google.cloud
google-cloud-bigquerystorage-parent
- 2.31.1
+ 2.32.0
diff --git a/grpc-google-cloud-bigquerystorage-v1beta2/pom.xml b/grpc-google-cloud-bigquerystorage-v1beta2/pom.xml
index 9985b229d6..426a89d6a7 100644
--- a/grpc-google-cloud-bigquerystorage-v1beta2/pom.xml
+++ b/grpc-google-cloud-bigquerystorage-v1beta2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-bigquerystorage-v1beta2
- 0.155.1
+ 0.156.0
grpc-google-cloud-bigquerystorage-v1beta2
GRPC library for grpc-google-cloud-bigquerystorage-v1beta2
com.google.cloud
google-cloud-bigquerystorage-parent
- 2.31.1
+ 2.32.0
diff --git a/pom.xml b/pom.xml
index f4933af4ad..d53c5ba6d8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquerystorage-parent
pom
- 2.31.1
+ 2.32.0
BigQuery Storage Parent
https://github.com/googleapis/java-bigquerystorage
@@ -83,37 +83,37 @@
com.google.api.grpc
proto-google-cloud-bigquerystorage-v1beta1
- 0.155.1
+ 0.156.0
com.google.api.grpc
proto-google-cloud-bigquerystorage-v1beta2
- 0.155.1
+ 0.156.0
com.google.api.grpc
proto-google-cloud-bigquerystorage-v1
- 2.31.1
+ 2.32.0
com.google.api.grpc
grpc-google-cloud-bigquerystorage-v1beta1
- 0.155.1
+ 0.156.0
com.google.api.grpc
grpc-google-cloud-bigquerystorage-v1beta2
- 0.155.1
+ 0.156.0
com.google.api.grpc
grpc-google-cloud-bigquerystorage-v1
- 2.31.1
+ 2.32.0
com.google.cloud
google-cloud-bigquerystorage
- 2.31.1
+ 2.32.0
org.json
diff --git a/proto-google-cloud-bigquerystorage-v1/pom.xml b/proto-google-cloud-bigquerystorage-v1/pom.xml
index ae7d5a7698..6c1c5057d6 100644
--- a/proto-google-cloud-bigquerystorage-v1/pom.xml
+++ b/proto-google-cloud-bigquerystorage-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-bigquerystorage-v1
- 2.31.1
+ 2.32.0
proto-google-cloud-bigquerystorage-v1
PROTO library for proto-google-cloud-bigquerystorage-v1
com.google.cloud
google-cloud-bigquerystorage-parent
- 2.31.1
+ 2.32.0
diff --git a/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableFieldSchema.java b/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableFieldSchema.java
index 717717bb91..ce3a4143f4 100644
--- a/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableFieldSchema.java
+++ b/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableFieldSchema.java
@@ -43,6 +43,7 @@ private TableFieldSchema() {
mode_ = 0;
fields_ = java.util.Collections.emptyList();
description_ = "";
+ defaultValueExpression_ = "";
}
@java.lang.Override
@@ -991,6 +992,59 @@ public long getScale() {
return scale_;
}
+ public static final int DEFAULT_VALUE_EXPRESSION_FIELD_NUMBER = 10;
+
+ @SuppressWarnings("serial")
+ private volatile java.lang.Object defaultValueExpression_ = "";
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The defaultValueExpression.
+ */
+ @java.lang.Override
+ public java.lang.String getDefaultValueExpression() {
+ java.lang.Object ref = defaultValueExpression_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ defaultValueExpression_ = s;
+ return s;
+ }
+ }
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for defaultValueExpression.
+ */
+ @java.lang.Override
+ public com.google.protobuf.ByteString getDefaultValueExpressionBytes() {
+ java.lang.Object ref = defaultValueExpression_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ defaultValueExpression_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
private byte memoizedIsInitialized = -1;
@java.lang.Override
@@ -1033,6 +1087,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
if (scale_ != 0L) {
output.writeInt64(9, scale_);
}
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(defaultValueExpression_)) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 10, defaultValueExpression_);
+ }
getUnknownFields().writeTo(output);
}
@@ -1070,6 +1127,9 @@ public int getSerializedSize() {
if (scale_ != 0L) {
size += com.google.protobuf.CodedOutputStream.computeInt64Size(9, scale_);
}
+ if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(defaultValueExpression_)) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, defaultValueExpression_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -1094,6 +1154,7 @@ public boolean equals(final java.lang.Object obj) {
if (getMaxLength() != other.getMaxLength()) return false;
if (getPrecision() != other.getPrecision()) return false;
if (getScale() != other.getScale()) return false;
+ if (!getDefaultValueExpression().equals(other.getDefaultValueExpression())) return false;
if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true;
}
@@ -1123,6 +1184,8 @@ public int hashCode() {
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getPrecision());
hash = (37 * hash) + SCALE_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getScale());
+ hash = (37 * hash) + DEFAULT_VALUE_EXPRESSION_FIELD_NUMBER;
+ hash = (53 * hash) + getDefaultValueExpression().hashCode();
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -1277,6 +1340,7 @@ public Builder clear() {
maxLength_ = 0L;
precision_ = 0L;
scale_ = 0L;
+ defaultValueExpression_ = "";
return this;
}
@@ -1348,6 +1412,9 @@ private void buildPartial0(com.google.cloud.bigquery.storage.v1.TableFieldSchema
if (((from_bitField0_ & 0x00000080) != 0)) {
result.scale_ = scale_;
}
+ if (((from_bitField0_ & 0x00000100) != 0)) {
+ result.defaultValueExpression_ = defaultValueExpression_;
+ }
}
@java.lang.Override
@@ -1448,6 +1515,11 @@ public Builder mergeFrom(com.google.cloud.bigquery.storage.v1.TableFieldSchema o
if (other.getScale() != 0L) {
setScale(other.getScale());
}
+ if (!other.getDefaultValueExpression().isEmpty()) {
+ defaultValueExpression_ = other.defaultValueExpression_;
+ bitField0_ |= 0x00000100;
+ onChanged();
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -1530,6 +1602,12 @@ public Builder mergeFrom(
bitField0_ |= 0x00000080;
break;
} // case 72
+ case 82:
+ {
+ defaultValueExpression_ = input.readStringRequireUtf8();
+ bitField0_ |= 0x00000100;
+ break;
+ } // case 82
default:
{
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -2633,6 +2711,117 @@ public Builder clearScale() {
return this;
}
+ private java.lang.Object defaultValueExpression_ = "";
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The defaultValueExpression.
+ */
+ public java.lang.String getDefaultValueExpression() {
+ java.lang.Object ref = defaultValueExpression_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ defaultValueExpression_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for defaultValueExpression.
+ */
+ public com.google.protobuf.ByteString getDefaultValueExpressionBytes() {
+ java.lang.Object ref = defaultValueExpression_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+ defaultValueExpression_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The defaultValueExpression to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDefaultValueExpression(java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ defaultValueExpression_ = value;
+ bitField0_ |= 0x00000100;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearDefaultValueExpression() {
+ defaultValueExpression_ = getDefaultInstance().getDefaultValueExpression();
+ bitField0_ = (bitField0_ & ~0x00000100);
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The bytes for defaultValueExpression to set.
+ * @return This builder for chaining.
+ */
+ public Builder setDefaultValueExpressionBytes(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+ defaultValueExpression_ = value;
+ bitField0_ |= 0x00000100;
+ onChanged();
+ return this;
+ }
+
@java.lang.Override
public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
diff --git a/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableFieldSchemaOrBuilder.java b/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableFieldSchemaOrBuilder.java
index 9d916b387a..69a51f61a0 100644
--- a/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableFieldSchemaOrBuilder.java
+++ b/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableFieldSchemaOrBuilder.java
@@ -269,4 +269,31 @@ public interface TableFieldSchemaOrBuilder
* @return The scale.
*/
long getScale();
+
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The defaultValueExpression.
+ */
+ java.lang.String getDefaultValueExpression();
+ /**
+ *
+ *
+ *
+ * Optional. A SQL expression to specify the [default value]
+ * (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ *
+ *
+ * string default_value_expression = 10 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The bytes for defaultValueExpression.
+ */
+ com.google.protobuf.ByteString getDefaultValueExpressionBytes();
}
diff --git a/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableProto.java b/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableProto.java
index 1e47656907..cae3e55f1b 100644
--- a/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableProto.java
+++ b/proto-google-cloud-bigquerystorage-v1/src/main/java/com/google/cloud/bigquery/storage/v1/TableProto.java
@@ -48,7 +48,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ ".proto\022 google.cloud.bigquery.storage.v1"
+ "\032\037google/api/field_behavior.proto\"Q\n\013Tab"
+ "leSchema\022B\n\006fields\030\001 \003(\01322.google.cloud."
- + "bigquery.storage.v1.TableFieldSchema\"\205\005\n"
+ + "bigquery.storage.v1.TableFieldSchema\"\254\005\n"
+ "\020TableFieldSchema\022\021\n\004name\030\001 \001(\tB\003\340A\002\022J\n\004"
+ "type\030\002 \001(\01627.google.cloud.bigquery.stora"
+ "ge.v1.TableFieldSchema.TypeB\003\340A\002\022J\n\004mode"
@@ -57,20 +57,20 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ " \003(\01322.google.cloud.bigquery.storage.v1."
+ "TableFieldSchemaB\003\340A\001\022\030\n\013description\030\006 \001"
+ "(\tB\003\340A\001\022\027\n\nmax_length\030\007 \001(\003B\003\340A\001\022\026\n\tprec"
- + "ision\030\010 \001(\003B\003\340A\001\022\022\n\005scale\030\t \001(\003B\003\340A\001\"\325\001\n"
- + "\004Type\022\024\n\020TYPE_UNSPECIFIED\020\000\022\n\n\006STRING\020\001\022"
- + "\t\n\005INT64\020\002\022\n\n\006DOUBLE\020\003\022\n\n\006STRUCT\020\004\022\t\n\005BY"
- + "TES\020\005\022\010\n\004BOOL\020\006\022\r\n\tTIMESTAMP\020\007\022\010\n\004DATE\020\010"
- + "\022\010\n\004TIME\020\t\022\014\n\010DATETIME\020\n\022\r\n\tGEOGRAPHY\020\013\022"
- + "\013\n\007NUMERIC\020\014\022\016\n\nBIGNUMERIC\020\r\022\014\n\010INTERVAL"
- + "\020\016\022\010\n\004JSON\020\017\"F\n\004Mode\022\024\n\020MODE_UNSPECIFIED"
- + "\020\000\022\014\n\010NULLABLE\020\001\022\014\n\010REQUIRED\020\002\022\014\n\010REPEAT"
- + "ED\020\003B\272\001\n$com.google.cloud.bigquery.stora"
- + "ge.v1B\nTableProtoP\001Z>cloud.google.com/go"
- + "/bigquery/storage/apiv1/storagepb;storag"
- + "epb\252\002 Google.Cloud.BigQuery.Storage.V1\312\002"
- + " Google\\Cloud\\BigQuery\\Storage\\V1b\006proto"
- + "3"
+ + "ision\030\010 \001(\003B\003\340A\001\022\022\n\005scale\030\t \001(\003B\003\340A\001\022%\n\030"
+ + "default_value_expression\030\n \001(\tB\003\340A\001\"\325\001\n\004"
+ + "Type\022\024\n\020TYPE_UNSPECIFIED\020\000\022\n\n\006STRING\020\001\022\t"
+ + "\n\005INT64\020\002\022\n\n\006DOUBLE\020\003\022\n\n\006STRUCT\020\004\022\t\n\005BYT"
+ + "ES\020\005\022\010\n\004BOOL\020\006\022\r\n\tTIMESTAMP\020\007\022\010\n\004DATE\020\010\022"
+ + "\010\n\004TIME\020\t\022\014\n\010DATETIME\020\n\022\r\n\tGEOGRAPHY\020\013\022\013"
+ + "\n\007NUMERIC\020\014\022\016\n\nBIGNUMERIC\020\r\022\014\n\010INTERVAL\020"
+ + "\016\022\010\n\004JSON\020\017\"F\n\004Mode\022\024\n\020MODE_UNSPECIFIED\020"
+ + "\000\022\014\n\010NULLABLE\020\001\022\014\n\010REQUIRED\020\002\022\014\n\010REPEATE"
+ + "D\020\003B\272\001\n$com.google.cloud.bigquery.storag"
+ + "e.v1B\nTableProtoP\001Z>cloud.google.com/go/"
+ + "bigquery/storage/apiv1/storagepb;storage"
+ + "pb\252\002 Google.Cloud.BigQuery.Storage.V1\312\002 "
+ + "Google\\Cloud\\BigQuery\\Storage\\V1b\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -92,7 +92,15 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_google_cloud_bigquery_storage_v1_TableFieldSchema_descriptor,
new java.lang.String[] {
- "Name", "Type", "Mode", "Fields", "Description", "MaxLength", "Precision", "Scale",
+ "Name",
+ "Type",
+ "Mode",
+ "Fields",
+ "Description",
+ "MaxLength",
+ "Precision",
+ "Scale",
+ "DefaultValueExpression",
});
com.google.protobuf.ExtensionRegistry registry =
com.google.protobuf.ExtensionRegistry.newInstance();
diff --git a/proto-google-cloud-bigquerystorage-v1/src/main/proto/google/cloud/bigquery/storage/v1/table.proto b/proto-google-cloud-bigquerystorage-v1/src/main/proto/google/cloud/bigquery/storage/v1/table.proto
index 56f7852a19..c9b62d7932 100644
--- a/proto-google-cloud-bigquerystorage-v1/src/main/proto/google/cloud/bigquery/storage/v1/table.proto
+++ b/proto-google-cloud-bigquerystorage-v1/src/main/proto/google/cloud/bigquery/storage/v1/table.proto
@@ -164,4 +164,8 @@ message TableFieldSchema {
// Optional. See documentation for precision.
int64 scale = 9 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. A SQL expression to specify the [default value]
+ // (https://cloud.google.com/bigquery/docs/default-values) for this field.
+ string default_value_expression = 10 [(google.api.field_behavior) = OPTIONAL];
}
diff --git a/proto-google-cloud-bigquerystorage-v1beta1/pom.xml b/proto-google-cloud-bigquerystorage-v1beta1/pom.xml
index 84826b4f26..ea321e02b2 100644
--- a/proto-google-cloud-bigquerystorage-v1beta1/pom.xml
+++ b/proto-google-cloud-bigquerystorage-v1beta1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-bigquerystorage-v1beta1
- 0.155.1
+ 0.156.0
proto-google-cloud-bigquerystorage-v1beta1
PROTO library for proto-google-cloud-bigquerystorage-v1beta1
com.google.cloud
google-cloud-bigquerystorage-parent
- 2.31.1
+ 2.32.0
diff --git a/proto-google-cloud-bigquerystorage-v1beta2/pom.xml b/proto-google-cloud-bigquerystorage-v1beta2/pom.xml
index 637de51267..089b057b16 100644
--- a/proto-google-cloud-bigquerystorage-v1beta2/pom.xml
+++ b/proto-google-cloud-bigquerystorage-v1beta2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-bigquerystorage-v1beta2
- 0.155.1
+ 0.156.0
proto-google-cloud-bigquerystorage-v1beta2
PROTO library for proto-google-cloud-bigquerystorage-v1beta2
com.google.cloud
google-cloud-bigquerystorage-parent
- 2.31.1
+ 2.32.0
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index bd112f28dd..5bdc579d52 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -30,7 +30,7 @@
com.google.cloud
google-cloud-bigquerystorage
- 2.30.0
+ 2.31.1
diff --git a/samples/pom.xml b/samples/pom.xml
index a7e1defcb6..ae24bfd59f 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -38,7 +38,7 @@
org.apache.maven.plugins
maven-deploy-plugin
- 3.0.0
+ 3.1.0
true
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index e8b4217de8..6e2f456db2 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -29,7 +29,7 @@
com.google.cloud
google-cloud-bigquerystorage
- 2.31.1
+ 2.32.0
diff --git a/tutorials/JsonWriterDefaultStream/pom.xml b/tutorials/JsonWriterDefaultStream/pom.xml
index 0ed22ee454..d05c1f91bd 100644
--- a/tutorials/JsonWriterDefaultStream/pom.xml
+++ b/tutorials/JsonWriterDefaultStream/pom.xml
@@ -19,7 +19,7 @@
com.google.cloud
google-cloud-bigquerystorage
- 2.30.0
+ 2.31.1
com.google.cloud
diff --git a/tutorials/pom.xml b/tutorials/pom.xml
index 7654b27ac1..f636d2d46e 100644
--- a/tutorials/pom.xml
+++ b/tutorials/pom.xml
@@ -36,7 +36,7 @@
org.apache.maven.plugins
maven-deploy-plugin
- 3.0.0
+ 3.1.0
true
diff --git a/versions.txt b/versions.txt
index 77fa36fa6c..50f64e4204 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,10 +1,10 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquerystorage:2.31.1:2.31.1
-grpc-google-cloud-bigquerystorage-v1beta1:0.155.1:0.155.1
-grpc-google-cloud-bigquerystorage-v1beta2:0.155.1:0.155.1
-grpc-google-cloud-bigquerystorage-v1:2.31.1:2.31.1
-proto-google-cloud-bigquerystorage-v1beta1:0.155.1:0.155.1
-proto-google-cloud-bigquerystorage-v1beta2:0.155.1:0.155.1
-proto-google-cloud-bigquerystorage-v1:2.31.1:2.31.1
+google-cloud-bigquerystorage:2.32.0:2.32.0
+grpc-google-cloud-bigquerystorage-v1beta1:0.156.0:0.156.0
+grpc-google-cloud-bigquerystorage-v1beta2:0.156.0:0.156.0
+grpc-google-cloud-bigquerystorage-v1:2.32.0:2.32.0
+proto-google-cloud-bigquerystorage-v1beta1:0.156.0:0.156.0
+proto-google-cloud-bigquerystorage-v1beta2:0.156.0:0.156.0
+proto-google-cloud-bigquerystorage-v1:2.32.0:2.32.0