diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml index 862eede954..fcd7ba5c6f 100644 --- a/google-cloud-bigtable/pom.xml +++ b/google-cloud-bigtable/pom.xml @@ -326,6 +326,11 @@ mockito-core test + + com.google.guava + guava-testlib + test + diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/common/Type.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/common/Type.java new file mode 100644 index 0000000000..df5c6dcd95 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/common/Type.java @@ -0,0 +1,398 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.common; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.auto.value.AutoValue; +import com.google.cloud.bigtable.data.v2.internal.ColumnToIndexMapper; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableList; +import com.google.protobuf.ByteString; +import java.util.List; +import org.threeten.bp.Instant; + +/** + * Shared type implementations. Right now this is only used by SqlType but this will become a shared + * definition with Schema type (called {@link com.google.cloud.bigtable.admin.v2.models.Type} right + * now), and any other type interfaces needed in the future. + * + *

This is considered an internal implementation detail and not meant to be used by applications. + * Types should only be used through the relevant interfaces and factories, e.g. {@link SqlType}. + */ +@BetaApi +@InternalApi +public interface Type { + + @AutoValue + abstract class Bytes implements Type, SqlType { + + public static Bytes create() { + return DefaultInstances.BYTES; + } + + @Override + public Code getCode() { + return Code.BYTES; + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + @AutoValue + abstract class String implements Type, SqlType { + public static String create() { + return DefaultInstances.STRING; + } + + @Override + public Code getCode() { + return Code.STRING; + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + @AutoValue + abstract class Int64 implements Type, SqlType { + public static Int64 create() { + return DefaultInstances.INT64; + } + + @Override + public Code getCode() { + return Code.INT64; + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + @AutoValue + abstract class Float64 implements Type, SqlType { + public static Float64 create() { + return DefaultInstances.FLOAT64; + } + + @Override + public Code getCode() { + return Code.FLOAT64; + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + @AutoValue + abstract class Float32 implements Type, SqlType { + public static Float32 create() { + return DefaultInstances.FLOAT32; + } + + @Override + public Code getCode() { + return Code.FLOAT32; + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + @AutoValue + abstract class Bool implements Type, SqlType { + public static Bool create() { + return DefaultInstances.BOOL; + } + + @Override + public Code getCode() { + return Code.BOOL; + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + @AutoValue + abstract class Timestamp implements Type, SqlType { + public static Timestamp create() { + return DefaultInstances.TIMESTAMP; + } + + @Override + public Code getCode() { + return Code.TIMESTAMP; + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + @AutoValue + abstract class Date implements Type, SqlType { + public static Date create() { + return DefaultInstances.DATE; + } + + @Override + public Code getCode() { + return Code.DATE; + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + /** + * This is a special version of struct that is intended to only be used in the {@link + * com.google.cloud.bigtable.data.v2.models.sql.StructReader} getters that require types. We don't + * want users to need to specify the struct schema when the schema will be validated on calls to + * {@link com.google.cloud.bigtable.data.v2.models.sql.StructReader} methods on the struct. + * + *

Any attempts to interact with the schema will throw an exception. + * + *

For example the historical map data type uses this as follows: + * + *

{@code
+   * Map> historicalMap =
+   *     resultSet.getMap(
+   *        "cf",
+   *        SqlType.mapOf(SqlType.bytes(), SqlType.arrayOf(SqlType.struct())));
+   * Struct struct = historicalMap.get("column").get(0);
+   * // Struct schema will be validated here so there's no need for users to pass the schema to getMap above
+   * ByteString value = struct.getBytes("value");
+   * }
+ */ + @AutoValue + abstract class SchemalessStruct implements Type, SqlType.Struct { + public static SchemalessStruct create() { + return DefaultInstances.SCHEMALESS_STRUCT; + } + + @Override + public Code getCode() { + return Code.STRUCT; + } + + @Override + public List getFields() { + throw new UnsupportedOperationException( + "Attempting to access schema of Schemaless Struct. These structs should only be used for typing of StructReader data access calls."); + } + + @Override + public SqlType getType(int fieldIndex) { + throw new UnsupportedOperationException( + "Attempting to access schema of Schemaless Struct. These structs should only be used for typing of StructReader data access calls."); + } + + @Override + public SqlType getType(java.lang.String fieldName) { + throw new UnsupportedOperationException( + "Attempting to access schema of Schemaless Struct. These structs should only be used for typing of StructReader data access calls."); + } + + @Override + public int getColumnIndex(java.lang.String fieldName) { + throw new UnsupportedOperationException( + "Attempting to access schema of Schemaless Struct. These structs should only be used for typing of StructReader data access calls."); + } + + @Override + public java.lang.String toString() { + return getCode().name(); + } + } + + /** + * Struct implementation that contains a schema that users can access. This should never be + * constructed by users. It is only intended to be created directly from Type protobufs. + */ + class StructWithSchema extends ColumnToIndexMapper implements Type, SqlType.Struct { + + private final List fields; + + @InternalApi("Visible for testing") + public StructWithSchema(List fields) { + super(fields); + this.fields = fields; + } + + @InternalApi("Visible for testing") + @AutoValue + public abstract static class Field implements SqlType.Struct.Field { + public static Field fromProto(com.google.bigtable.v2.Type.Struct.Field proto) { + return new AutoValue_Type_StructWithSchema_Field( + proto.getFieldName(), SqlType.fromProto(proto.getType())); + } + + @Override + public abstract java.lang.String name(); + + @Override + public abstract SqlType type(); + } + + public static StructWithSchema fromProto(com.google.bigtable.v2.Type.Struct proto) { + ImmutableList.Builder fields = ImmutableList.builder(); + for (com.google.bigtable.v2.Type.Struct.Field protoField : proto.getFieldsList()) { + fields.add(Field.fromProto(protoField)); + } + return new StructWithSchema(fields.build()); + } + + @Override + public Code getCode() { + return Code.STRUCT; + } + + @Override + public List getFields() { + return fields; + } + + @Override + public SqlType getType(int fieldIndex) { + return fields.get(fieldIndex).type(); + } + + @Override + public SqlType getType(java.lang.String fieldName) { + int index = getColumnIndex(fieldName); + return getType(index); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + StructWithSchema struct = (StructWithSchema) obj; + // Everything is derived from fields so that's all we need to compare; + return Objects.equal(getFields(), struct.getFields()); + } + + @Override + public int hashCode() { + // Everything is derived from fields so that's all we need; + return Objects.hashCode(fields); + } + + @Override + public java.lang.String toString() { + return getCode().name() + "{fields=" + fields.toString() + "}"; + } + } + + @AutoValue + abstract class Array implements Type, SqlType.Array { + // Do we need non-sql type array elements? Might get messy + public static Type.Array create(SqlType elemType) { + return new AutoValue_Type_Array<>(elemType); + } + + protected abstract SqlType elementType(); + + @Override + public Code getCode() { + return Code.ARRAY; + } + + @Override + public SqlType getElementType() { + return elementType(); + } + + @Override + public java.lang.String toString() { + return getCode().name() + "{elementType=" + getElementType().getCode() + "}"; + } + } + + @AutoValue + abstract class Map implements Type, SqlType.Map { + // Same question as for array + public static Type.Map create(SqlType keyType, SqlType valueType) { + return new AutoValue_Type_Map<>(keyType, valueType); + } + + protected abstract SqlType keyType(); + + protected abstract SqlType valueType(); + + @Override + public Code getCode() { + return Code.MAP; + } + + @Override + public SqlType getKeyType() { + return keyType(); + } + + @Override + public SqlType getValueType() { + return valueType(); + } + + @Override + public java.lang.String toString() { + return getCode().name() + + "{keyType=" + + getKeyType().toString() + + ", valueType=" + + getValueType().toString() + + "}"; + } + } + + // Implementation detail to make singleton instances private without referencing the concrete + // autovalue generated class from the abstract base classes. + @InternalApi + class DefaultInstances { + private static final Bytes BYTES = new AutoValue_Type_Bytes(); + private static final String STRING = new AutoValue_Type_String(); + private static final Int64 INT64 = new AutoValue_Type_Int64(); + private static final Float64 FLOAT64 = new AutoValue_Type_Float64(); + private static final Float32 FLOAT32 = new AutoValue_Type_Float32(); + private static final Bool BOOL = new AutoValue_Type_Bool(); + private static final Timestamp TIMESTAMP = new AutoValue_Type_Timestamp(); + private static final Date DATE = new AutoValue_Type_Date(); + private static final SchemalessStruct SCHEMALESS_STRUCT = new AutoValue_Type_SchemalessStruct(); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java index 8f08f82d8a..61f51924f1 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java @@ -30,6 +30,7 @@ import com.google.api.gax.rpc.ServerStream; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.bigtable.data.v2.internal.ResultSetImpl; import com.google.cloud.bigtable.data.v2.models.BulkMutation; import com.google.cloud.bigtable.data.v2.models.ChangeStreamRecord; import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation; @@ -47,7 +48,10 @@ import com.google.cloud.bigtable.data.v2.models.SampleRowKeysRequest; import com.google.cloud.bigtable.data.v2.models.TableId; import com.google.cloud.bigtable.data.v2.models.TargetId; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSet; +import com.google.cloud.bigtable.data.v2.models.sql.Statement; import com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStub; +import com.google.cloud.bigtable.data.v2.stub.sql.SqlServerStream; import com.google.common.util.concurrent.MoreExecutors; import com.google.protobuf.ByteString; import java.io.IOException; @@ -2610,6 +2614,34 @@ public void readChangeStreamAsync( return stub.readChangeStreamCallable(); } + /** + * Executes a SQL Query and returns a ResultSet to iterate over the results. The returned + * ResultSet instance is not threadsafe, it can only be used from single thread. + * + *

Sample code: + * + *

{@code
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
+   *   String query = "SELECT CAST(cf['stringCol'] AS STRING) FROM [TABLE]";
+   *
+   *   try (ResultSet resultSet = bigtableDataClient.executeQuery(Statement.of(query))) {
+   *     while (resultSet.next()) {
+   *        String s = resultSet.getString("stringCol");
+   *        // do something with data
+   *     }
+   *   } catch (RuntimeException e) {
+   *     e.printStackTrace();
+   *   }
+   * }
+ * + * @see Statement For query options. + */ + @BetaApi + public ResultSet executeQuery(Statement statement) { + SqlServerStream stream = stub.createExecuteQueryCallable().call(statement); + return ResultSetImpl.create(stream); + } + /** Close the clients and releases all associated resources. */ @Override public void close() { diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/gapic_metadata.json b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/gapic_metadata.json index 495762d219..1134631db2 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/gapic_metadata.json +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/gapic_metadata.json @@ -13,6 +13,9 @@ "CheckAndMutateRow": { "methods": ["checkAndMutateRow", "checkAndMutateRow", "checkAndMutateRow", "checkAndMutateRow", "checkAndMutateRow", "checkAndMutateRowCallable"] }, + "ExecuteQuery": { + "methods": ["executeQueryCallable"] + }, "GenerateInitialChangeStreamPartitions": { "methods": ["generateInitialChangeStreamPartitionsCallable"] }, diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/AbstractProtoStructReader.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/AbstractProtoStructReader.java new file mode 100644 index 0000000000..7035a8285d --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/AbstractProtoStructReader.java @@ -0,0 +1,337 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.InternalApi; +import com.google.bigtable.v2.Value; +import com.google.bigtable.v2.Value.KindCase; +import com.google.cloud.Date; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.cloud.bigtable.data.v2.models.sql.Struct; +import com.google.cloud.bigtable.data.v2.models.sql.StructReader; +import com.google.common.base.Preconditions; +import com.google.protobuf.ByteString; +import com.google.protobuf.Timestamp; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.threeten.bp.Instant; + +@InternalApi +public abstract class AbstractProtoStructReader implements StructReader { + + abstract List values(); + + // Force subclasses to override equals and hashcode. We need this for tests. + public abstract boolean equals(Object other); + + public abstract int hashCode(); + + /** + * @param columnName name of the column + * @return the index of the column named {@code columnName} + * @throws IllegalArgumentException if there is not exactly one column with the given name + */ + public abstract int getColumnIndex(String columnName); + + /** + * @param columnIndex index of the column + * @return the type of the column at the given index + */ + public abstract SqlType getColumnType(int columnIndex); + + /** + * @param columnName name of the column + * @return the type of the column with the given name + * @throws IllegalArgumentException if there is not exactly one column with the given name + */ + public SqlType getColumnType(String columnName) { + return getColumnType(getColumnIndex(columnName)); + } + + @Override + public boolean isNull(int columnIndex) { + Value value = values().get(columnIndex); + return value.getKindCase().equals(KindCase.KIND_NOT_SET); + } + + @Override + public boolean isNull(String columnName) { + return isNull(getColumnIndex(columnName)); + } + + @Override + public ByteString getBytes(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.bytes(), columnIndex); + Value value = values().get(columnIndex); + return value.getBytesValue(); + } + + @Override + public ByteString getBytes(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.bytes(), columnName); + Value value = values().get(columnIndex); + return value.getBytesValue(); + } + + @Override + public String getString(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.string(), columnIndex); + Value value = values().get(columnIndex); + return value.getStringValue(); + } + + @Override + public String getString(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.string(), columnName); + Value value = values().get(columnIndex); + return value.getStringValue(); + } + + @Override + public long getLong(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.int64(), columnIndex); + Value value = values().get(columnIndex); + return value.getIntValue(); + } + + @Override + public long getLong(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.int64(), columnName); + Value value = values().get(columnIndex); + return value.getIntValue(); + } + + @Override + public double getDouble(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.float64(), columnIndex); + Value value = values().get(columnIndex); + return value.getFloatValue(); + } + + @Override + public double getDouble(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.float64(), columnName); + Value value = values().get(columnIndex); + return value.getFloatValue(); + } + + @Override + public float getFloat(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.float32(), columnIndex); + Value value = values().get(columnIndex); + return (float) value.getFloatValue(); + } + + @Override + public float getFloat(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.float32(), columnName); + Value value = values().get(columnIndex); + return (float) value.getFloatValue(); + } + + @Override + public boolean getBoolean(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.bool(), columnIndex); + Value value = values().get(columnIndex); + return value.getBoolValue(); + } + + @Override + public boolean getBoolean(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.bool(), columnName); + Value value = values().get(columnIndex); + return value.getBoolValue(); + } + + @Override + public Instant getTimestamp(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.timestamp(), columnIndex); + Value value = values().get(columnIndex); + return toInstant(value.getTimestampValue()); + } + + @Override + public Instant getTimestamp(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.timestamp(), columnName); + Value value = values().get(columnIndex); + return toInstant(value.getTimestampValue()); + } + + @Override + public Date getDate(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.date(), columnIndex); + Value value = values().get(columnIndex); + return fromProto(value.getDateValue()); + } + + @Override + public Date getDate(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.date(), columnName); + Value value = values().get(columnIndex); + return fromProto(value.getDateValue()); + } + + @Override + public Struct getStruct(int columnIndex) { + checkNonNullOfType(columnIndex, SqlType.struct(), columnIndex); + Value value = values().get(columnIndex); + SqlType.Struct schema = (SqlType.Struct) getColumnType(columnIndex); + // A struct value is represented as an array + return ProtoStruct.create(schema, value.getArrayValue()); + } + + @Override + public Struct getStruct(String columnName) { + int columnIndex = getColumnIndex(columnName); + checkNonNullOfType(columnIndex, SqlType.struct(), columnName); + Value value = values().get(columnIndex); + SqlType.Struct schema = (SqlType.Struct) getColumnType(columnIndex); + // A struct value is represented as an array + return ProtoStruct.create(schema, value.getArrayValue()); + } + + @Override + public List getList(int columnIndex, SqlType.Array arrayType) { + // Note it is important that we use the actualType to decode bc user passed struct types + // won't have schemas + SqlType actualType = getColumnType(columnIndex); + checkNonNullOfType(columnIndex, arrayType, actualType, columnIndex); + Value value = values().get(columnIndex); + return (List) decodeValue(value, actualType); + } + + @Override + public List getList(String columnName, SqlType.Array arrayType) { + int columnIndex = getColumnIndex(columnName); + // Note it is important that we use the actualType to decode bc user passed struct types + // won't have schemas + SqlType actualType = getColumnType(columnIndex); + checkNonNullOfType(columnIndex, arrayType, actualType, columnName); + Value value = values().get(columnIndex); + return (List) decodeValue(value, actualType); + } + + @Override + public Map getMap(int columnIndex, SqlType.Map mapType) { + // Note it is important that we use the actualType to decode bc user passed struct types + // won't have schemas + SqlType actualType = getColumnType(columnIndex); + checkNonNullOfType(columnIndex, mapType, actualType, columnIndex); + Value value = values().get(columnIndex); + return (Map) decodeValue(value, actualType); + } + + @Override + public Map getMap(String columnName, SqlType.Map mapType) { + int columnIndex = getColumnIndex(columnName); + // Note it is important that we use the actualType to decode bc user passed struct types + // won't have schemas + SqlType actualType = getColumnType(columnIndex); + checkNonNullOfType(columnIndex, mapType, actualType, columnName); + Value value = values().get(columnIndex); + return (Map) decodeValue(value, actualType); + } + + Object decodeValue(Value value, SqlType type) { + if (value.getKindCase().equals(KindCase.KIND_NOT_SET)) { + return null; + } + switch (type.getCode()) { + case BYTES: + return value.getBytesValue(); + case STRING: + return value.getStringValue(); + case INT64: + return value.getIntValue(); + case FLOAT64: + case FLOAT32: + return value.getFloatValue(); + case BOOL: + return value.getBoolValue(); + case TIMESTAMP: + return toInstant(value.getTimestampValue()); + case DATE: + return fromProto(value.getDateValue()); + case STRUCT: + SqlType.Struct schema = (SqlType.Struct) type; + // A struct value is represented as an array + return ProtoStruct.create(schema, value.getArrayValue()); + case ARRAY: + ArrayList listBuilder = new ArrayList<>(); + SqlType.Array arrayType = (SqlType.Array) type; + SqlType elemType = arrayType.getElementType(); + for (Value elem : value.getArrayValue().getValuesList()) { + listBuilder.add(decodeValue(elem, elemType)); + } + // We use unmodifiableList instead of guava ImmutableList to allow null elements + return Collections.unmodifiableList(listBuilder); + case MAP: + HashMap mapBuilder = new HashMap<>(); + SqlType.Map mapType = (SqlType.Map) type; + SqlType keyType = mapType.getKeyType(); + SqlType valType = mapType.getValueType(); + // A map value is represented as an array of k, v tuples where the tuple is a nested array + for (Value entry : value.getArrayValue().getValuesList()) { + Object key = decodeValue(entry.getArrayValue().getValues(0), keyType); + Object val = decodeValue(entry.getArrayValue().getValues(1), valType); + mapBuilder.put(key, val); + } + // We use unmodifiableMap instead of guava ImmutableMap to allow null keys & values + return Collections.unmodifiableMap(mapBuilder); + default: + // We should have already thrown an exception in the SqlRowMerger + throw new IllegalStateException("Unrecognized type: " + type); + } + } + + private void checkNonNullOfType( + int columnIndex, SqlType expectedType, Object columnNameForError) { + SqlType actualType = getColumnType(columnIndex); + checkNonNullOfType(columnIndex, expectedType, actualType, columnNameForError); + } + + private void checkNonNullOfType( + int columnIndex, SqlType expectedType, SqlType actualType, Object columnNameForError) { + Preconditions.checkState( + SqlType.typesMatch(expectedType, actualType), + "Column %s is not of correct type: expected %s but was %s", + columnNameForError, + expectedType.toString(), + actualType.toString()); + if (isNull(columnIndex)) { + throw new NullPointerException("Column " + columnNameForError + " contains NULL value"); + } + } + + private Instant toInstant(Timestamp timestamp) { + return Instant.ofEpochSecond(timestamp.getSeconds(), timestamp.getNanos()); + } + + private Date fromProto(com.google.type.Date proto) { + return Date.fromYearMonthDay(proto.getYear(), proto.getMonth(), proto.getDay()); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ColumnMetadataImpl.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ColumnMetadataImpl.java new file mode 100644 index 0000000000..966cca5e60 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ColumnMetadataImpl.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.InternalApi; +import com.google.auto.value.AutoValue; +import com.google.cloud.bigtable.data.v2.models.sql.ColumnMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; + +/** + * Implementation of {@link ColumnMetadata} using AutoValue + * + *

This is considered an internal implementation detail and not meant to be used by applications. + */ +@InternalApi("For internal use only") +@AutoValue +public abstract class ColumnMetadataImpl implements ColumnMetadata { + public static ColumnMetadata create(String name, SqlType type) { + return new AutoValue_ColumnMetadataImpl(name, type); + } + + static ColumnMetadata fromProto(com.google.bigtable.v2.ColumnMetadata proto) { + return create(proto.getName(), SqlType.fromProto(proto.getType())); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ColumnToIndexMapper.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ColumnToIndexMapper.java new file mode 100644 index 0000000000..aec1c5897c --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ColumnToIndexMapper.java @@ -0,0 +1,67 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.InternalApi; +import com.google.cloud.bigtable.data.v2.models.sql.ColumnMetadata; +import com.google.common.collect.ImmutableMap; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * This is an internal helper to share the index to column name lookup and the handling of ambiguous + * columns described below for Rows and Structs + */ +@InternalApi +public abstract class ColumnToIndexMapper { + // It is valid for a select query to return columns with the same name. This marker is used + // internally in the client to designate that getting a value by column name is invalid and will + // be converted into an exception. + private static final int AMBIGUOUS_FIELD_MARKER = -1; + + private Map columnNameMapping; + + protected ColumnToIndexMapper(List columns) { + columnNameMapping = buildColumnNameMapping(columns); + } + + public int getColumnIndex(String columnName) { + Integer index = columnNameMapping.get(columnName); + if (index == null) { + throw new IllegalArgumentException("Column name not found: " + columnName); + } + int unboxedIndex = index; + if (unboxedIndex == AMBIGUOUS_FIELD_MARKER) { + throw new IllegalArgumentException( + "Ambiguous column name: " + columnName + ". Same name is used for multiple columns."); + } + return unboxedIndex; + } + + private Map buildColumnNameMapping(List columns) { + HashMap mapping = new HashMap<>(columns.size()); + for (int i = 0; i < columns.size(); i++) { + String columnName = columns.get(i).name(); + if (mapping.containsKey(columnName)) { + mapping.put(columnName, AMBIGUOUS_FIELD_MARKER); + } else { + mapping.put(columnName, i); + } + } + return ImmutableMap.copyOf(mapping); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoResultSetMetadata.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoResultSetMetadata.java new file mode 100644 index 0000000000..36bbdf5008 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoResultSetMetadata.java @@ -0,0 +1,97 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.InternalApi; +import com.google.bigtable.v2.ProtoSchema; +import com.google.bigtable.v2.ResultSetMetadata.SchemaCase; +import com.google.bigtable.v2.Type; +import com.google.cloud.bigtable.data.v2.models.sql.ColumnMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import java.util.List; +import javax.annotation.Nullable; + +/** + * Implementation of {@link ResultSetMetadata} using an underlying protobuf schema. + * + *

This is considered an internal implementation detail and not meant to be used by applications. + */ +@InternalApi +public class ProtoResultSetMetadata extends ColumnToIndexMapper implements ResultSetMetadata { + private final List columns; + + public static ResultSetMetadata create(List columns) { + return new ProtoResultSetMetadata(columns); + } + + private ProtoResultSetMetadata(List columns) { + super(columns); + this.columns = ImmutableList.copyOf(columns); + } + + @Override + public List getColumns() { + return columns; + } + + @Override + public SqlType getColumnType(int columnIndex) { + return columns.get(columnIndex).type(); + } + + @Override + public SqlType getColumnType(String columnName) { + return getColumnType(getColumnIndex(columnName)); + } + + @InternalApi + public static ResultSetMetadata fromProto(com.google.bigtable.v2.ResultSetMetadata proto) { + Preconditions.checkState( + proto.getSchemaCase().equals(SchemaCase.PROTO_SCHEMA), + "Unsupported schema type: %s", + proto.getSchemaCase().name()); + ProtoSchema schema = proto.getProtoSchema(); + validateSchema(schema); + ImmutableList.Builder columnsBuilder = ImmutableList.builder(); + for (com.google.bigtable.v2.ColumnMetadata protoColumn : schema.getColumnsList()) { + columnsBuilder.add(ColumnMetadataImpl.fromProto(protoColumn)); + } + return create(columnsBuilder.build()); + } + + private static void validateSchema(ProtoSchema schema) { + List columns = schema.getColumnsList(); + Preconditions.checkState(!columns.isEmpty(), "columns cannot be empty"); + for (com.google.bigtable.v2.ColumnMetadata column : columns) { + Preconditions.checkState( + column.getType().getKindCase() != Type.KindCase.KIND_NOT_SET, + "Column type cannot be empty"); + } + } + + @Override + public boolean equals(@Nullable Object other) { + if (other instanceof ProtoResultSetMetadata) { + ProtoResultSetMetadata o = (ProtoResultSetMetadata) other; + // columnNameMapping is derived from columns, so we only need to compare columns + return columns.equals(o.columns); + } + return false; + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoSqlRow.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoSqlRow.java new file mode 100644 index 0000000000..3a63fe089a --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoSqlRow.java @@ -0,0 +1,50 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.InternalApi; +import com.google.auto.value.AutoValue; +import com.google.bigtable.v2.Value; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import java.util.List; + +@InternalApi +@AutoValue +public abstract class ProtoSqlRow extends AbstractProtoStructReader implements SqlRow { + /** + * Creates a new SqlRow + * + * @param metadata the {@link ResultSetMetadata} for the results + * @param values list of the values for each column + */ + public static ProtoSqlRow create(ResultSetMetadata metadata, List values) { + return new AutoValue_ProtoSqlRow(values, metadata); + } + + /** {@link ResultSetMetadata} describing the schema of the row. */ + abstract ResultSetMetadata metadata(); + + @Override + public int getColumnIndex(String columnName) { + return metadata().getColumnIndex(columnName); + } + + @Override + public SqlType getColumnType(int columnIndex) { + return metadata().getColumnType(columnIndex); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoStruct.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoStruct.java new file mode 100644 index 0000000000..f9da3ef9fb --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ProtoStruct.java @@ -0,0 +1,58 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.InternalApi; +import com.google.auto.value.AutoValue; +import com.google.bigtable.v2.ArrayValue; +import com.google.bigtable.v2.Value; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.cloud.bigtable.data.v2.models.sql.Struct; +import java.util.List; + +/** + * Implementation of a {@link Struct} backed by protobuf {@link Value}s. + * + *

This is considered an internal implementation detail and not meant to be used by applications. + */ +@InternalApi("For internal use only") +@AutoValue +public abstract class ProtoStruct extends AbstractProtoStructReader implements Struct { + + @InternalApi + static ProtoStruct create(SqlType.Struct type, ArrayValue fieldValues) { + return new AutoValue_ProtoStruct(type, fieldValues); + } + + protected abstract SqlType.Struct type(); + + protected abstract ArrayValue fieldValues(); + + @Override + List values() { + return fieldValues().getValuesList(); + } + + @Override + public int getColumnIndex(String columnName) { + return type().getColumnIndex(columnName); + } + + @Override + public SqlType getColumnType(int columnIndex) { + return type().getType(columnIndex); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ResultSetImpl.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ResultSetImpl.java new file mode 100644 index 0000000000..1d2bd37f2d --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/ResultSetImpl.java @@ -0,0 +1,218 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.ApiFuture; +import com.google.api.core.InternalApi; +import com.google.api.gax.rpc.ApiExceptions; +import com.google.api.gax.rpc.ServerStream; +import com.google.cloud.Date; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSet; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.cloud.bigtable.data.v2.models.sql.Struct; +import com.google.cloud.bigtable.data.v2.models.sql.StructReader; +import com.google.cloud.bigtable.data.v2.stub.sql.SqlServerStream; +import com.google.common.base.Preconditions; +import com.google.protobuf.ByteString; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import org.threeten.bp.Instant; + +/** + * The primary implementation of a ResultSet. + * + *

This passes through StructReader calls to each row rather than implementing + * AbstractProtoStructReader directly so that it can support different types of rows in the future. + * + *

This is considered an internal implementation detail and not meant to be used by applications. + */ +@InternalApi("For internal use only") +public class ResultSetImpl implements ResultSet, StructReader { + + private final ServerStream serverStream; + private final Iterator rowIterator; + private final ApiFuture metadataApiFuture; + private boolean consumed; + private SqlRow currentRow; + + public static ResultSet create(SqlServerStream sqlServerStream) { + return new ResultSetImpl(sqlServerStream); + } + + private ResultSetImpl(SqlServerStream sqlServerStream) { + this.serverStream = sqlServerStream.rows(); + this.rowIterator = serverStream.iterator(); + this.metadataApiFuture = sqlServerStream.metadataFuture(); + this.consumed = false; + } + + private SqlRow getCurrentRow() { + Preconditions.checkState(!consumed, "Attempted to access data from closed ResultSet"); + Preconditions.checkState(currentRow != null, "Attempted to access data before calling next()"); + return currentRow; + } + + @Override + public boolean next() { + if (consumed) { + return false; + } + boolean hasNext = rowIterator.hasNext(); + if (hasNext) { + currentRow = rowIterator.next(); + } else { + consumed = true; + } + return hasNext; + } + + @Override + public ResultSetMetadata getMetadata() { + return ApiExceptions.callAndTranslateApiException(metadataApiFuture); + } + + @Override + public void close() { + // If the stream has been consumed we don't want to cancel because it could + // cancel the request before it receives response trailers. + if (!consumed) { + serverStream.cancel(); + } + consumed = true; + } + + @Override + public boolean isNull(int columnIndex) { + return getCurrentRow().isNull(columnIndex); + } + + @Override + public boolean isNull(String columnName) { + return getCurrentRow().isNull(columnName); + } + + @Override + public ByteString getBytes(int columnIndex) { + return getCurrentRow().getBytes(columnIndex); + } + + @Override + public ByteString getBytes(String columnName) { + return getCurrentRow().getBytes(columnName); + } + + @Override + public String getString(int columnIndex) { + return getCurrentRow().getString(columnIndex); + } + + @Override + public String getString(String columnName) { + return getCurrentRow().getString(columnName); + } + + @Override + public long getLong(int columnIndex) { + return getCurrentRow().getLong(columnIndex); + } + + @Override + public long getLong(String columnName) { + return getCurrentRow().getLong(columnName); + } + + @Override + public double getDouble(int columnIndex) { + return getCurrentRow().getDouble(columnIndex); + } + + @Override + public double getDouble(String columnName) { + return getCurrentRow().getDouble(columnName); + } + + @Override + public float getFloat(int columnIndex) { + return getCurrentRow().getFloat(columnIndex); + } + + @Override + public float getFloat(String columnName) { + return getCurrentRow().getFloat(columnName); + } + + @Override + public boolean getBoolean(int columnIndex) { + return getCurrentRow().getBoolean(columnIndex); + } + + @Override + public boolean getBoolean(String columnName) { + return getCurrentRow().getBoolean(columnName); + } + + @Override + public Instant getTimestamp(int columnIndex) { + return getCurrentRow().getTimestamp(columnIndex); + } + + @Override + public Instant getTimestamp(String columnName) { + return getCurrentRow().getTimestamp(columnName); + } + + @Override + public Date getDate(int columnIndex) { + return getCurrentRow().getDate(columnIndex); + } + + @Override + public Date getDate(String columnName) { + return getCurrentRow().getDate(columnName); + } + + @Override + public Struct getStruct(int columnIndex) { + return getCurrentRow().getStruct(columnIndex); + } + + @Override + public Struct getStruct(String columnName) { + return getCurrentRow().getStruct(columnName); + } + + @Override + public List getList(int columnIndex, SqlType.Array arrayType) { + return getCurrentRow().getList(columnIndex, arrayType); + } + + @Override + public List getList(String columnName, SqlType.Array arrayType) { + return getCurrentRow().getList(columnName, arrayType); + } + + @Override + public Map getMap(int columnIndex, SqlType.Map mapType) { + return getCurrentRow().getMap(columnIndex, mapType); + } + + @Override + public Map getMap(String columnName, SqlType.Map mapType) { + return getCurrentRow().getMap(columnName, mapType); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/SqlRow.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/SqlRow.java new file mode 100644 index 0000000000..6ddde59155 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/SqlRow.java @@ -0,0 +1,24 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.InternalApi; +import com.google.cloud.bigtable.data.v2.models.sql.StructReader; +import java.io.Serializable; + +/** Internal implementation detail that provides access to row data for SQL requests. */ +@InternalApi +public interface SqlRow extends StructReader, Serializable {} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/SqlRowMergerUtil.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/SqlRowMergerUtil.java new file mode 100644 index 0000000000..edb8cf6dcf --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/SqlRowMergerUtil.java @@ -0,0 +1,69 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.cloud.bigtable.data.v2.stub.sql.SqlRowMerger; +import com.google.common.collect.ImmutableList; +import java.util.List; + +/** + * Wrapper around {@link SqlRowMerger} that provides an easy way to transform a set of + * ExecuteQueryResponses into rows. Must create a new instance per ExecuteQueryRequest, and pass in + * the response stream of ExecuteQueryResponses in the order they were received. + */ +@InternalApi("For internal use only") +@BetaApi +public class SqlRowMergerUtil implements AutoCloseable { + + private final SqlRowMerger merger; + + public SqlRowMergerUtil() { + merger = new SqlRowMerger(); + } + + @Override + public void close() { + if (merger.hasPartialFrame()) { + throw new IllegalStateException("Tried to close SqlRowMerger with unconsumed partial data"); + } + } + + /** + * Transforms a list of {@link ExecuteQueryResponse} objects into a list of {@link + * com.google.cloud.bigtable.data.v2.internal.ProtoSqlRow} objects . The first call must contain + * the ResultSetMetadata as the first ExecuteQueryResponse. This will return any complete {@link + * com.google.cloud.bigtable.data.v2.internal.ProtoSqlRow}s from the given responses and buffer + * partial rows waiting for the next ExecuteQueryResponse. + * + * @param responses List of {@link ExecuteQueryResponse} for a query + * @return a list of the complete {@link com.google.cloud.bigtable.data.v2.internal.ProtoSqlRow}s + * that have been merged from the given responses. + */ + public List parseExecuteQueryResponses(ImmutableList responses) { + ImmutableList.Builder rows = new ImmutableList.Builder<>(); + + for (ExecuteQueryResponse response : responses) { + merger.push(response); + while (merger.hasFullFrame()) { + rows.add(merger.pop()); + } + } + return rows.build(); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ColumnMetadata.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ColumnMetadata.java new file mode 100644 index 0000000000..0a722a914d --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ColumnMetadata.java @@ -0,0 +1,28 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import com.google.api.core.BetaApi; + +/** Represents the metadata for a column in a {@link ResultSet} */ +@BetaApi +public interface ColumnMetadata { + /** The name of the column. Returns Empty string if the column has no name */ + String name(); + + /** The {@link SqlType} of the column */ + SqlType type(); +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ResultSet.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ResultSet.java new file mode 100644 index 0000000000..807e995712 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ResultSet.java @@ -0,0 +1,65 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import com.google.api.core.BetaApi; + +/** + * A set of SQL data, generated as the result of an ExecuteQuery request. + * + *

This allows access to the data of one row at a time using the methods from the {@code + * StructReader} interface. The rows are read in the order of the query results. To advance to the + * next row call {@link #next}. This returns {@code false} once all the rows have been iterated + * over. The result set is initially positioned before the first row, so {@link #next} must be + * called before reading any data. + * + *

{@link #getMetadata()} may be called before calling next. It will block until the metadata has + * been received. + * + *

{@code ResultSet} implementations may buffer data ahead and/or maintain a persistent streaming + * connection to the remote service until all data has been returned or the resultSet closed. As + * such, it is important that all uses of {@code ResultSet} either fully consume it (that is, call + * {@code next()} until {@code false} is returned or it throws an exception) or explicitly call + * {@link #close()}: failure to do so may result in wasted work or leaked resources. + * + *

{@code ResultSet} implementations are not required to be thread-safe: the thread that asked + * for a ResultSet must be the one that interacts with it. + */ +@BetaApi +public interface ResultSet extends StructReader, AutoCloseable { + + /** + * Advances the result set to the next row, returning {@code false} if no such row exists. Calls + * to data access methods will throw an exception after next has returned {@code False}. + */ + boolean next(); + + /** + * Returns the {@link ResultSetMetadata} for the ResultSet. Blocks until the underlying request + * receives the metadata. + */ + ResultSetMetadata getMetadata(); + + /** + * Closes the result set and cancels the underlying request if it is still open. This must always + * be called when disposing of a {@code ResultSet} before {@link #next()} has returned {@code + * false} or raised an exception. Calling {@code close()} is also allowed if the result set has + * been fully consumed, so a recommended practice is to unconditionally close the result set once + * it is done with, typically using a try-with-resources construct. + */ + @Override + void close(); +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ResultSetMetadata.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ResultSetMetadata.java new file mode 100644 index 0000000000..23e7155e67 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/ResultSetMetadata.java @@ -0,0 +1,49 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import com.google.api.core.BetaApi; +import java.util.List; + +/** Provides information about the schema of a {@link ResultSet}. */ +@BetaApi +public interface ResultSetMetadata { + + /** @return full list of {@link ColumnMetadata} for each column in the {@link ResultSet}. */ + List getColumns(); + + /** + * @param columnIndex index of the column + * @return the {@link SqlType} of the column at the given index + */ + SqlType getColumnType(int columnIndex); + + /** + * @param columnName name of the column + * @return the {@link SqlType} of the column with the given name + * @throws IllegalArgumentException if there is no column with the name *or* if there are multiple + * columns with the given name + */ + SqlType getColumnType(String columnName); + + /** + * @param columnName name of the column + * @return index of the column with the given name + * @throws IllegalArgumentException if there is no column with the name *or* if there are multiple + * columns with the given name + */ + int getColumnIndex(String columnName); +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/SqlType.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/SqlType.java new file mode 100644 index 0000000000..50146f292a --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/SqlType.java @@ -0,0 +1,286 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.cloud.Date; +import com.google.cloud.bigtable.common.Type; +import com.google.cloud.bigtable.common.Type.SchemalessStruct; +import com.google.cloud.bigtable.common.Type.StructWithSchema; +import com.google.protobuf.ByteString; +import java.io.Serializable; +import java.util.List; +import org.threeten.bp.Instant; + +/** + * Represents a data type in a SQL query. + * + *

Complex types ({@link SqlType.Map}, {@link SqlType.Array}, & {@link SqlType.Struct} provide + * additional information about the schema of the type. + * + * @param the corresponding java type + */ +@BetaApi +public interface SqlType extends Serializable { + + /* Enumeration of the types */ + enum Code { + BYTES, + STRING, + INT64, + FLOAT64, + FLOAT32, + BOOL, + TIMESTAMP, + DATE, + STRUCT, + ARRAY, + MAP + } + + /** @return {@link Code} enum for this type */ + Code getCode(); + + /** + * Represents a map type in SQL. Provides access to the key and value types for the map. + * + * @param Java type of the Map key data + * @param Java type of the Map value data + */ + interface Map extends SqlType> { + /** @return {@link SqlType} of the map's key */ + SqlType getKeyType(); + + /** @return {@link SqlType} of the map's value */ + SqlType getValueType(); + } + + /** + * Represents an array type in SQL. Provides access to the element type of the array. + * + * @param Java type of the Array element data + */ + interface Array extends SqlType> { + /** @return {@link SqlType} of the array's elements */ + SqlType getElementType(); + } + + /** + * Represents a struct type in SQL. A struct is an ordered collection of named and type fields. + */ + interface Struct extends SqlType { + // This extends ColumnMetadata so that we can reuse some helpers for both types + /** Represents a field in a struct */ + interface Field extends ColumnMetadata { + /** @return the name of the field. Returns an empty string for fields without names. */ + String name(); + + /** @return the {@link SqlType} of the field */ + SqlType type(); + } + + /** @return the ordered list of {@link Field}s for the struct */ + List getFields(); + + /** + * @param fieldIndex index of the field + * @return the {@link SqlType} of the field at the given index + */ + SqlType getType(int fieldIndex); + + /** + * @param fieldName name of the field + * @return the {@link SqlType} of the field with the given name + * @throws IllegalArgumentException if there is no field with the name *or* if there are + * multiple columns with the given name + */ + SqlType getType(String fieldName); + + /** + * @param fieldName name of the field + * @return the field index of the field with the given name + * @throws IllegalArgumentException if there is no field with the name *or* if there are + * multiple columns with the given name + */ + int getColumnIndex(String fieldName); + } + + /** returns a {@link SqlType} for the {@code BYTES} type. */ + static SqlType bytes() { + return Type.Bytes.create(); + } + + /** returns a {@link SqlType} for the {@code STRING} type. */ + static SqlType string() { + return Type.String.create(); + } + + /** returns a {@link SqlType} for the {@code INT64} type. */ + static SqlType int64() { + return Type.Int64.create(); + } + + /** returns a {@link SqlType} for the {@code FLOAT64} type. */ + static SqlType float64() { + return Type.Float64.create(); + } + + /** returns a {@link SqlType} for the {@code FLOAT32} type. */ + static SqlType float32() { + return Type.Float32.create(); + } + + /** returns a {@link SqlType} for the {@code BOOL} type. */ + static SqlType bool() { + return Type.Bool.create(); + } + + /** returns a {@link SqlType} for the {@code TIMESTAMP} type. */ + static SqlType timestamp() { + return Type.Timestamp.create(); + } + + /** returns a {@link SqlType} for the {@code DATE} type. */ + static SqlType date() { + return Type.Date.create(); + } + + /** + * returns a fake {@code STRUCT type} for use on in {@link StructReader} methods that require a + * {@link SqlType} to validate against. This does not specify a schema because the struct schem + * will be validated on calls to the structs data accessors. + * + *

Attempts to access the schema of a struct created this way will throw exceptions. + * + *

Example usage: + *

{@code
+   *   List structList = resultSet.getList("column", SqlType.arrayOf(SqlType.struct()));
+   * }
+   */
+  static SqlType.Struct struct() {
+    return SchemalessStruct.create();
+  }
+
+  /** returns a {@link SqlType} for an {@code ARRAY} with elements of type {@code elemType} */
+  static  SqlType.Array arrayOf(SqlType elemType) {
+    return Type.Array.create(elemType);
+  }
+
+  /**
+   * returns a {@link SqlType} for a @code MAP} with keys of type {@code keyType} and values of type
+   * {@code valType}
+   */
+  static  SqlType.Map mapOf(SqlType keyType, SqlType valType) {
+    return Type.Map.create(keyType, valType);
+  }
+
+  /**
+   * returns the {@link SqlType} for the type returned for column families in {@code with_history}
+   * queries. This is equivalent to {@code SqlType.mapOf(SqlType.bytes(),
+   * SqlType.arrayOf(SqlType.struct()))}
+   */
+  static SqlType.Map>
+      historicalMap() {
+    return mapOf(bytes(), arrayOf(struct()));
+  }
+
+  /**
+   * Creates a {@link SqlType} from the protobuf representation of Types.
+   *
+   * 

This is considered an internal implementation detail and not meant to be used by + * applications. + */ + @InternalApi + static SqlType fromProto(com.google.bigtable.v2.Type proto) { + switch (proto.getKindCase()) { + case BYTES_TYPE: + return bytes(); + case STRING_TYPE: + return string(); + case INT64_TYPE: + return int64(); + case FLOAT64_TYPE: + return float64(); + case FLOAT32_TYPE: + return float32(); + case BOOL_TYPE: + return bool(); + case TIMESTAMP_TYPE: + return timestamp(); + case DATE_TYPE: + return date(); + case STRUCT_TYPE: + return StructWithSchema.fromProto(proto.getStructType()); + case ARRAY_TYPE: + return arrayOf(fromProto(proto.getArrayType().getElementType())); + case MAP_TYPE: + com.google.bigtable.v2.Type.Map mapType = proto.getMapType(); + return mapOf(fromProto(mapType.getKeyType()), fromProto(mapType.getValueType())); + case KIND_NOT_SET: + throw new IllegalStateException("Unrecognized Type. You may need to update your client."); + default: + throw new IllegalStateException("Unexpected Type: " + proto.getKindCase().name()); + } + } + + /** + * This can be used to check whether {@link + * com.google.cloud.bigtable.data.v2.models.sql.StructReader} get calls are being called for the + * correct type when compared to the schema. This is different that equals because we do not + * require users to specify the full struct schema for struct get calls. This is safe because the + * struct schema will be validated on calls to the struct. + * + *

This is considered an internal implementation detail and not meant to be used by + * applications. + */ + @InternalApi + static boolean typesMatch(SqlType left, SqlType right) { + switch (left.getCode()) { + case BYTES: + case STRING: + case INT64: + case FLOAT64: + case FLOAT32: + case BOOL: + case TIMESTAMP: + case DATE: + return left.equals(right); + case STRUCT: + // Don't validate fields since the field types will be validated on + // accessor calls to struct + return left.getCode().equals(right.getCode()); + case ARRAY: + if (!left.getCode().equals(right.getCode())) { + return false; + } + SqlType.Array leftArray = (SqlType.Array) left; + SqlType.Array rightArray = (SqlType.Array) right; + return typesMatch(leftArray.getElementType(), rightArray.getElementType()); + case MAP: + if (!left.getCode().equals(right.getCode())) { + return false; + } + SqlType.Map leftMap = (SqlType.Map) left; + SqlType.Map rightMap = (SqlType.Map) right; + boolean keysMatch = typesMatch(leftMap.getKeyType(), rightMap.getKeyType()); + boolean valuesMatch = typesMatch(leftMap.getValueType(), rightMap.getValueType()); + return keysMatch && valuesMatch; + default: + throw new IllegalStateException("Unexpected type: " + left); + } + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/Statement.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/Statement.java new file mode 100644 index 0000000000..c68a9feec5 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/Statement.java @@ -0,0 +1,236 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.Type; +import com.google.bigtable.v2.Value; +import com.google.cloud.Date; +import com.google.cloud.bigtable.data.v2.internal.NameUtil; +import com.google.cloud.bigtable.data.v2.internal.RequestContext; +import com.google.common.collect.ImmutableMap; +import com.google.protobuf.ByteString; +import com.google.protobuf.Timestamp; +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Nullable; +import org.threeten.bp.Instant; + +/** + * A SQL statement that can be executed by calling {@link + * com.google.cloud.bigtable.data.v2.BigtableDataClient#executeQuery(Statement)}. + * + *

A statement contains a SQL string and optional parameters. A parameterized query should + * contain placeholders in the form of {@literal @} followed by the parameter name. Parameter names + * may consist of any combination of letters, numbers, and underscores. + * + *

Parameters can appear anywhere that a literal value is expected. The same parameter name can + * be used more than once, for example: {@code WHERE cf["qualifier1"] = @value OR cf["qualifier2"] + * = @value } + * + *

It is an error to execute an SQL query with placeholders for unset parameters. + * + *

Parameterized Statements are constructed using a {@link Builder} and calling + * setTypeParam(String paramName, Type value) for the appropriate type. For example: + * + *

{@code
+ * Statement statement = Statement
+ *     .newBuilder("SELECT cf[@qualifer] FROM table WHERE _key=@key")
+ *     .setBytesParam("qualifier", ByteString.copyFromUtf8("test"))
+ *     .setBytesParam("key", ByteString.copyFromUtf8("testKey"))
+ *     .build();
+ * }
+ */ +@BetaApi +public class Statement { + + private static final Type STRING_TYPE = + Type.newBuilder().setStringType(Type.String.getDefaultInstance()).build(); + private static final Type BYTES_TYPE = + Type.newBuilder().setBytesType(Type.Bytes.getDefaultInstance()).build(); + private static final Type INT64_TYPE = + Type.newBuilder().setInt64Type(Type.Int64.getDefaultInstance()).build(); + private static final Type BOOL_TYPE = + Type.newBuilder().setBoolType(Type.Bool.getDefaultInstance()).build(); + private static final Type TIMESTAMP_TYPE = + Type.newBuilder().setTimestampType(Type.Timestamp.getDefaultInstance()).build(); + private static final Type DATE_TYPE = + Type.newBuilder().setDateType(Type.Date.getDefaultInstance()).build(); + + private final String sql; + private final Map params; + + private Statement(String sql, Map params) { + this.sql = sql; + this.params = params; + } + + /** Creates a {@code Statement} with the given SQL query and no query parameters. */ + public static Statement of(String sql) { + return newBuilder(sql).build(); + } + + /** Creates a new {@code Builder} with the given SQL query */ + public static Builder newBuilder(String sql) { + return new Builder(sql); + } + + public static class Builder { + private final String sql; + private final Map params; + + private Builder(String sql) { + this.sql = sql; + this.params = new HashMap<>(); + } + + /** Builds a {@code Statement} from the builder */ + public Statement build() { + return new Statement(sql, ImmutableMap.copyOf(params)); + } + + /** + * Sets a query parameter with the name {@code paramName} and the String typed value {@code + * value} + */ + public Builder setStringParam(String paramName, @Nullable String value) { + params.put(paramName, stringParamOf(value)); + return this; + } + + /** + * Sets a query parameter with the name {@code paramName} and the Bytes typed value {@code + * value} + */ + public Builder setBytesParam(String paramName, @Nullable ByteString value) { + params.put(paramName, bytesParamOf(value)); + return this; + } + + /** + * Sets a query parameter with the name {@code paramName} and the INT64 typed value {@code + * value} + */ + public Builder setLongParam(String paramName, @Nullable Long value) { + params.put(paramName, int64ParamOf(value)); + return this; + } + + /** + * Sets a query parameter with the name {@code paramName} and the BOOL typed value {@code value} + */ + public Builder setBooleanParam(String paramName, @Nullable Boolean value) { + params.put(paramName, booleanParamOf(value)); + return this; + } + + /** + * Sets a query parameter with the name {@code paramName} and the TIMESTAMP typed value {@code + * value} + */ + public Builder setTimestampParam(String paramName, @Nullable Instant value) { + params.put(paramName, timestampParamOf(value)); + return this; + } + + /** + * Sets a query parameter with the name {@code paramName} and the DATE typed value {@code value} + */ + public Builder setDateParam(String paramName, @Nullable Date value) { + params.put(paramName, dateParamOf(value)); + return this; + } + + private static Value stringParamOf(@Nullable String value) { + Value.Builder builder = nullValueWithType(STRING_TYPE); + if (value != null) { + builder.setStringValue(value); + } + return builder.build(); + } + + private static Value bytesParamOf(@Nullable ByteString value) { + Value.Builder builder = nullValueWithType(BYTES_TYPE); + if (value != null) { + builder.setBytesValue(value); + } + return builder.build(); + } + + private static Value int64ParamOf(@Nullable Long value) { + Value.Builder builder = nullValueWithType(INT64_TYPE); + if (value != null) { + builder.setIntValue(value); + } + return builder.build(); + } + + private static Value booleanParamOf(@Nullable Boolean value) { + Value.Builder builder = nullValueWithType(BOOL_TYPE); + if (value != null) { + builder.setBoolValue(value); + } + return builder.build(); + } + + private static Value timestampParamOf(@Nullable Instant value) { + Value.Builder builder = nullValueWithType(TIMESTAMP_TYPE); + if (value != null) { + builder.setTimestampValue( + Timestamp.newBuilder() + .setSeconds(value.getEpochSecond()) + .setNanos(value.getNano()) + .build()); + } + return builder.build(); + } + + private static Value dateParamOf(@Nullable Date value) { + Value.Builder builder = nullValueWithType(DATE_TYPE); + if (value != null) { + builder.setDateValue( + com.google.type.Date.newBuilder() + .setYear(value.getYear()) + .setMonth(value.getMonth()) + .setDay(value.getDayOfMonth()) + .build()); + } + return builder.build(); + } + + private static Value.Builder nullValueWithType(Type type) { + return Value.newBuilder().setType(type); + } + } + + /** + * Creates the request protobuf. This method is considered an internal implementation detail and + * not meant to be used by applications. + */ + @InternalApi("For internal use only") + public ExecuteQueryRequest toProto(RequestContext requestContext) { + return ExecuteQueryRequest.newBuilder() + .setInstanceName( + NameUtil.formatInstanceName( + requestContext.getProjectId(), requestContext.getInstanceId())) + .setAppProfileId(requestContext.getAppProfileId()) + .setQuery(sql) + .putAllParams(params) + .build(); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/Struct.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/Struct.java new file mode 100644 index 0000000000..23b113f9f7 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/Struct.java @@ -0,0 +1,26 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import com.google.api.core.BetaApi; +import java.io.Serializable; + +/** + * The representation of a SQL Struct type. Data can be accessed using the methods from the {@code + * StructReader} interface. + */ +@BetaApi +public interface Struct extends StructReader, Serializable {} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/StructReader.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/StructReader.java new file mode 100644 index 0000000000..8f450bbd92 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/sql/StructReader.java @@ -0,0 +1,201 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import com.google.api.core.BetaApi; +import com.google.cloud.Date; +import com.google.protobuf.ByteString; +import java.util.List; +import java.util.Map; +import org.threeten.bp.Instant; + +/** + * An interface for reading the columns of a {@code Struct} or {@code + * com.google.cloud.bigtable.data.v2.models.sql.ResultSet}. + * + *

This provides accessors for each valid type in the form of {@code getTypeName()}. Attempting + * to call these methods for a column of another type will result in an {@code + * IllegalStateException}. Each method has an overload accepting both {@code int} column index and + * {@code String} column Name. Attempting to call an index-based method with a non-existent index + * will result in an {@code IndexOutOfBoundsException}. Attempting to call a columnName based getter + * with a column name that does not appear exactly once in the set of fields will result in an + * {@code IllegalArgumentException}. Attempting to access a column with a null value will result in + * a {@code NullPointerException}; {@link #isNull(int)} & {@link #isNull(String)} can be used to + * check for null values. + */ +@BetaApi +public interface StructReader { + /** + * @param columnIndex index of the column + * @return {@code true} if the column contains a {@code NULL} value + */ + boolean isNull(int columnIndex); + + /** + * @param columnName name of the column + * @return {@code true} if the column contains a {@code NULL} value + * @throws IllegalArgumentException if there is not exactly one column with the given name + */ + boolean isNull(String columnName); + + /** + * @param columnIndex index of the column + * @return {@link ByteString} type value of a non-{@code NULL} column + */ + ByteString getBytes(int columnIndex); + + /** + * @param columnName name of the column + * @return {@link ByteString} type value of a non-{@code NULL} column + */ + ByteString getBytes(String columnName); + + /** + * @param columnIndex index of the column + * @return {@link String} type value of a non-{@code NULL} column + */ + String getString(int columnIndex); + + /** + * @param columnName name of the column + * @return {@link String} type value of a non-{@code NULL} column + */ + String getString(String columnName); + + /** + * @param columnIndex index of the column + * @return {@link long} type value of a non-{@code NULL} column + */ + long getLong(int columnIndex); + + /** + * @param columnName name of the column + * @return {@link long} type value of a non-{@code NULL} column + */ + long getLong(String columnName); + + /** + * Getter for FLOAT_64 type Sql data + * + * @param columnIndex index of the column + * @return {@link double} type value of a non-{@code NULL} column + */ + double getDouble(int columnIndex); + + /** + * Getter for FLOAT_64 type Sql data + * + * @param columnName name of the column + * @return {@link double} type value of a non-{@code NULL} column + */ + double getDouble(String columnName); + + /** + * Getter for FLOAT_32 type Sql data + * + * @param columnIndex index of the column + * @return {@link float} type value of a non-{@code NULL} column + */ + float getFloat(int columnIndex); + + /** + * Getter for FLOAT_32 type Sql data + * + * @param columnName name of the column + * @return {@link float} type value of a non-{@code NULL} column + */ + float getFloat(String columnName); + + /** + * @param columnIndex index of the column + * @return {@link boolean} type value of a non-{@code NULL} column + */ + boolean getBoolean(int columnIndex); + + /** + * @param columnName name of the column + * @return {@link boolean} type value of a non-{@code NULL} column + */ + boolean getBoolean(String columnName); + + /** + * @param columnIndex index of the column + * @return {@link Instant} type value of a non-{@code NULL} column + */ + Instant getTimestamp(int columnIndex); + + /** + * @param columnName name of the column + * @return {@link Instant} type value of a non-{@code NULL} column + */ + Instant getTimestamp(String columnName); + + /** + * @param columnIndex index of the column + * @return {@link Date} type value of a non-{@code NULL} column + */ + Date getDate(int columnIndex); + + /** + * @param columnName name of the column + * @return {@link Date} type value of a non-{@code NULL} column + */ + Date getDate(String columnName); + + /** + * @param columnIndex index of the column + * @return {@link com.google.cloud.bigtable.data.v2.models.sql.Struct} type value of a non-{@code + * NULL} column + */ + Struct getStruct(int columnIndex); + + /** + * @param columnName name of the column + * @return {@link com.google.cloud.bigtable.data.v2.models.sql.Struct} type value of a non-{@code + * NULL} column + */ + Struct getStruct(String columnName); + + /** + * @param columnIndex index of the column + * @return {@link List} type value of a non-{@code NULL} column + * @param Java type of the list elements + */ + List getList(int columnIndex, SqlType.Array arrayType); + + /** + * @param columnName name of the column + * @return {@link List} type value of a non-{@code NULL} column + * @param Java type of the list elements + */ + List getList(String columnName, SqlType.Array arrayType); + + /** + * @param columnIndex index of the column + * @return {@link Map} type value of a non-{@code NULL} column + * @param Java type of the map keys + * @param Java type of the map values + */ + Map getMap(int columnIndex, SqlType.Map mapType); + + /** + * @param columnName name of the column + * @return {@link Map} type value of a non-{@code NULL} column + * @param Java type of the map keys + * @param Java type of the map values + */ + Map getMap(String columnName, SqlType.Map mapType); +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStub.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStub.java index 01bc5d9e85..9d887d6ccd 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStub.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStub.java @@ -22,6 +22,8 @@ import com.google.api.gax.rpc.UnaryCallable; import com.google.bigtable.v2.CheckAndMutateRowRequest; import com.google.bigtable.v2.CheckAndMutateRowResponse; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.ExecuteQueryResponse; import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest; import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse; import com.google.bigtable.v2.MutateRowRequest; @@ -90,6 +92,10 @@ public UnaryCallable pingAndWarmCallabl throw new UnsupportedOperationException("Not implemented: readChangeStreamCallable()"); } + public ServerStreamingCallable executeQueryCallable() { + throw new UnsupportedOperationException("Not implemented: executeQueryCallable()"); + } + @Override public abstract void close(); } diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java index 2cfd109ebe..22d394fe57 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java @@ -34,6 +34,8 @@ import com.google.api.gax.rpc.UnaryCallSettings; import com.google.bigtable.v2.CheckAndMutateRowRequest; import com.google.bigtable.v2.CheckAndMutateRowResponse; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.ExecuteQueryResponse; import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest; import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse; import com.google.bigtable.v2.MutateRowRequest; @@ -92,6 +94,8 @@ public class BigtableStubSettings extends StubSettings { generateInitialChangeStreamPartitionsSettings; private final ServerStreamingCallSettings readChangeStreamSettings; + private final ServerStreamingCallSettings + executeQuerySettings; /** Returns the object with the settings used for calls to readRows. */ public ServerStreamingCallSettings readRowsSettings() { @@ -147,6 +151,12 @@ public UnaryCallSettings pingAndWarmSet return readChangeStreamSettings; } + /** Returns the object with the settings used for calls to executeQuery. */ + public ServerStreamingCallSettings + executeQuerySettings() { + return executeQuerySettings; + } + public BigtableStub createStub() throws IOException { if (getTransportChannelProvider() .getTransportName() @@ -236,6 +246,7 @@ protected BigtableStubSettings(Builder settingsBuilder) throws IOException { generateInitialChangeStreamPartitionsSettings = settingsBuilder.generateInitialChangeStreamPartitionsSettings().build(); readChangeStreamSettings = settingsBuilder.readChangeStreamSettings().build(); + executeQuerySettings = settingsBuilder.executeQuerySettings().build(); } /** Builder for BigtableStubSettings. */ @@ -261,6 +272,8 @@ public static class Builder extends StubSettings.Builder readChangeStreamSettings; + private final ServerStreamingCallSettings.Builder + executeQuerySettings; private static final ImmutableMap> RETRYABLE_CODE_DEFINITIONS; @@ -373,6 +386,7 @@ protected Builder(ClientContext clientContext) { readModifyWriteRowSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); generateInitialChangeStreamPartitionsSettings = ServerStreamingCallSettings.newBuilder(); readChangeStreamSettings = ServerStreamingCallSettings.newBuilder(); + executeQuerySettings = ServerStreamingCallSettings.newBuilder(); unaryMethodSettingsBuilders = ImmutableList.>of( @@ -396,6 +410,7 @@ protected Builder(BigtableStubSettings settings) { generateInitialChangeStreamPartitionsSettings = settings.generateInitialChangeStreamPartitionsSettings.toBuilder(); readChangeStreamSettings = settings.readChangeStreamSettings.toBuilder(); + executeQuerySettings = settings.executeQuerySettings.toBuilder(); unaryMethodSettingsBuilders = ImmutableList.>of( @@ -463,6 +478,11 @@ private static Builder initDefaults(Builder builder) { .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_6_codes")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_6_params")); + builder + .executeQuerySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_params")); + return builder; } @@ -538,6 +558,12 @@ public UnaryCallSettings.Builder mutateRowS return readChangeStreamSettings; } + /** Returns the builder for the settings used for calls to executeQuery. */ + public ServerStreamingCallSettings.Builder + executeQuerySettings() { + return executeQuerySettings; + } + @Override public BigtableStubSettings build() throws IOException { return new BigtableStubSettings(this); diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java index 57d9748cca..d0022a1a46 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java @@ -44,6 +44,7 @@ import com.google.api.gax.rpc.RequestParamsExtractor; import com.google.api.gax.rpc.ServerStreamingCallSettings; import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.StatusCode.Code; import com.google.api.gax.rpc.UnaryCallSettings; import com.google.api.gax.rpc.UnaryCallable; import com.google.api.gax.tracing.ApiTracerFactory; @@ -56,6 +57,8 @@ import com.google.bigtable.v2.BigtableGrpc; import com.google.bigtable.v2.CheckAndMutateRowRequest; import com.google.bigtable.v2.CheckAndMutateRowResponse; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.ExecuteQueryResponse; import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest; import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse; import com.google.bigtable.v2.MutateRowRequest; @@ -77,6 +80,7 @@ import com.google.cloud.bigtable.data.v2.internal.JwtCredentialsWithAudience; import com.google.cloud.bigtable.data.v2.internal.NameUtil; import com.google.cloud.bigtable.data.v2.internal.RequestContext; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; import com.google.cloud.bigtable.data.v2.models.BulkMutation; import com.google.cloud.bigtable.data.v2.models.ChangeStreamMutation; import com.google.cloud.bigtable.data.v2.models.ChangeStreamRecord; @@ -95,6 +99,7 @@ import com.google.cloud.bigtable.data.v2.models.RowMutationEntry; import com.google.cloud.bigtable.data.v2.models.SampleRowKeysRequest; import com.google.cloud.bigtable.data.v2.models.TargetId; +import com.google.cloud.bigtable.data.v2.models.sql.Statement; import com.google.cloud.bigtable.data.v2.stub.changestream.ChangeStreamRecordMergingCallable; import com.google.cloud.bigtable.data.v2.stub.changestream.GenerateInitialChangeStreamPartitionsUserCallable; import com.google.cloud.bigtable.data.v2.stub.changestream.ReadChangeStreamResumptionStrategy; @@ -125,6 +130,10 @@ import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsRetryCompletedCallable; import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsUserCallable; import com.google.cloud.bigtable.data.v2.stub.readrows.RowMergingCallable; +import com.google.cloud.bigtable.data.v2.stub.sql.ExecuteQueryCallContext; +import com.google.cloud.bigtable.data.v2.stub.sql.ExecuteQueryCallable; +import com.google.cloud.bigtable.data.v2.stub.sql.MetadataResolvingCallable; +import com.google.cloud.bigtable.data.v2.stub.sql.SqlRowMergingCallable; import com.google.cloud.bigtable.gaxx.retrying.ApiResultRetryAlgorithm; import com.google.cloud.bigtable.gaxx.retrying.RetryInfoRetryAlgorithm; import com.google.common.annotations.VisibleForTesting; @@ -148,6 +157,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -200,6 +210,8 @@ public class EnhancedBigtableStub implements AutoCloseable { private final ServerStreamingCallable readChangeStreamCallable; + private final ExecuteQueryCallable executeQueryCallable; + public static EnhancedBigtableStub create(EnhancedBigtableStubSettings settings) throws IOException { ClientContext clientContext = createClientContext(settings); @@ -466,6 +478,7 @@ public EnhancedBigtableStub( readChangeStreamCallable = createReadChangeStreamCallable(new DefaultChangeStreamRecordAdapter()); pingAndWarmCallable = createPingAndWarmCallable(); + executeQueryCallable = createExecuteQueryCallable(); } // @@ -1284,6 +1297,74 @@ public Map extract( return traced.withDefaultCallContext(clientContext.getDefaultCallContext()); } + /** + * Creates a callable chain to handle streaming ExecuteQuery RPCs. The chain will: + * + *

    + *
  • Convert a {@link Statement} into a {@link ExecuteQueryCallContext}, which passes the + * {@link Statement} & a future for the {@link + * com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata} up the call chain. + *
  • Upon receiving the response stream, it will set the metadata future and translate the + * {@link com.google.bigtable.v2.PartialResultSet}s into {@link SqlRow}s + *
  • Add tracing & metrics. + *
  • Wrap the metadata future & row stream into a {@link + * com.google.cloud.bigtable.data.v2.stub.sql.SqlServerStream} + *
+ */ + @InternalApi("For internal use only") + public ExecuteQueryCallable createExecuteQueryCallable() { + // TODO support resumption + // TODO update codes once resumption is implemented + Set retryableCodes = Collections.emptySet(); + ServerStreamingCallable base = + GrpcRawCallableFactory.createServerStreamingCallable( + GrpcCallSettings.newBuilder() + .setMethodDescriptor(BigtableGrpc.getExecuteQueryMethod()) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(ExecuteQueryRequest executeQueryRequest) { + return ImmutableMap.of( + "name", executeQueryRequest.getInstanceName(), + "app_profile_id", executeQueryRequest.getAppProfileId()); + } + }) + .build(), + retryableCodes); + + ServerStreamingCallable withStatsHeaders = + new StatsHeadersServerStreamingCallable<>(base); + + ServerStreamingCallSettings innerSettings = + ServerStreamingCallSettings.newBuilder() + // TODO resumption strategy and retry settings + .setIdleTimeout(settings.executeQuerySettings().getIdleTimeout()) + .setWaitTimeout(settings.executeQuerySettings().getWaitTimeout()) + .build(); + + // Watchdog needs to stay above the metadata observer so that watchdog errors + // are passed through to the metadata future. + ServerStreamingCallable watched = + Callables.watched(withStatsHeaders, innerSettings, clientContext); + + ServerStreamingCallable withMetadataObserver = + new MetadataResolvingCallable(watched); + + ServerStreamingCallable merging = + new SqlRowMergingCallable(withMetadataObserver); + + ServerStreamingCallable withBigtableTracer = + new BigtableTracerStreamingCallable<>(merging); + + SpanName span = getSpanName("ExecuteQuery"); + ServerStreamingCallable traced = + new TracedServerStreamingCallable<>( + withBigtableTracer, clientContext.getTracerFactory(), span); + + return new ExecuteQueryCallable( + traced.withDefaultCallContext(clientContext.getDefaultCallContext()), requestContext); + } + /** * Wraps a callable chain in a user presentable callable that will inject the default call context * and trace the call. @@ -1416,6 +1497,11 @@ public UnaryCallable readModifyWriteRowCallable() { return readChangeStreamCallable; } + /** Returns an {@link com.google.cloud.bigtable.data.v2.stub.sql.ExecuteQueryCallable} */ + public ExecuteQueryCallable executeQueryCallable() { + return executeQueryCallable; + } + UnaryCallable pingAndWarmCallable() { return pingAndWarmCallable; } diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java index 5a9e03cf10..4415894132 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java @@ -35,6 +35,7 @@ import com.google.bigtable.v2.FeatureFlags; import com.google.bigtable.v2.PingAndWarmRequest; import com.google.cloud.bigtable.Version; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; import com.google.cloud.bigtable.data.v2.models.ChangeStreamRecord; import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation; import com.google.cloud.bigtable.data.v2.models.KeyOffset; @@ -44,6 +45,7 @@ import com.google.cloud.bigtable.data.v2.models.ReadModifyWriteRow; import com.google.cloud.bigtable.data.v2.models.Row; import com.google.cloud.bigtable.data.v2.models.RowMutation; +import com.google.cloud.bigtable.data.v2.models.sql.Statement; import com.google.cloud.bigtable.data.v2.stub.metrics.DefaultMetricsProvider; import com.google.cloud.bigtable.data.v2.stub.metrics.MetricsProvider; import com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsBatchingDescriptor; @@ -57,6 +59,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Base64; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -187,6 +190,18 @@ public class EnhancedBigtableStubSettings extends StubSettings EXECUTE_QUERY_RETRY_CODES = Collections.emptySet(); + + // We still setup retry settings in order to set default deadlines + private static final RetrySettings EXECUTE_QUERY_RETRY_SETTINGS = + RetrySettings.newBuilder() + .setMaxAttempts(1) + // Set a conservative deadline to start for preview. We'll increase this in the future + .setInitialRpcTimeout(Duration.ofSeconds(30)) + .setMaxRpcTimeout(Duration.ofSeconds(30)) + .build(); /** * Scopes that are equivalent to JWT's audience. * @@ -230,6 +245,7 @@ public class EnhancedBigtableStubSettings extends StubSettings readChangeStreamSettings; private final UnaryCallSettings pingAndWarmSettings; + private final ServerStreamingCallSettings executeQuerySettings; private final FeatureFlags featureFlags; @@ -276,6 +292,7 @@ private EnhancedBigtableStubSettings(Builder builder) { builder.generateInitialChangeStreamPartitionsSettings.build(); readChangeStreamSettings = builder.readChangeStreamSettings.build(); pingAndWarmSettings = builder.pingAndWarmSettings.build(); + executeQuerySettings = builder.executeQuerySettings.build(); featureFlags = builder.featureFlags.build(); } @@ -614,6 +631,10 @@ public UnaryCallSettings readModifyWriteRowSettings() { return readChangeStreamSettings; } + public ServerStreamingCallSettings executeQuerySettings() { + return executeQuerySettings; + } + /** * Returns the object with the settings used for calls to PingAndWarm. * @@ -654,6 +675,7 @@ public static class Builder extends StubSettings.Builder readChangeStreamSettings; private final UnaryCallSettings.Builder pingAndWarmSettings; + private final ServerStreamingCallSettings.Builder executeQuerySettings; private FeatureFlags.Builder featureFlags; @@ -782,6 +804,14 @@ private Builder() { .setTotalTimeout(PRIME_REQUEST_TIMEOUT) .build()); + executeQuerySettings = ServerStreamingCallSettings.newBuilder(); + executeQuerySettings + .setRetryableCodes(EXECUTE_QUERY_RETRY_CODES) + // This is used to set deadlines. We do not support retries yet. + .setRetrySettings(EXECUTE_QUERY_RETRY_SETTINGS) + .setIdleTimeout(Duration.ofMinutes(5)) + .setWaitTimeout(Duration.ofMinutes(5)); + featureFlags = FeatureFlags.newBuilder().setReverseScans(true).setLastScannedRowResponses(true); } @@ -811,6 +841,7 @@ private Builder(EnhancedBigtableStubSettings settings) { settings.generateInitialChangeStreamPartitionsSettings.toBuilder(); readChangeStreamSettings = settings.readChangeStreamSettings.toBuilder(); pingAndWarmSettings = settings.pingAndWarmSettings.toBuilder(); + executeQuerySettings = settings.executeQuerySettings().toBuilder(); featureFlags = settings.featureFlags.toBuilder(); } // @@ -1066,6 +1097,17 @@ public UnaryCallSettings.Builder pingAndWarmSettings() return pingAndWarmSettings; } + /** + * Returns the builder for the settings used for calls to ExecuteQuery + * + *

Note that this will currently ignore any retry settings other than deadlines. ExecuteQuery + * requests will not be retried currently. + */ + @BetaApi + public ServerStreamingCallSettings.Builder executeQuerySettings() { + return executeQuerySettings; + } + @SuppressWarnings("unchecked") public EnhancedBigtableStubSettings build() { Preconditions.checkState(projectId != null, "Project id must be set"); @@ -1136,6 +1178,7 @@ public String toString() { generateInitialChangeStreamPartitionsSettings) .add("readChangeStreamSettings", readChangeStreamSettings) .add("pingAndWarmSettings", pingAndWarmSettings) + .add("executeQuerySettings", executeQuerySettings) .add("metricsProvider", metricsProvider) .add("parent", super.toString()) .toString(); diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/GrpcBigtableStub.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/GrpcBigtableStub.java index 60f611e636..d5a81334b9 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/GrpcBigtableStub.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/GrpcBigtableStub.java @@ -28,6 +28,8 @@ import com.google.api.pathtemplate.PathTemplate; import com.google.bigtable.v2.CheckAndMutateRowRequest; import com.google.bigtable.v2.CheckAndMutateRowResponse; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.ExecuteQueryResponse; import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest; import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse; import com.google.bigtable.v2.MutateRowRequest; @@ -156,6 +158,16 @@ public class GrpcBigtableStub extends BigtableStub { ProtoUtils.marshaller(ReadChangeStreamResponse.getDefaultInstance())) .build(); + private static final MethodDescriptor + executeQueryMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.SERVER_STREAMING) + .setFullMethodName("google.bigtable.v2.Bigtable/ExecuteQuery") + .setRequestMarshaller(ProtoUtils.marshaller(ExecuteQueryRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ExecuteQueryResponse.getDefaultInstance())) + .build(); + private final ServerStreamingCallable readRowsCallable; private final ServerStreamingCallable sampleRowKeysCallable; @@ -172,6 +184,8 @@ public class GrpcBigtableStub extends BigtableStub { generateInitialChangeStreamPartitionsCallable; private final ServerStreamingCallable readChangeStreamCallable; + private final ServerStreamingCallable + executeQueryCallable; private final BackgroundResource backgroundResources; private final GrpcOperationsStub operationsStub; @@ -223,6 +237,10 @@ public class GrpcBigtableStub extends BigtableStub { private static final PathTemplate READ_MODIFY_WRITE_ROW_2_PATH_TEMPLATE = PathTemplate.create( "{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}"); + private static final PathTemplate EXECUTE_QUERY_0_PATH_TEMPLATE = + PathTemplate.create("{name=projects/*/instances/*}"); + private static final PathTemplate EXECUTE_QUERY_1_PATH_TEMPLATE = + PathTemplate.create("{app_profile_id=**}"); public static final GrpcBigtableStub create(BigtableStubSettings settings) throws IOException { return new GrpcBigtableStub(settings, ClientContext.create(settings)); @@ -407,6 +425,18 @@ protected GrpcBigtableStub( return builder.build(); }) .build(); + GrpcCallSettings executeQueryTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(executeQueryMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getInstanceName(), "name", EXECUTE_QUERY_0_PATH_TEMPLATE); + builder.add( + request.getAppProfileId(), "app_profile_id", EXECUTE_QUERY_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); this.readRowsCallable = callableFactory.createServerStreamingCallable( @@ -441,6 +471,9 @@ protected GrpcBigtableStub( this.readChangeStreamCallable = callableFactory.createServerStreamingCallable( readChangeStreamTransportSettings, settings.readChangeStreamSettings(), clientContext); + this.executeQueryCallable = + callableFactory.createServerStreamingCallable( + executeQueryTransportSettings, settings.executeQuerySettings(), clientContext); this.backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); @@ -502,6 +535,11 @@ public UnaryCallable pingAndWarmCallabl return readChangeStreamCallable; } + @Override + public ServerStreamingCallable executeQueryCallable() { + return executeQueryCallable; + } + @Override public final void close() { try { diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallContext.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallContext.java new file mode 100644 index 0000000000..8d0e6b81d0 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallContext.java @@ -0,0 +1,45 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.api.core.InternalApi; +import com.google.api.core.SettableApiFuture; +import com.google.auto.value.AutoValue; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; + +/** + * POJO used to provide a future to the ExecuteQuery callable chain in order to return metadata to + * users outside of the stream of rows. + * + *

This should only be constructed by {@link ExecuteQueryCallable} not directly by users. + * + *

This is considered an internal implementation detail and should not be used by applications. + */ +@InternalApi("For internal use only") +@AutoValue +public abstract class ExecuteQueryCallContext { + + @InternalApi("For internal use only") + public static ExecuteQueryCallContext create( + ExecuteQueryRequest request, SettableApiFuture metadataFuture) { + return new AutoValue_ExecuteQueryCallContext(request, metadataFuture); + } + + abstract ExecuteQueryRequest request(); + + abstract SettableApiFuture resultSetMetadataFuture(); +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallable.java new file mode 100644 index 0000000000..9563b6c6f9 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallable.java @@ -0,0 +1,66 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.api.core.InternalApi; +import com.google.api.core.SettableApiFuture; +import com.google.api.gax.rpc.ApiCallContext; +import com.google.api.gax.rpc.ResponseObserver; +import com.google.api.gax.rpc.ServerStream; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.cloud.bigtable.data.v2.internal.RequestContext; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.Statement; + +/** + * Callable that creates {@link SqlServerStream}s from {@link ExecuteQueryRequest}s. + * + *

This handles setting up the future that is used to allow users to access metadata. + * + *

This class is considered an internal implementation detail and not meant to be used by + * applications. + */ +@InternalApi +public class ExecuteQueryCallable extends ServerStreamingCallable { + + private final ServerStreamingCallable inner; + private final RequestContext requestContext; + + public ExecuteQueryCallable( + ServerStreamingCallable inner, + RequestContext requestContext) { + this.inner = inner; + this.requestContext = requestContext; + } + + public SqlServerStream call(Statement statement) { + ExecuteQueryRequest request = statement.toProto(requestContext); + SettableApiFuture metadataFuture = SettableApiFuture.create(); + ServerStream rowStream = + this.call(ExecuteQueryCallContext.create(request, metadataFuture)); + return SqlServerStreamImpl.create(metadataFuture, rowStream); + } + + @Override + public void call( + ExecuteQueryCallContext callContext, + ResponseObserver responseObserver, + ApiCallContext apiCallContext) { + inner.call(callContext, responseObserver, apiCallContext); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/MetadataResolvingCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/MetadataResolvingCallable.java new file mode 100644 index 0000000000..6b2f2b171f --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/MetadataResolvingCallable.java @@ -0,0 +1,118 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.api.core.InternalApi; +import com.google.api.core.SettableApiFuture; +import com.google.api.gax.rpc.ApiCallContext; +import com.google.api.gax.rpc.ResponseObserver; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.StreamController; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.cloud.bigtable.data.v2.internal.ProtoResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.stub.SafeResponseObserver; + +/** + * Callable that allows passing of {@link ResultSetMetadata} back to users throught the {@link + * ExecuteQueryCallContext}. + * + *

This is considered an internal implementation detail and should not be used by applications. + */ +@InternalApi("For internal use only") +public class MetadataResolvingCallable + extends ServerStreamingCallable { + private final ServerStreamingCallable inner; + + public MetadataResolvingCallable( + ServerStreamingCallable inner) { + this.inner = inner; + } + + @Override + public void call( + ExecuteQueryCallContext callContext, + ResponseObserver responseObserver, + ApiCallContext apiCallContext) { + MetadataObserver observer = + new MetadataObserver(responseObserver, callContext.resultSetMetadataFuture()); + inner.call(callContext.request(), observer, apiCallContext); + } + + static final class MetadataObserver extends SafeResponseObserver { + + private final SettableApiFuture metadataFuture; + private final ResponseObserver outerObserver; + // This doesn't need to be synchronized because this is called above the reframer + // so onResponse will be called sequentially + private boolean isFirstResponse; + + MetadataObserver( + ResponseObserver outerObserver, + SettableApiFuture metadataFuture) { + super(outerObserver); + this.outerObserver = outerObserver; + this.metadataFuture = metadataFuture; + this.isFirstResponse = true; + } + + @Override + protected void onStartImpl(StreamController streamController) { + outerObserver.onStart(streamController); + } + + @Override + protected void onResponseImpl(ExecuteQueryResponse response) { + if (isFirstResponse && !response.hasMetadata()) { + IllegalStateException e = + new IllegalStateException("First response must always contain metadata"); + metadataFuture.setException(e); + throw e; + } + isFirstResponse = false; + if (response.hasMetadata()) { + try { + ResultSetMetadata md = ProtoResultSetMetadata.fromProto(response.getMetadata()); + metadataFuture.set(md); + } catch (Throwable t) { + metadataFuture.setException(t); + throw t; + } + } + outerObserver.onResponse(response); + } + + @Override + protected void onErrorImpl(Throwable throwable) { + // When we support retries this will have to move after the retrying callable in a separate + // observer. + metadataFuture.setException(throwable); + outerObserver.onError(throwable); + } + + @Override + protected void onCompleteImpl() { + if (!metadataFuture.isDone()) { + IllegalStateException missingMetadataException = + new IllegalStateException("Unexpected Stream complete without receiving metadata"); + metadataFuture.setException(missingMetadataException); + throw missingMetadataException; + } + outerObserver.onComplete(); + } + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachine.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachine.java new file mode 100644 index 0000000000..deefda4cad --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachine.java @@ -0,0 +1,213 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.api.core.InternalApi; +import com.google.bigtable.v2.PartialResultSet; +import com.google.bigtable.v2.ProtoRows; +import com.google.bigtable.v2.Value; +import com.google.cloud.bigtable.data.v2.internal.ProtoSqlRow; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.ColumnMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.protobuf.ByteString; +import com.google.protobuf.InvalidProtocolBufferException; +import java.util.Iterator; +import java.util.List; +import java.util.Queue; + +/** + * Used to transform a stream of {@link com.google.bigtable.v2.ProtoRowsBatch} bytes chunks into + * {@link ProtoSqlRow}s for the given schema. Each SqlRow represents a logical row for a sql + * response. + * + *

The intended usage of this class is: + * + *

    + *
  • Add results with {@link #addPartialResultSet(PartialResultSet)} until {@link + * #hasCompleteBatch()} is true + *
  • Call {@link #populateQueue(Queue)} to materialize results from the complete batch. + *
  • Repeat until all {@link PartialResultSet}s have been processed + *
  • Ensure that there is no incomplete data using {@link #isBatchInProgress()} + *
+ * + *

Package-private for internal use. This class is not thread safe. + */ +@InternalApi +final class ProtoRowsMergingStateMachine { + enum State { + /** Waiting for the first chunk of bytes for a new batch */ + AWAITING_NEW_BATCH, + /** Waiting for the next chunk of bytes, to combine with the bytes currently being buffered. */ + AWAITING_PARTIAL_BATCH, + /** Buffering a complete batch of rows, waiting for populateQueue to be called for the batch */ + AWAITING_BATCH_CONSUME, + } + + private final ResultSetMetadata metadata; + private State state; + private ByteString batchBuffer; + private ProtoRows completeBatch; + + ProtoRowsMergingStateMachine(ResultSetMetadata metadata) { + this.metadata = metadata; + state = State.AWAITING_NEW_BATCH; + batchBuffer = ByteString.empty(); + } + + /** + * Adds the bytes from the given PartialResultSet to the current buffer. If a resume token is + * present, attempts to parse the bytes to the underlying protobuf row format + */ + void addPartialResultSet(PartialResultSet results) { + Preconditions.checkState( + state != State.AWAITING_BATCH_CONSUME, + "Attempting to add partial result set to state machine in state AWAITING_BATCH_CONSUME"); + // ByteString has an efficient concat which generally involves no copying + batchBuffer = batchBuffer.concat(results.getProtoRowsBatch().getBatchData()); + state = State.AWAITING_PARTIAL_BATCH; + if (results.getResumeToken().isEmpty()) { + return; + } + // A resume token means the batch is complete and safe to yield + // We can receive resume tokens with no new data. In this case we yield an empty batch. + if (batchBuffer.isEmpty()) { + completeBatch = ProtoRows.getDefaultInstance(); + } else { + try { + completeBatch = ProtoRows.parseFrom(batchBuffer); + } catch (InvalidProtocolBufferException e) { + throw new InternalError("Unexpected exception parsing response protobuf", e); + } + } + // Empty buffers can benefit from resetting because ByteString.concat builds a rope + batchBuffer = ByteString.empty(); + state = State.AWAITING_BATCH_CONSUME; + } + + /** Returns true if there is a complete batch buffered, false otherwise */ + boolean hasCompleteBatch() { + return state == State.AWAITING_BATCH_CONSUME; + } + + /** Returns true if there is a partial or complete batch buffered, false otherwise */ + boolean isBatchInProgress() { + return hasCompleteBatch() || state == State.AWAITING_PARTIAL_BATCH; + } + + /** + * Populates the given queue with the complete batch of rows + * + * @throws IllegalStateException if there is not a complete batch + */ + void populateQueue(Queue queue) { + Preconditions.checkState( + state == State.AWAITING_BATCH_CONSUME, + "Attempting to populate Queue from state machine without completed batch"); + Iterator valuesIterator = completeBatch.getValuesList().iterator(); + while (valuesIterator.hasNext()) { + ImmutableList.Builder rowDataBuilder = ImmutableList.builder(); + for (ColumnMetadata c : metadata.getColumns()) { + Preconditions.checkState( + valuesIterator.hasNext(), "Incomplete row received with first missing column: %s", c); + Value v = valuesIterator.next(); + validateValueAndType(c.type(), v); + rowDataBuilder.add(v); + } + queue.add(ProtoSqlRow.create(metadata, rowDataBuilder.build())); + } + // reset the batch to be empty + completeBatch = ProtoRows.getDefaultInstance(); + state = State.AWAITING_NEW_BATCH; + } + + @InternalApi("VisibleForTestingOnly") + static void validateValueAndType(SqlType type, Value value) { + // Null is represented as a value with none of the kind fields set + if (value.getKindCase() == Value.KindCase.KIND_NOT_SET) { + return; + } + switch (type.getCode()) { + // Primitive types + case STRING: + checkExpectedKind(value, Value.KindCase.STRING_VALUE, type); + break; + case BYTES: + checkExpectedKind(value, Value.KindCase.BYTES_VALUE, type); + break; + case INT64: + checkExpectedKind(value, Value.KindCase.INT_VALUE, type); + break; + case FLOAT64: + case FLOAT32: + checkExpectedKind(value, Value.KindCase.FLOAT_VALUE, type); + break; + case BOOL: + checkExpectedKind(value, Value.KindCase.BOOL_VALUE, type); + break; + case TIMESTAMP: + checkExpectedKind(value, Value.KindCase.TIMESTAMP_VALUE, type); + break; + case DATE: + checkExpectedKind(value, Value.KindCase.DATE_VALUE, type); + break; + // Complex types + case ARRAY: + checkExpectedKind(value, Value.KindCase.ARRAY_VALUE, type); + SqlType.Array arrayType = (SqlType.Array) type; + SqlType elemType = arrayType.getElementType(); + for (Value element : value.getArrayValue().getValuesList()) { + validateValueAndType(elemType, element); + } + break; + case STRUCT: + checkExpectedKind(value, Value.KindCase.ARRAY_VALUE, type); + List fieldValues = value.getArrayValue().getValuesList(); + SqlType.Struct structType = (SqlType.Struct) type; + for (int i = 0; i < fieldValues.size(); i++) { + validateValueAndType(structType.getType(i), fieldValues.get(i)); + } + break; + case MAP: + checkExpectedKind(value, Value.KindCase.ARRAY_VALUE, type); + SqlType.Map mapType = (SqlType.Map) type; + for (Value mapElement : value.getArrayValue().getValuesList()) { + Preconditions.checkState( + mapElement.getArrayValue().getValuesCount() == 2, + "Map elements must have exactly 2 elementss"); + validateValueAndType( + mapType.getKeyType(), mapElement.getArrayValue().getValuesList().get(0)); + validateValueAndType( + mapType.getValueType(), mapElement.getArrayValue().getValuesList().get(1)); + } + break; + default: + // This should be caught already at ResultSetMetadata creation + throw new IllegalStateException("Unrecognized type: " + type); + } + } + + private static void checkExpectedKind(Value value, Value.KindCase expectedKind, SqlType type) { + Preconditions.checkState( + value.getKindCase() == expectedKind, + "Value kind must be %s for columns of type: %s", + expectedKind.name(), + type); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMerger.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMerger.java new file mode 100644 index 0000000000..6178a1efcd --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMerger.java @@ -0,0 +1,124 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.api.core.InternalApi; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.bigtable.v2.PartialResultSet; +import com.google.cloud.bigtable.data.v2.internal.ProtoResultSetMetadata; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.gaxx.reframing.Reframer; +import com.google.common.base.Preconditions; +import java.util.ArrayDeque; +import java.util.Queue; + +/** + * Used to transform a stream of ExecuteQueryResponse objects into rows. This class is not thread + * safe. + */ +@InternalApi +public final class SqlRowMerger implements Reframer { + + enum State { + AWAITING_METADATA, + PROCESSING_DATA, + } + + private final Queue queue; + private ProtoRowsMergingStateMachine stateMachine; + private State currentState; + + public SqlRowMerger() { + queue = new ArrayDeque<>(); + currentState = State.AWAITING_METADATA; + } + + /** + * Used to add responses to the SqlRowMerger as they are received. + * + * @param response the next response in the stream of query responses + */ + // Suppress this because it won't be forced to be exhaustive once it is open-sourced, so we want a + // default. + @SuppressWarnings("UnnecessaryDefaultInEnumSwitch") + @Override + public void push(ExecuteQueryResponse response) { + switch (currentState) { + case AWAITING_METADATA: + Preconditions.checkState( + response.hasMetadata(), + "Expected metadata response, but received: %s", + response.getResponseCase().name()); + ResultSetMetadata responseMetadata = + ProtoResultSetMetadata.fromProto(response.getMetadata()); + stateMachine = new ProtoRowsMergingStateMachine(responseMetadata); + currentState = State.PROCESSING_DATA; + break; + case PROCESSING_DATA: + Preconditions.checkState( + response.hasResults(), + "Expected results response, but received: %s", + response.getResponseCase().name()); + PartialResultSet results = response.getResults(); + processProtoRows(results); + break; + default: + throw new IllegalStateException("Unknown State: " + currentState.name()); + } + } + + private void processProtoRows(PartialResultSet results) { + stateMachine.addPartialResultSet(results); + if (stateMachine.hasCompleteBatch()) { + stateMachine.populateQueue(queue); + } + } + + /** + * Check if the merger has consumable data + * + * @return true if there is a complete row, false otherwise. + */ + @Override + public boolean hasFullFrame() { + return !queue.isEmpty(); + } + + /** + * Check if the merger contains partially complete (or complete) data. + * + * @return true if there is a partial (or complete) batch, false otherwise. + */ + @Override + public boolean hasPartialFrame() { + switch (currentState) { + case AWAITING_METADATA: + return false; + case PROCESSING_DATA: + return hasFullFrame() || stateMachine.isBatchInProgress(); + default: + throw new IllegalStateException("Unknown State: " + currentState.name()); + } + } + + /** pops a completed row from the FIFO queue built from the given responses. */ + @Override + public SqlRow pop() { + return Preconditions.checkNotNull( + queue.poll(), "SqlRowMerger.pop() called when there are no complete rows."); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergingCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergingCallable.java new file mode 100644 index 0000000000..6d5d0ea4a4 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergingCallable.java @@ -0,0 +1,46 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.api.core.InternalApi; +import com.google.api.gax.rpc.ApiCallContext; +import com.google.api.gax.rpc.ResponseObserver; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.cloud.bigtable.gaxx.reframing.ReframingResponseObserver; + +@InternalApi +public class SqlRowMergingCallable + extends ServerStreamingCallable { + private final ServerStreamingCallable inner; + + public SqlRowMergingCallable( + ServerStreamingCallable inner) { + this.inner = inner; + } + + @Override + public void call( + ExecuteQueryCallContext callContext, + ResponseObserver responseObserver, + ApiCallContext apiCallContext) { + SqlRowMerger merger = new SqlRowMerger(); + ReframingResponseObserver observer = + new ReframingResponseObserver<>(responseObserver, merger); + inner.call(callContext, observer, apiCallContext); + } +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlServerStream.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlServerStream.java new file mode 100644 index 0000000000..1523e09235 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlServerStream.java @@ -0,0 +1,37 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.api.core.ApiFuture; +import com.google.api.core.InternalApi; +import com.google.api.gax.rpc.ServerStream; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; + +/** + * Wrapper for results of an ExecuteQuery call that includes both the stream of rows and a future to + * access {@link ResultSetMetadata}. + * + *

This should only be created by {@link ExecuteQueryCallable}, never directly by users/ + * + *

This is considered an internal implementation detail and should not be used by applications. + */ +@InternalApi("For internal use only") +public interface SqlServerStream { + ApiFuture metadataFuture(); + + ServerStream rows(); +} diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlServerStreamImpl.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlServerStreamImpl.java new file mode 100644 index 0000000000..caeb2e4788 --- /dev/null +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlServerStreamImpl.java @@ -0,0 +1,45 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.api.core.ApiFuture; +import com.google.api.core.InternalApi; +import com.google.api.gax.rpc.ServerStream; +import com.google.auto.value.AutoValue; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; + +/** + * Implementation of {@link SqlServerStream} using AutoValue + * + *

This is considered an internal implementation detail and should not be used by applications. + */ +@InternalApi("For internal use only") +@AutoValue +public abstract class SqlServerStreamImpl implements SqlServerStream { + + @InternalApi("Visible for testing") + public static SqlServerStreamImpl create( + ApiFuture metadataApiFuture, ServerStream rowServerStream) { + return new AutoValue_SqlServerStreamImpl(metadataApiFuture, rowServerStream); + } + + @Override + public abstract ApiFuture metadataFuture(); + + @Override + public abstract ServerStream rows(); +} diff --git a/google-cloud-bigtable/src/main/resources/META-INF/native-image/com.google.cloud.bigtable.data.v2/reflect-config.json b/google-cloud-bigtable/src/main/resources/META-INF/native-image/com.google.cloud.bigtable.data.v2/reflect-config.json index 2e7b1522bf..007c234eca 100644 --- a/google-cloud-bigtable/src/main/resources/META-INF/native-image/com.google.cloud.bigtable.data.v2/reflect-config.json +++ b/google-cloud-bigtable/src/main/resources/META-INF/native-image/com.google.cloud.bigtable.data.v2/reflect-config.json @@ -413,6 +413,24 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.bigtable.v2.ArrayValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ArrayValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.bigtable.v2.Cell", "queryAllDeclaredConstructors": true, @@ -423,7 +441,529 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Cell$Builder", + "name": "com.google.bigtable.v2.Cell$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.CheckAndMutateRowRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.CheckAndMutateRowRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.CheckAndMutateRowResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.CheckAndMutateRowResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Column", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Column$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ColumnMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ColumnMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ColumnRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ColumnRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ExecuteQueryRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ExecuteQueryRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ExecuteQueryResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ExecuteQueryResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Family", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Family$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.FeatureFlags", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.FeatureFlags$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.FullReadStatsView", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.FullReadStatsView$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowsRequest$Entry", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowsRequest$Entry$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowsResponse$Entry", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.MutateRowsResponse$Entry$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$AddToCell", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$AddToCell$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$DeleteFromColumn", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$DeleteFromColumn$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$DeleteFromFamily", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$DeleteFromFamily$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$DeleteFromRow", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$DeleteFromRow$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$SetCell", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Mutation$SetCell$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.PartialResultSet", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.PartialResultSet$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.PingAndWarmRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.PingAndWarmRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.PingAndWarmResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.PingAndWarmResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ProtoFormat", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ProtoFormat$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ProtoRows", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ProtoRows$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -432,7 +972,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.CheckAndMutateRowRequest", + "name": "com.google.bigtable.v2.ProtoRowsBatch", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -441,7 +981,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.CheckAndMutateRowRequest$Builder", + "name": "com.google.bigtable.v2.ProtoRowsBatch$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -450,7 +990,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.CheckAndMutateRowResponse", + "name": "com.google.bigtable.v2.ProtoSchema", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -459,7 +999,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.CheckAndMutateRowResponse$Builder", + "name": "com.google.bigtable.v2.ProtoSchema$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -468,7 +1008,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Column", + "name": "com.google.bigtable.v2.RateLimitInfo", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -477,7 +1017,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Column$Builder", + "name": "com.google.bigtable.v2.RateLimitInfo$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -486,7 +1026,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ColumnRange", + "name": "com.google.bigtable.v2.ReadChangeStreamRequest", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -495,7 +1035,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ColumnRange$Builder", + "name": "com.google.bigtable.v2.ReadChangeStreamRequest$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -504,7 +1044,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Family", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -513,7 +1053,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Family$Builder", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -522,7 +1062,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.FeatureFlags", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$CloseStream", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -531,7 +1071,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.FeatureFlags$Builder", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$CloseStream$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -540,7 +1080,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.FullReadStatsView", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$DataChange", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -549,7 +1089,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.FullReadStatsView$Builder", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$DataChange$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -558,7 +1098,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$DataChange$Type", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -567,7 +1107,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest$Builder", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$Heartbeat", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -576,7 +1116,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$Heartbeat$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -585,7 +1125,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse$Builder", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$MutationChunk", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -594,7 +1134,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowRequest", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$MutationChunk$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -603,7 +1143,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowRequest$Builder", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$MutationChunk$ChunkInfo", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -612,7 +1152,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowResponse", + "name": "com.google.bigtable.v2.ReadChangeStreamResponse$MutationChunk$ChunkInfo$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -621,7 +1161,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowResponse$Builder", + "name": "com.google.bigtable.v2.ReadIterationStats", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -630,7 +1170,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowsRequest", + "name": "com.google.bigtable.v2.ReadIterationStats$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -639,7 +1179,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowsRequest$Builder", + "name": "com.google.bigtable.v2.ReadModifyWriteRowRequest", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -648,7 +1188,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowsRequest$Entry", + "name": "com.google.bigtable.v2.ReadModifyWriteRowRequest$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -657,7 +1197,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowsRequest$Entry$Builder", + "name": "com.google.bigtable.v2.ReadModifyWriteRowResponse", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -666,7 +1206,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowsResponse", + "name": "com.google.bigtable.v2.ReadModifyWriteRowResponse$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -675,7 +1215,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowsResponse$Builder", + "name": "com.google.bigtable.v2.ReadModifyWriteRule", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -684,7 +1224,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowsResponse$Entry", + "name": "com.google.bigtable.v2.ReadModifyWriteRule$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -693,7 +1233,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.MutateRowsResponse$Entry$Builder", + "name": "com.google.bigtable.v2.ReadRowsRequest", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -702,7 +1242,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation", + "name": "com.google.bigtable.v2.ReadRowsRequest$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -711,7 +1251,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$AddToCell", + "name": "com.google.bigtable.v2.ReadRowsRequest$RequestStatsView", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -720,7 +1260,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$AddToCell$Builder", + "name": "com.google.bigtable.v2.ReadRowsResponse", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -729,7 +1269,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$Builder", + "name": "com.google.bigtable.v2.ReadRowsResponse$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -738,7 +1278,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$DeleteFromColumn", + "name": "com.google.bigtable.v2.ReadRowsResponse$CellChunk", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -747,7 +1287,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$DeleteFromColumn$Builder", + "name": "com.google.bigtable.v2.ReadRowsResponse$CellChunk$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -756,7 +1296,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$DeleteFromFamily", + "name": "com.google.bigtable.v2.RequestLatencyStats", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -765,7 +1305,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$DeleteFromFamily$Builder", + "name": "com.google.bigtable.v2.RequestLatencyStats$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -774,7 +1314,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$DeleteFromRow", + "name": "com.google.bigtable.v2.RequestStats", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -783,7 +1323,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$DeleteFromRow$Builder", + "name": "com.google.bigtable.v2.RequestStats$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -792,7 +1332,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$SetCell", + "name": "com.google.bigtable.v2.ResponseParams", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -801,7 +1341,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Mutation$SetCell$Builder", + "name": "com.google.bigtable.v2.ResponseParams$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -810,7 +1350,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.PingAndWarmRequest", + "name": "com.google.bigtable.v2.ResultSetMetadata", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -819,7 +1359,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.PingAndWarmRequest$Builder", + "name": "com.google.bigtable.v2.ResultSetMetadata$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -828,7 +1368,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.PingAndWarmResponse", + "name": "com.google.bigtable.v2.Row", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -837,7 +1377,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.PingAndWarmResponse$Builder", + "name": "com.google.bigtable.v2.Row$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -846,7 +1386,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RateLimitInfo", + "name": "com.google.bigtable.v2.RowFilter", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -855,7 +1395,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RateLimitInfo$Builder", + "name": "com.google.bigtable.v2.RowFilter$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -864,7 +1404,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamRequest", + "name": "com.google.bigtable.v2.RowFilter$Chain", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -873,7 +1413,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamRequest$Builder", + "name": "com.google.bigtable.v2.RowFilter$Chain$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -882,7 +1422,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse", + "name": "com.google.bigtable.v2.RowFilter$Condition", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -891,7 +1431,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$Builder", + "name": "com.google.bigtable.v2.RowFilter$Condition$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -900,7 +1440,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$CloseStream", + "name": "com.google.bigtable.v2.RowFilter$Interleave", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -909,7 +1449,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$CloseStream$Builder", + "name": "com.google.bigtable.v2.RowFilter$Interleave$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -918,7 +1458,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$DataChange", + "name": "com.google.bigtable.v2.RowRange", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -927,7 +1467,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$DataChange$Builder", + "name": "com.google.bigtable.v2.RowRange$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -936,7 +1476,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$DataChange$Type", + "name": "com.google.bigtable.v2.RowSet", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -945,7 +1485,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$Heartbeat", + "name": "com.google.bigtable.v2.RowSet$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -954,7 +1494,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$Heartbeat$Builder", + "name": "com.google.bigtable.v2.SampleRowKeysRequest", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -963,7 +1503,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$MutationChunk", + "name": "com.google.bigtable.v2.SampleRowKeysRequest$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -972,7 +1512,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$MutationChunk$Builder", + "name": "com.google.bigtable.v2.SampleRowKeysResponse", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -981,7 +1521,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$MutationChunk$ChunkInfo", + "name": "com.google.bigtable.v2.SampleRowKeysResponse$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -990,7 +1530,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadChangeStreamResponse$MutationChunk$ChunkInfo$Builder", + "name": "com.google.bigtable.v2.StreamContinuationToken", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -999,7 +1539,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadIterationStats", + "name": "com.google.bigtable.v2.StreamContinuationToken$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1008,7 +1548,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadIterationStats$Builder", + "name": "com.google.bigtable.v2.StreamContinuationTokens", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1017,7 +1557,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadModifyWriteRowRequest", + "name": "com.google.bigtable.v2.StreamContinuationTokens$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1026,7 +1566,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadModifyWriteRowRequest$Builder", + "name": "com.google.bigtable.v2.StreamPartition", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1035,7 +1575,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadModifyWriteRowResponse", + "name": "com.google.bigtable.v2.StreamPartition$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1044,7 +1584,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadModifyWriteRowResponse$Builder", + "name": "com.google.bigtable.v2.TimestampRange", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1053,7 +1593,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadModifyWriteRule", + "name": "com.google.bigtable.v2.TimestampRange$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1062,7 +1602,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadModifyWriteRule$Builder", + "name": "com.google.bigtable.v2.Type", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1071,7 +1611,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadRowsRequest", + "name": "com.google.bigtable.v2.Type$Aggregate", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1080,7 +1620,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadRowsRequest$Builder", + "name": "com.google.bigtable.v2.Type$Aggregate$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1089,7 +1629,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadRowsRequest$RequestStatsView", + "name": "com.google.bigtable.v2.Type$Aggregate$HyperLogLogPlusPlusUniqueCount", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1098,7 +1638,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadRowsResponse", + "name": "com.google.bigtable.v2.Type$Aggregate$HyperLogLogPlusPlusUniqueCount$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1107,7 +1647,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadRowsResponse$Builder", + "name": "com.google.bigtable.v2.Type$Aggregate$Max", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1116,7 +1656,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadRowsResponse$CellChunk", + "name": "com.google.bigtable.v2.Type$Aggregate$Max$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1125,7 +1665,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ReadRowsResponse$CellChunk$Builder", + "name": "com.google.bigtable.v2.Type$Aggregate$Min", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1134,7 +1674,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RequestLatencyStats", + "name": "com.google.bigtable.v2.Type$Aggregate$Min$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1143,7 +1683,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RequestLatencyStats$Builder", + "name": "com.google.bigtable.v2.Type$Aggregate$Sum", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1152,7 +1692,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RequestStats", + "name": "com.google.bigtable.v2.Type$Aggregate$Sum$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1161,7 +1701,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RequestStats$Builder", + "name": "com.google.bigtable.v2.Type$Array", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1170,7 +1710,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ResponseParams", + "name": "com.google.bigtable.v2.Type$Array$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1179,7 +1719,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.ResponseParams$Builder", + "name": "com.google.bigtable.v2.Type$Bool", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1188,7 +1728,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Row", + "name": "com.google.bigtable.v2.Type$Bool$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1197,7 +1737,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.Row$Builder", + "name": "com.google.bigtable.v2.Type$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1206,7 +1746,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowFilter", + "name": "com.google.bigtable.v2.Type$Bytes", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1215,7 +1755,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowFilter$Builder", + "name": "com.google.bigtable.v2.Type$Bytes$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1224,7 +1764,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowFilter$Chain", + "name": "com.google.bigtable.v2.Type$Bytes$Encoding", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1233,7 +1773,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowFilter$Chain$Builder", + "name": "com.google.bigtable.v2.Type$Bytes$Encoding$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1242,7 +1782,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowFilter$Condition", + "name": "com.google.bigtable.v2.Type$Bytes$Encoding$Raw", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1251,7 +1791,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowFilter$Condition$Builder", + "name": "com.google.bigtable.v2.Type$Bytes$Encoding$Raw$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1260,7 +1800,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowFilter$Interleave", + "name": "com.google.bigtable.v2.Type$Date", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1269,7 +1809,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowFilter$Interleave$Builder", + "name": "com.google.bigtable.v2.Type$Date$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1278,7 +1818,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowRange", + "name": "com.google.bigtable.v2.Type$Float32", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1287,7 +1827,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowRange$Builder", + "name": "com.google.bigtable.v2.Type$Float32$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1296,7 +1836,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowSet", + "name": "com.google.bigtable.v2.Type$Float64", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1305,7 +1845,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.RowSet$Builder", + "name": "com.google.bigtable.v2.Type$Float64$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1314,7 +1854,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.SampleRowKeysRequest", + "name": "com.google.bigtable.v2.Type$Int64", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1323,7 +1863,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.SampleRowKeysRequest$Builder", + "name": "com.google.bigtable.v2.Type$Int64$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1332,7 +1872,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.SampleRowKeysResponse", + "name": "com.google.bigtable.v2.Type$Int64$Encoding", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1341,7 +1881,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.SampleRowKeysResponse$Builder", + "name": "com.google.bigtable.v2.Type$Int64$Encoding$BigEndianBytes", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1350,7 +1890,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.StreamContinuationToken", + "name": "com.google.bigtable.v2.Type$Int64$Encoding$BigEndianBytes$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1359,7 +1899,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.StreamContinuationToken$Builder", + "name": "com.google.bigtable.v2.Type$Int64$Encoding$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1368,7 +1908,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.StreamContinuationTokens", + "name": "com.google.bigtable.v2.Type$Map", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1377,7 +1917,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.StreamContinuationTokens$Builder", + "name": "com.google.bigtable.v2.Type$Map$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1386,7 +1926,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.StreamPartition", + "name": "com.google.bigtable.v2.Type$String", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1395,7 +1935,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.StreamPartition$Builder", + "name": "com.google.bigtable.v2.Type$String$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1404,7 +1944,7 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.TimestampRange", + "name": "com.google.bigtable.v2.Type$String$Encoding", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -1413,7 +1953,79 @@ "allPublicClasses": true }, { - "name": "com.google.bigtable.v2.TimestampRange$Builder", + "name": "com.google.bigtable.v2.Type$String$Encoding$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Type$String$Encoding$Utf8Bytes", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Type$String$Encoding$Utf8Bytes$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Type$Struct", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Type$Struct$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Type$Struct$Field", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Type$Struct$Field$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Type$Timestamp", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.Type$Timestamp$Builder", "queryAllDeclaredConstructors": true, "queryAllPublicConstructors": true, "queryAllDeclaredMethods": true, @@ -2419,5 +3031,23 @@ "allPublicMethods": true, "allDeclaredClasses": true, "allPublicClasses": true + }, + { + "name": "com.google.type.Date", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.type.Date$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true } ] \ No newline at end of file diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/common/TypeTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/common/TypeTest.java new file mode 100644 index 0000000000..aba13bfa12 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/common/TypeTest.java @@ -0,0 +1,207 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.common; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structField; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampType; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.cloud.bigtable.common.Type.SchemalessStruct; +import com.google.cloud.bigtable.common.Type.StructWithSchema; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.cloud.bigtable.data.v2.models.sql.Struct; +import com.google.common.testing.EqualsTester; +import com.google.protobuf.ByteString; +import java.util.List; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class TypeTest { + + @Test + public void simpleTypes_TypeToString() { + assertThat(Type.String.create().toString()).isEqualTo("STRING"); + assertThat(Type.Bytes.create().toString()).isEqualTo("BYTES"); + assertThat(Type.Int64.create().toString()).isEqualTo("INT64"); + assertThat(Type.Float64.create().toString()).isEqualTo("FLOAT64"); + assertThat(Type.Float32.create().toString()).isEqualTo("FLOAT32"); + assertThat(Type.Bool.create().toString()).isEqualTo("BOOL"); + assertThat(Type.Timestamp.create().toString()).isEqualTo("TIMESTAMP"); + assertThat(Type.Date.create().toString()).isEqualTo("DATE"); + assertThat(Type.SchemalessStruct.create().toString()).isEqualTo("STRUCT"); + } + + @Test + public void simpleTypes_equals() { + assertThat(Type.String.create()).isEqualTo(Type.String.create()); + assertThat(Type.Bytes.create()).isEqualTo(Type.Bytes.create()); + assertThat(Type.Int64.create()).isEqualTo(Type.Int64.create()); + assertThat(Type.Float32.create()).isEqualTo(Type.Float32.create()); + assertThat(Type.Float64.create()).isEqualTo(Type.Float64.create()); + assertThat(Type.Bool.create()).isEqualTo(Type.Bool.create()); + assertThat(Type.Timestamp.create()).isEqualTo(Type.Timestamp.create()); + assertThat(Type.Date.create()).isEqualTo(Type.Date.create()); + assertThat(Type.SchemalessStruct.create()).isEqualTo(Type.SchemalessStruct.create()); + + assertThat(Type.String.create()).isNotEqualTo(Type.Bytes.create()); + assertThat(Type.Bytes.create()).isNotEqualTo(Type.String.create()); + assertThat(Type.Int64.create()).isNotEqualTo(Type.String.create()); + assertThat(Type.Float32.create()).isNotEqualTo(Type.String.create()); + assertThat(Type.Float64.create()).isNotEqualTo(Type.String.create()); + assertThat(Type.Bool.create()).isNotEqualTo(Type.String.create()); + assertThat(Type.Timestamp.create()).isNotEqualTo(Type.String.create()); + assertThat(Type.Date.create()).isNotEqualTo(Type.String.create()); + assertThat(Type.SchemalessStruct.create()).isNotEqualTo(Type.String.create()); + } + + @Test + public void array_equals() { + assertThat(Type.Array.create(Type.String.create())) + .isEqualTo(Type.Array.create(Type.String.create())); + assertThat(Type.Array.create(Type.String.create())) + .isNotEqualTo(Type.Array.create(Type.Bytes.create())); + // Nested arrays + assertThat(Type.Array.create(Type.Array.create(Type.String.create()))) + .isEqualTo(Type.Array.create(Type.Array.create(Type.String.create()))); + assertThat(Type.Array.create(Type.Array.create(Type.String.create()))) + .isNotEqualTo(Type.Array.create(Type.Array.create(Type.Bytes.create()))); + } + + @Test + public void map_equals() { + assertThat(Type.Map.create(Type.Bytes.create(), Type.String.create())) + .isEqualTo(Type.Map.create(Type.Bytes.create(), Type.String.create())); + assertThat(Type.Map.create(Type.Bytes.create(), Type.String.create())) + .isNotEqualTo(Type.Map.create(Type.String.create(), Type.String.create())); + assertThat(Type.Map.create(Type.Bytes.create(), Type.String.create())) + .isNotEqualTo(Type.Map.create(Type.Bytes.create(), Type.Bytes.create())); + // Nested Maps + assertThat( + Type.Map.create( + Type.Bytes.create(), Type.Map.create(Type.String.create(), Type.Bytes.create()))) + .isEqualTo( + Type.Map.create( + Type.Bytes.create(), Type.Map.create(Type.String.create(), Type.Bytes.create()))); + assertThat( + Type.Map.create( + Type.Bytes.create(), Type.Map.create(Type.String.create(), Type.Bytes.create()))) + .isNotEqualTo( + Type.Map.create( + Type.Bytes.create(), Type.Map.create(Type.String.create(), Type.String.create()))); + } + + @Test + public void structWithSchema_equals() { + com.google.bigtable.v2.Type structProto = + structType(structField("timestamp", timestampType()), structField("value", bytesType())); + com.google.bigtable.v2.Type complexStructProto = + structType( + structField("map", mapType(stringType(), bytesType())), + structField("array", arrayType(stringType()))); + new EqualsTester() + .addEqualityGroup( + StructWithSchema.fromProto(structProto.getStructType()), + StructWithSchema.fromProto(structProto.getStructType())) + .addEqualityGroup( + StructWithSchema.fromProto(complexStructProto.getStructType()), + StructWithSchema.fromProto(complexStructProto.getStructType())); + } + + @Test + public void structWithSchema_fields() { + StructWithSchema struct = + StructWithSchema.fromProto( + structType(structField("timestamp", timestampType()), structField("value", bytesType())) + .getStructType()); + assertThat(struct.getFields()).hasSize(2); + assertThat(struct.getFields().get(0).name()).isEqualTo("timestamp"); + assertThat(struct.getFields().get(0).type()).isEqualTo(Type.Timestamp.create()); + assertThat(struct.getType(0)).isEqualTo(Type.Timestamp.create()); + assertThat(struct.getType("timestamp")).isEqualTo(Type.Timestamp.create()); + assertThat(struct.getColumnIndex("timestamp")).isEqualTo(0); + + assertThat(struct.getFields().get(1).name()).isEqualTo("value"); + assertThat(struct.getFields().get(1).type()).isEqualTo(Type.Bytes.create()); + assertThat(struct.getType(1)).isEqualTo(Type.Bytes.create()); + assertThat(struct.getType("value")).isEqualTo(Type.Bytes.create()); + assertThat(struct.getColumnIndex("value")).isEqualTo(1); + } + + @Test + public void structWithSchema_handlesAmbiguousFields() { + StructWithSchema struct = + StructWithSchema.fromProto( + structType(structField("foo", timestampType()), structField("foo", bytesType())) + .getStructType()); + assertThat(struct.getFields()).hasSize(2); + assertThat(struct.getType(0)).isEqualTo(Type.Timestamp.create()); + assertThat(struct.getType(1)).isEqualTo(Type.Bytes.create()); + + assertThrows(IllegalArgumentException.class, () -> struct.getType("foo")); + assertThrows(IllegalArgumentException.class, () -> struct.getColumnIndex("foo")); + } + + @Test + public void structWithSchema_toString() { + StructWithSchema struct = + StructWithSchema.fromProto( + structType(structField("test", stringType()), structField("test2", int64Type())) + .getStructType()); + assertThat(struct.toString()) + .isEqualTo("STRUCT{fields=[Field{name=test, type=STRING}, Field{name=test2, type=INT64}]}"); + } + + @Test + public void schemalessStruct_throwsExceptionOnSchemaAccess() { + SchemalessStruct struct = Type.SchemalessStruct.create(); + + assertThrows(UnsupportedOperationException.class, () -> struct.getType("foo")); + assertThrows(UnsupportedOperationException.class, () -> struct.getType(0)); + assertThrows(UnsupportedOperationException.class, () -> struct.getColumnIndex("foo")); + assertThrows(UnsupportedOperationException.class, struct::getFields); + } + + @Test + public void array_toString() { + Type array = Type.Array.create(Type.String.create()); + + assertThat(array.toString()).isEqualTo("ARRAY{elementType=STRING}"); + } + + @Test + public void simpleMap_toString() { + Type map = Type.Map.create(Type.Bytes.create(), Type.String.create()); + + assertThat(map.toString()).isEqualTo("MAP{keyType=BYTES, valueType=STRING}"); + } + + @Test + public void historicalMap_toString() { + SqlType.Map> historicalMap = SqlType.historicalMap(); + + assertThat(historicalMap.toString()) + .isEqualTo("MAP{keyType=BYTES, valueType=ARRAY{elementType=STRUCT}}"); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/AbstractProtoStructReaderTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/AbstractProtoStructReaderTest.java new file mode 100644 index 0000000000..68c88f775e --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/AbstractProtoStructReaderTest.java @@ -0,0 +1,677 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.boolType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.boolValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.float32Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.float64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.floatValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Value; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapElement; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.nullValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structField; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampValue; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertTrue; + +import com.google.auto.value.AutoValue; +import com.google.bigtable.v2.ColumnMetadata; +import com.google.bigtable.v2.Type; +import com.google.bigtable.v2.Type.KindCase; +import com.google.bigtable.v2.Value; +import com.google.cloud.Date; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.cloud.bigtable.data.v2.models.sql.Struct; +import com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory; +import com.google.protobuf.ByteString; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; +import java.util.stream.Collectors; +import org.junit.Test; +import org.junit.experimental.runners.Enclosed; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.threeten.bp.Instant; + +@RunWith(Enclosed.class) +public class AbstractProtoStructReaderTest { + + // Timestamp can be in micros up to max long + private static final long MAX_TS_SECONDS = Long.MAX_VALUE / 1000 / 1000; + + @AutoValue + public abstract static class TestProtoStruct extends AbstractProtoStructReader { + public static TestProtoStruct create(ResultSetMetadata metadata, List values) { + return new AutoValue_AbstractProtoStructReaderTest_TestProtoStruct(values, metadata); + } + + abstract ResultSetMetadata metadata(); + + @Override + public int getColumnIndex(String columnName) { + return metadata().getColumnIndex(columnName); + } + + @Override + public SqlType getColumnType(int columnIndex) { + return metadata().getColumnType(columnIndex); + } + } + + // New tests should always be added to types test + // Specific tests we don't want to re-run for each type go here + @RunWith(JUnit4.class) + public static class OneOffTests { + @Test + public void simpleMapField_validatesType() { + TestProtoStruct structWithMap = + TestProtoStruct.create( + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("testField", mapType(bytesType(), stringType()))) + .getMetadata()), + Collections.singletonList( + mapValue( + mapElement(bytesValue("foo"), stringValue("bar")), + mapElement(bytesValue("key"), stringValue("val"))))); + HashMap expectedMap = new HashMap<>(); + expectedMap.put(ByteString.copyFromUtf8("foo"), "bar"); + expectedMap.put(ByteString.copyFromUtf8("key"), "val"); + + assertThat( + structWithMap.getMap("testField", SqlType.mapOf(SqlType.bytes(), SqlType.string()))) + .isEqualTo(expectedMap); + assertThat(structWithMap.getMap(0, SqlType.mapOf(SqlType.bytes(), SqlType.string()))) + .isEqualTo(expectedMap); + + assertThrows( + IllegalStateException.class, + () -> structWithMap.getMap("testField", SqlType.mapOf(SqlType.bytes(), SqlType.bytes()))); + assertThrows( + IllegalStateException.class, + () -> structWithMap.getMap("testField", SqlType.mapOf(SqlType.bytes(), SqlType.bytes()))); + assertThrows( + IllegalStateException.class, + () -> structWithMap.getMap(0, SqlType.mapOf(SqlType.bytes(), SqlType.bytes()))); + assertThrows( + IllegalStateException.class, + () -> structWithMap.getMap(0, SqlType.mapOf(SqlType.bytes(), SqlType.bytes()))); + } + + @Test + public void nestedMapField_validatesType() { + TestProtoStruct historicalMap = + TestProtoStruct.create( + ProtoResultSetMetadata.fromProto( + metadata( + columnMetadata( + "testField", + mapType( + bytesType(), + arrayType( + structType( + structField("timestamp", timestampType()), + structField("value", bytesType())))))) + .getMetadata()), + Collections.singletonList( + mapValue( + mapElement( + bytesValue("qual"), + arrayValue( + structValue(timestampValue(10000, 100), bytesValue("test1")), + structValue(timestampValue(20000, 100), bytesValue("test2"))))))); + + HashMap> expectedMap = new HashMap<>(); + expectedMap.put( + ByteString.copyFromUtf8("qual"), + Arrays.asList( + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType( + structField("timestamp", timestampType()), + structField("value", bytesType()))), + arrayValue(timestampValue(10000, 100), bytesValue("test1")).getArrayValue()), + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType( + structField("timestamp", timestampType()), + structField("value", bytesType()))), + arrayValue(timestampValue(20000, 100), bytesValue("test2")).getArrayValue()))); + + assertThat(historicalMap.getMap("testField", SqlType.historicalMap())).isEqualTo(expectedMap); + assertThat(historicalMap.getMap(0, SqlType.historicalMap())).isEqualTo(expectedMap); + + assertThrows( + IllegalStateException.class, + () -> historicalMap.getMap("testField", SqlType.mapOf(SqlType.bytes(), SqlType.bytes()))); + assertThrows( + IllegalStateException.class, + () -> + historicalMap.getMap( + "testField", SqlType.mapOf(SqlType.bytes(), SqlType.arrayOf(SqlType.string())))); + assertThrows( + IllegalStateException.class, + () -> historicalMap.getMap(0, SqlType.mapOf(SqlType.bytes(), SqlType.bytes()))); + assertThrows( + IllegalStateException.class, + () -> + historicalMap.getMap( + 0, SqlType.mapOf(SqlType.bytes(), SqlType.arrayOf(SqlType.string())))); + } + + @Test + public void arrayField_validatesType() { + TestProtoStruct structWithList = + TestProtoStruct.create( + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("testField", arrayType(stringType()))).getMetadata()), + Collections.singletonList(arrayValue(stringValue("foo"), stringValue("bar")))); + List expectedList = Arrays.asList("foo", "bar"); + + assertThat(structWithList.getList("testField", SqlType.arrayOf(SqlType.string()))) + .isEqualTo(expectedList); + assertThat(structWithList.getList(0, SqlType.arrayOf(SqlType.string()))) + .isEqualTo(expectedList); + + assertThrows( + IllegalStateException.class, + () -> structWithList.getList("testField", SqlType.arrayOf(SqlType.bytes()))); + assertThrows( + IllegalStateException.class, + () -> structWithList.getList(0, SqlType.arrayOf(SqlType.bytes()))); + } + } + + @RunWith(Parameterized.class) + public static class TypesTest { + @Parameterized.Parameters() + public static List parameters() { + return Arrays.asList( + new Object[][] { + // Bytes + { + Collections.singletonList(columnMetadata("testField", bytesType())), + Collections.singletonList(bytesValue("test")), + 0, + "testField", + (BiFunction) TestProtoStruct::getBytes, + (BiFunction) TestProtoStruct::getBytes, + ByteString.copyFromUtf8("test") + }, + // String + { + Collections.singletonList(columnMetadata("testField", stringType())), + Collections.singletonList(stringValue("test")), + 0, + "testField", + (BiFunction) TestProtoStruct::getString, + (BiFunction) TestProtoStruct::getString, + "test" + }, + // Long + { + Collections.singletonList(columnMetadata("testField", int64Type())), + Collections.singletonList(int64Value(110L)), + 0, + "testField", + (BiFunction) TestProtoStruct::getLong, + (BiFunction) TestProtoStruct::getLong, + 110L + }, + // Double + { + Collections.singletonList(columnMetadata("testField", float64Type())), + Collections.singletonList(floatValue(100.3d)), + 0, + "testField", + (BiFunction) TestProtoStruct::getDouble, + (BiFunction) TestProtoStruct::getDouble, + 100.3d + }, + // Float + { + Collections.singletonList(columnMetadata("testField", float32Type())), + Collections.singletonList(floatValue(100.3f)), + 0, + "testField", + (BiFunction) TestProtoStruct::getFloat, + (BiFunction) TestProtoStruct::getFloat, + 100.3f + }, + // Boolean + { + Collections.singletonList(columnMetadata("testField", boolType())), + Collections.singletonList(boolValue(true)), + 0, + "testField", + (BiFunction) TestProtoStruct::getBoolean, + (BiFunction) TestProtoStruct::getBoolean, + true + }, + // Timestamp + { + Collections.singletonList(columnMetadata("testField", timestampType())), + Collections.singletonList(timestampValue(1000000, 100)), + 0, + "testField", + (BiFunction) TestProtoStruct::getTimestamp, + (BiFunction) TestProtoStruct::getTimestamp, + Instant.ofEpochSecond(1000000, 100) + }, + // MAX long timestamp - bigtable allows users to set timestamp micros to any long + // so the client should parse them. In practice the server doesn't currently, + // support timestamps this large. + { + Collections.singletonList(columnMetadata("testField", timestampType())), + Collections.singletonList(timestampValue(MAX_TS_SECONDS, 0)), + 0, + "testField", + (BiFunction) TestProtoStruct::getTimestamp, + (BiFunction) TestProtoStruct::getTimestamp, + Instant.ofEpochSecond(MAX_TS_SECONDS) + }, + // Date + { + Collections.singletonList(columnMetadata("testField", dateType())), + Collections.singletonList(dateValue(2024, 6, 1)), + 0, + "testField", + (BiFunction) TestProtoStruct::getDate, + (BiFunction) TestProtoStruct::getDate, + Date.fromYearMonthDay(2024, 6, 1) + }, + // Struct + { + Collections.singletonList( + columnMetadata( + "testField", + structType( + structField("stringField", stringType()), + structField("intField", int64Type()), + structField("listField", arrayType(stringType()))))), + Collections.singletonList( + arrayValue( + stringValue("test"), + int64Value(100), + arrayValue(stringValue("nested"), stringValue("nested2")))), + 0, + "testField", + (BiFunction) TestProtoStruct::getStruct, + (BiFunction) TestProtoStruct::getStruct, + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType( + structField("stringField", stringType()), + structField("intField", int64Type()), + structField("listField", arrayType(stringType())))), + arrayValue( + stringValue("test"), + int64Value(100), + arrayValue(stringValue("nested"), stringValue("nested2"))) + .getArrayValue()) + }, + // Simple List + { + Collections.singletonList(columnMetadata("testField", arrayType(stringType()))), + Collections.singletonList( + arrayValue(stringValue("foo"), stringValue("bar"), stringValue("baz"))), + 0, + "testField", + (BiFunction>) + (row, field) -> row.getList(field, SqlType.arrayOf(SqlType.string())), + (BiFunction>) + (row, index) -> row.getList(index, SqlType.arrayOf(SqlType.string())), + Arrays.asList("foo", "bar", "baz") + }, + // List With Null Values + { + Collections.singletonList(columnMetadata("testField", arrayType(stringType()))), + Collections.singletonList( + arrayValue(stringValue("foo"), nullValue(), stringValue("baz"))), + 0, + "testField", + (BiFunction>) + (row, field) -> row.getList(field, SqlType.arrayOf(SqlType.string())), + (BiFunction>) + (row, index) -> row.getList(index, SqlType.arrayOf(SqlType.string())), + Arrays.asList("foo", null, "baz") + }, + // Simple Map + { + Collections.singletonList( + columnMetadata("testField", mapType(bytesType(), stringType()))), + Collections.singletonList( + mapValue( + mapElement(bytesValue("foo"), stringValue("bar")), + mapElement(bytesValue("key"), stringValue("val")))), + 0, + "testField", + (BiFunction>) + (row, field) -> + row.getMap(field, SqlType.mapOf(SqlType.bytes(), SqlType.string())), + (BiFunction>) + (row, index) -> + row.getMap(index, SqlType.mapOf(SqlType.bytes(), SqlType.string())), + new HashMap() { + { + put(ByteString.copyFromUtf8("foo"), "bar"); + put(ByteString.copyFromUtf8("key"), "val"); + } + } + }, + // Map With Null Keys and Values + { + Collections.singletonList( + columnMetadata("testField", mapType(bytesType(), stringType()))), + Collections.singletonList( + mapValue( + mapElement(bytesValue("foo"), nullValue()), + mapElement(nullValue(), stringValue("val")))), + 0, + "testField", + (BiFunction>) + (row, field) -> + row.getMap(field, SqlType.mapOf(SqlType.bytes(), SqlType.string())), + (BiFunction>) + (row, index) -> + row.getMap(index, SqlType.mapOf(SqlType.bytes(), SqlType.string())), + new HashMap() { + { + put(ByteString.copyFromUtf8("foo"), null); + put(null, "val"); + } + } + }, + // Map With List Values + { + Collections.singletonList( + columnMetadata("testField", mapType(bytesType(), arrayType(stringType())))), + Collections.singletonList( + mapValue( + mapElement( + bytesValue("key1"), arrayValue(stringValue("1.1"), stringValue("1.2"))), + mapElement(bytesValue("key2"), arrayValue(stringValue("2.1"))))), + 0, + "testField", + (BiFunction>>) + (row, field) -> + row.getMap( + field, SqlType.mapOf(SqlType.bytes(), SqlType.arrayOf(SqlType.string()))), + (BiFunction>>) + (row, index) -> + row.getMap( + index, SqlType.mapOf(SqlType.bytes(), SqlType.arrayOf(SqlType.string()))), + new HashMap>() { + { + put(ByteString.copyFromUtf8("key1"), Arrays.asList("1.1", "1.2")); + put(ByteString.copyFromUtf8("key2"), Collections.singletonList("2.1")); + } + } + }, + { + Collections.singletonList( + columnMetadata( + "historicalField", + mapType( + bytesType(), + arrayType( + structType( + structField("timestamp", timestampType()), + structField("value", bytesType())))))), + Collections.singletonList( + mapValue( + mapElement( + bytesValue("qual"), + arrayValue( + structValue(timestampValue(10000, 100), bytesValue("test1")), + structValue(timestampValue(20000, 100), bytesValue("test2")))))), + 0, + "historicalField", + (BiFunction>>) + (row, field) -> row.getMap(field, SqlType.historicalMap()), + (BiFunction>>) + (row, index) -> row.getMap(index, SqlType.historicalMap()), + new HashMap>() { + { + put( + ByteString.copyFromUtf8("qual"), + Arrays.asList( + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType( + structField("timestamp", timestampType()), + structField("value", bytesType()))), + arrayValue(timestampValue(10000, 100), bytesValue("test1")) + .getArrayValue()), + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType( + structField("timestamp", timestampType()), + structField("value", bytesType()))), + arrayValue(timestampValue(20000, 100), bytesValue("test2")) + .getArrayValue()))); + } + }, + } + }); + } + + @Parameter(value = 0) + public List schema; + + @Parameter(value = 1) + public List values; + + @Parameter(value = 2) + public Integer index; + + @Parameter(value = 3) + public String columnName; + + @Parameter(value = 4) + public BiFunction getByColumn; + + @Parameter(value = 5) + public BiFunction getByIndex; + + @Parameter(value = 6) + public Object expectedJavaValue; + + private TestProtoStruct getTestRow() { + return TestProtoStruct.create( + ProtoResultSetMetadata.fromProto( + metadata(schema.toArray(new ColumnMetadata[] {})).getMetadata()), + values); + } + + @Test + public void getByColumnName_convertsValues() { + assertThat(getByColumn.apply(getTestRow(), columnName)).isEqualTo(expectedJavaValue); + } + + @Test + public void getByIndex_convertsValues() { + assertThat(getByIndex.apply(getTestRow(), index)).isEqualTo(expectedJavaValue); + } + + @Test + public void getByColumnName_throwsExceptionOnNonExistentColumn() { + assertThrows( + IllegalArgumentException.class, () -> getByColumn.apply(getTestRow(), "invalid")); + } + + @Test + public void getByColumnIndex_throwsExceptionOnNonExistentColumn() { + // Assume none of the tests have 10k columns + assertThrows(IndexOutOfBoundsException.class, () -> getByIndex.apply(getTestRow(), 10000)); + } + + @Test + public void getByColumnIndex_throwsNullPointerOnNullValue() { + TestProtoStruct row = + TestProtoStruct.create( + getTestRow().metadata(), + schema.stream() + .map((ColumnMetadata t) -> SqlProtoFactory.nullValue()) + .collect(Collectors.toList())); + + assertThrows(NullPointerException.class, () -> getByIndex.apply(row, index)); + } + + @Test + public void getByColumnName_throwsNullPointerOnNullValue() { + TestProtoStruct row = + TestProtoStruct.create( + getTestRow().metadata(), + schema.stream() + .map((ColumnMetadata t) -> SqlProtoFactory.nullValue()) + .collect(Collectors.toList())); + + assertThrows(NullPointerException.class, () -> getByColumn.apply(row, columnName)); + } + + @Test + public void getByColumnIndex_throwsExceptionOnWrongType() { + // Replace the given column with a column of a different type + Type updatedType = stringType(); + Value updatedValue = stringValue("test"); + if (schema.get(index).getType().getKindCase().equals(KindCase.STRING_TYPE)) { + updatedType = int64Type(); + updatedValue = int64Value(1000); + } + List updatedSchema = new ArrayList<>(schema); + updatedSchema.set(index, columnMetadata(columnName, updatedType)); + List updatedValues = new ArrayList<>(values); + updatedValues.set(index, updatedValue); + TestProtoStruct row = + TestProtoStruct.create( + ProtoResultSetMetadata.fromProto( + metadata(updatedSchema.toArray(new ColumnMetadata[] {})).getMetadata()), + updatedValues); + + assertThrows(IllegalStateException.class, () -> getByIndex.apply(row, index)); + } + + @Test + public void getByColumnName_throwsExceptionOnWrongType() { + // Replace the given column with a column of a different type + Type updatedType = stringType(); + Value updatedValue = stringValue("test"); + if (schema.get(index).getType().getKindCase().equals(KindCase.STRING_TYPE)) { + updatedType = int64Type(); + updatedValue = int64Value(1000); + } + List updatedSchema = new ArrayList<>(schema); + updatedSchema.set(index, columnMetadata(columnName, updatedType)); + List updatedValues = new ArrayList<>(values); + updatedValues.set(index, updatedValue); + TestProtoStruct row = + TestProtoStruct.create( + ProtoResultSetMetadata.fromProto( + metadata(updatedSchema.toArray(new ColumnMetadata[] {})).getMetadata()), + updatedValues); + + assertThrows(IllegalStateException.class, () -> getByColumn.apply(row, columnName)); + } + + @Test + public void isNull_worksForNullValues() { + TestProtoStruct row = + TestProtoStruct.create( + getTestRow().metadata(), + schema.stream() + .map((ColumnMetadata t) -> SqlProtoFactory.nullValue()) + .collect(Collectors.toList())); + + assertTrue(row.isNull(columnName)); + assertTrue(row.isNull(index)); + } + + @Test + public void isNull_worksForNonNullValues() { + assertFalse(getTestRow().isNull(columnName)); + assertFalse(getTestRow().isNull(index)); + } + + @Test + public void getColumnTypeByName() { + assertThat(SqlType.fromProto(schema.get(index).getType())) + .isEqualTo(getTestRow().getColumnType(columnName)); + } + + // consider moving it to non-parameterized test + @Test + public void getByColumnName_throwsExceptionForDuplicateColumnName() { + // Add all fields to the schema twice + List duplicatedSchema = new ArrayList<>(schema); + duplicatedSchema.addAll(schema); + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(duplicatedSchema.toArray(new ColumnMetadata[] {})).getMetadata()); + List duplicatedValues = new ArrayList<>(values); + duplicatedValues.addAll(values); + TestProtoStruct row = TestProtoStruct.create(metadata, duplicatedValues); + + assertThrows(IllegalArgumentException.class, () -> getByColumn.apply(row, columnName)); + } + + @Test + public void getByIndex_worksWithDuplicateColumnName() { + // Add all fields to the schema twice + List duplicatedSchema = new ArrayList<>(schema); + duplicatedSchema.addAll(schema); + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(duplicatedSchema.toArray(new ColumnMetadata[] {})).getMetadata()); + List duplicatedValues = new ArrayList<>(values); + duplicatedValues.addAll(values); + TestProtoStruct row = TestProtoStruct.create(metadata, duplicatedValues); + + assertThat(expectedJavaValue).isEqualTo(getByIndex.apply(row, index)); + } + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ProtoResultSetMetadataTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ProtoResultSetMetadataTest.java new file mode 100644 index 0000000000..067b3bb4ac --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ProtoResultSetMetadataTest.java @@ -0,0 +1,210 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.bigtable.v2.ProtoSchema; +import com.google.bigtable.v2.Type; +import com.google.cloud.bigtable.data.v2.models.sql.ColumnMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import java.util.Arrays; +import java.util.List; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class ProtoResultSetMetadataTest { + + @Test + public void getColumnIndex_returnsCorrectIndex() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("0", SqlType.string()), + ColumnMetadataImpl.create("1", SqlType.int64()), + ColumnMetadataImpl.create("2", SqlType.int64()), + ColumnMetadataImpl.create("3", SqlType.int64()), + ColumnMetadataImpl.create("4", SqlType.int64()))); + + assertThat(metadata.getColumnIndex("0")).isEqualTo(0); + assertThat(metadata.getColumnIndex("1")).isEqualTo(1); + assertThat(metadata.getColumnIndex("2")).isEqualTo(2); + assertThat(metadata.getColumnIndex("3")).isEqualTo(3); + assertThat(metadata.getColumnIndex("4")).isEqualTo(4); + } + + @Test + public void getColumnType_worksByName() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("col0", SqlType.string()), + ColumnMetadataImpl.create("col1", SqlType.int64()), + ColumnMetadataImpl.create("col2", SqlType.timestamp()), + ColumnMetadataImpl.create("col3", SqlType.date()), + ColumnMetadataImpl.create("col4", SqlType.int64()))); + + assertThat(metadata.getColumnType("col0")).isEqualTo(SqlType.string()); + assertThat(metadata.getColumnType("col1")).isEqualTo(SqlType.int64()); + assertThat(metadata.getColumnType("col2")).isEqualTo(SqlType.timestamp()); + assertThat(metadata.getColumnType("col3")).isEqualTo(SqlType.date()); + assertThat(metadata.getColumnType("col4")).isEqualTo(SqlType.int64()); + } + + @Test + public void getColumnType_worksByIndex() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("col0", SqlType.string()), + ColumnMetadataImpl.create("col1", SqlType.int64()), + ColumnMetadataImpl.create("col2", SqlType.timestamp()), + ColumnMetadataImpl.create("col3", SqlType.date()), + ColumnMetadataImpl.create("col4", SqlType.int64()))); + + assertThat(metadata.getColumnType(0)).isEqualTo(SqlType.string()); + assertThat(metadata.getColumnType(1)).isEqualTo(SqlType.int64()); + assertThat(metadata.getColumnType(2)).isEqualTo(SqlType.timestamp()); + assertThat(metadata.getColumnType(3)).isEqualTo(SqlType.date()); + assertThat(metadata.getColumnType(4)).isEqualTo(SqlType.int64()); + } + + @Test + public void getColumns_returnsColumnsUnchanged() { + List columns = + Arrays.asList( + ColumnMetadataImpl.create("col0", SqlType.string()), + ColumnMetadataImpl.create("col1", SqlType.int64()), + ColumnMetadataImpl.create("col2", SqlType.timestamp()), + ColumnMetadataImpl.create("col3", SqlType.date()), + ColumnMetadataImpl.create("col4", SqlType.int64())); + ResultSetMetadata metadata = ProtoResultSetMetadata.create(columns); + + assertThat(metadata.getColumns()).isEqualTo(columns); + } + + @Test + public void getColumnTypeByNonExistentName_throwsException() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("a", SqlType.string()), + ColumnMetadataImpl.create("b", SqlType.int64()))); + + assertThrows(IllegalArgumentException.class, () -> metadata.getColumnType("c")); + } + + @Test + public void getColumnTypeByNonExistentIndex_throwsException() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("a", SqlType.string()), + ColumnMetadataImpl.create("b", SqlType.int64()))); + + assertThrows(IndexOutOfBoundsException.class, () -> metadata.getColumnType(2)); + } + + @Test + public void getColumnIndexForNonExistentName_throwsException() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("a", SqlType.string()), + ColumnMetadataImpl.create("b", SqlType.int64()))); + + assertThrows(IllegalArgumentException.class, () -> metadata.getColumnIndex("c")); + } + + @Test + public void getColumnType_throwsExceptionForDuplicateName() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("test", SqlType.string()), + ColumnMetadataImpl.create("test", SqlType.int64()))); + + assertThrows(IllegalArgumentException.class, () -> metadata.getColumnType("test")); + } + + @Test + public void getColumnType_allowsGetByIndexWithDuplicateType() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("test", SqlType.string()), + ColumnMetadataImpl.create("test", SqlType.int64()))); + + assertThat(metadata.getColumnType(0)).isEqualTo(SqlType.string()); + assertThat(metadata.getColumnType(1)).isEqualTo(SqlType.int64()); + } + + @Test + public void getColumnIndex_throwsExceptionForDuplicateName() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.create( + Arrays.asList( + ColumnMetadataImpl.create("test", SqlType.string()), + ColumnMetadataImpl.create("test", SqlType.int64()))); + + assertThrows(IllegalArgumentException.class, () -> metadata.getColumnIndex("test")); + } + + @Test + public void fromProto_throwsExceptionWithEmptySchema() { + com.google.bigtable.v2.ResultSetMetadata invalidProto = + com.google.bigtable.v2.ResultSetMetadata.newBuilder().build(); + assertThrows(IllegalStateException.class, () -> ProtoResultSetMetadata.fromProto(invalidProto)); + } + + @Test + public void fromProto_withEmptyTypeInSchema_throwsException() { + com.google.bigtable.v2.ResultSetMetadata invalidProto = + com.google.bigtable.v2.ResultSetMetadata.newBuilder() + .setProtoSchema( + ProtoSchema.newBuilder() + .addColumns( + com.google.bigtable.v2.ColumnMetadata.newBuilder() + .setName("test") + .setType(Type.newBuilder().build()))) + .build(); + assertThrows(IllegalStateException.class, () -> ProtoResultSetMetadata.fromProto(invalidProto)); + } + + @Test + public void fromProto_allowsColumnWithNoName() { + com.google.bigtable.v2.ResultSetMetadata proto = + com.google.bigtable.v2.ResultSetMetadata.newBuilder() + .setProtoSchema( + ProtoSchema.newBuilder() + .addColumns( + com.google.bigtable.v2.ColumnMetadata.newBuilder() + .setType(stringType()) + .build())) + .build(); + ResultSetMetadata metadata = ProtoResultSetMetadata.fromProto(proto); + assertThat(metadata.getColumns().size()).isEqualTo(1); + assertThat(metadata.getColumns().get(0).type()).isEqualTo(SqlType.string()); + assertThat(metadata.getColumns().get(0).name()).isEqualTo(""); + assertThat(metadata.getColumnIndex("")).isEqualTo(0); + assertThat(metadata.getColumnType("")).isEqualTo(SqlType.string()); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ProtoStructTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ProtoStructTest.java new file mode 100644 index 0000000000..6fa71e7fff --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ProtoStructTest.java @@ -0,0 +1,298 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.boolType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.boolValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.float32Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.float64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.floatValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Value; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapElement; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structField; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampValue; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.bigtable.v2.ArrayValue; +import com.google.bigtable.v2.Type; +import com.google.bigtable.v2.Type.Struct; +import com.google.bigtable.v2.Value; +import com.google.cloud.Date; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.protobuf.ByteString; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.threeten.bp.Instant; + +@RunWith(JUnit4.class) +public class ProtoStructTest { + + static ProtoStruct struct = + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType( + structField("bytesField", bytesType()), + structField("stringField", stringType()), + structField("longField", int64Type()), + structField("doubleField", float64Type()), + structField("floatField", float32Type()), + structField("booleanField", boolType()), + structField("timestampField", timestampType()), + structField("dateField", dateType()), + structField( + "structField", structType(structField("stringField", stringType()))), + structField("listField", arrayType(stringType())), + structField("mapField", mapType(stringType(), stringType())))), + arrayValue( + bytesValue("testBytes"), + stringValue("testString"), + int64Value(123), + floatValue(1.23), + floatValue(1.23), + boolValue(true), + timestampValue(100000, 100), + dateValue(2024, 6, 1), + structValue(stringValue("string")), + arrayValue(stringValue("foo"), stringValue("bar")), + arrayValue( + mapElement(stringValue("foo"), stringValue("bar")), + mapElement(stringValue("key"), stringValue("val")))) + .getArrayValue()); + + // These are more extensively tested in AbstractProtoStructReaderTest since that is what + // implements the logic + @Test + public void getByIndex_supportsAllTypes() { + assertThat(struct.getBytes(0)).isEqualTo(ByteString.copyFromUtf8("testBytes")); + assertThat(struct.getString(1)).isEqualTo("testString"); + assertThat(struct.getLong(2)).isEqualTo(123); + assertThat(struct.getDouble(3)).isEqualTo(1.23d); + assertThat(struct.getFloat(4)).isEqualTo(1.23f); + assertThat(struct.getBoolean(5)).isTrue(); + assertThat(struct.getTimestamp(6)).isEqualTo(Instant.ofEpochSecond(100000, 100)); + assertThat(struct.getDate(7)).isEqualTo(Date.fromYearMonthDay(2024, 6, 1)); + assertThat(struct.getStruct(8)) + .isEqualTo( + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto(structType(structField("stringField", stringType()))), + structValue(stringValue("string")).getArrayValue())); + assertThat(struct.getList(9, SqlType.arrayOf(SqlType.string()))) + .isEqualTo(Arrays.asList("foo", "bar")); + assertThat(struct.getMap(10, SqlType.mapOf(SqlType.string(), SqlType.string()))) + .isEqualTo( + new HashMap() { + { + put("foo", "bar"); + put("key", "val"); + } + }); + } + + @Test + public void getByNameSupportsAllTypes() { + assertThat(struct.getBytes("bytesField")).isEqualTo(ByteString.copyFromUtf8("testBytes")); + assertThat(struct.getString("stringField")).isEqualTo("testString"); + assertThat(struct.getLong("longField")).isEqualTo(123); + assertThat(struct.getDouble("doubleField")).isEqualTo(1.23d); + assertThat(struct.getFloat("floatField")).isEqualTo(1.23f); + assertThat(struct.getBoolean("booleanField")).isTrue(); + assertThat(struct.getTimestamp("timestampField")).isEqualTo(Instant.ofEpochSecond(100000, 100)); + assertThat(struct.getDate("dateField")).isEqualTo(Date.fromYearMonthDay(2024, 6, 1)); + assertThat(struct.getStruct("structField")) + .isEqualTo( + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto(structType(structField("stringField", stringType()))), + structValue(stringValue("string")).getArrayValue())); + assertThat(struct.getList("listField", SqlType.arrayOf(SqlType.string()))) + .isEqualTo(Arrays.asList("foo", "bar")); + assertThat(struct.getMap("mapField", SqlType.mapOf(SqlType.string(), SqlType.string()))) + .isEqualTo( + new HashMap() { + { + put("foo", "bar"); + put("key", "val"); + } + }); + } + + @Test + public void getColumnType_byName() { + assertThat(struct.getColumnType("bytesField")).isEqualTo(SqlType.bytes()); + assertThat(struct.getColumnType("stringField")).isEqualTo(SqlType.string()); + assertThat(struct.getColumnType("longField")).isEqualTo(SqlType.int64()); + assertThat(struct.getColumnType("doubleField")).isEqualTo(SqlType.float64()); + assertThat(struct.getColumnType("floatField")).isEqualTo(SqlType.float32()); + assertThat(struct.getColumnType("booleanField")).isEqualTo(SqlType.bool()); + assertThat(struct.getColumnType("timestampField")).isEqualTo(SqlType.timestamp()); + assertThat(struct.getColumnType("dateField")).isEqualTo(SqlType.date()); + assertThat(struct.getColumnType("structField")) + .isEqualTo(SqlType.fromProto(structType(structField("stringField", stringType())))); + assertThat(struct.getColumnType("listField")).isEqualTo(SqlType.arrayOf(SqlType.string())); + assertThat(struct.getColumnType("mapField")) + .isEqualTo(SqlType.mapOf(SqlType.string(), SqlType.string())); + } + + @Test + public void getColumnType_byIndex() { + assertThat(struct.getColumnType(0)).isEqualTo(SqlType.bytes()); + assertThat(struct.getColumnType(1)).isEqualTo(SqlType.string()); + assertThat(struct.getColumnType(2)).isEqualTo(SqlType.int64()); + assertThat(struct.getColumnType(3)).isEqualTo(SqlType.float64()); + assertThat(struct.getColumnType(4)).isEqualTo(SqlType.float32()); + assertThat(struct.getColumnType(5)).isEqualTo(SqlType.bool()); + assertThat(struct.getColumnType(6)).isEqualTo(SqlType.timestamp()); + assertThat(struct.getColumnType(7)).isEqualTo(SqlType.date()); + assertThat(struct.getColumnType(8)) + .isEqualTo(SqlType.fromProto(structType(structField("stringField", stringType())))); + assertThat(struct.getColumnType(9)).isEqualTo(SqlType.arrayOf(SqlType.string())); + assertThat(struct.getColumnType(10)) + .isEqualTo(SqlType.mapOf(SqlType.string(), SqlType.string())); + } + + @Test + public void getColumnIndex_worksForExistingColumns() { + assertThat(struct.getColumnIndex("bytesField")).isEqualTo(0); + assertThat(struct.getColumnIndex("stringField")).isEqualTo(1); + assertThat(struct.getColumnIndex("longField")).isEqualTo(2); + assertThat(struct.getColumnIndex("doubleField")).isEqualTo(3); + assertThat(struct.getColumnIndex("floatField")).isEqualTo(4); + assertThat(struct.getColumnIndex("booleanField")).isEqualTo(5); + assertThat(struct.getColumnIndex("timestampField")).isEqualTo(6); + assertThat(struct.getColumnIndex("dateField")).isEqualTo(7); + assertThat(struct.getColumnIndex("structField")).isEqualTo(8); + assertThat(struct.getColumnIndex("listField")).isEqualTo(9); + assertThat(struct.getColumnIndex("mapField")).isEqualTo(10); + } + + @Test + public void getColumnIndex_throwsExceptionForNonExistentIndex() { + assertThrows(IllegalArgumentException.class, () -> struct.getColumnIndex("nonexistent")); + } + + @Test + public void values_populatedFromFieldValues() { + List values = Arrays.asList(stringValue("foo"), stringValue("bar")); + ProtoStruct s = + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType( + structField("stringField1", stringType()), + structField("stringField2", stringType()))), + arrayValue(values.toArray(new Value[] {})).getArrayValue()); + + assertThat(s.values()).isEqualTo(values); + } + + @Test + public void getByColumnIndex_supportsUnnamedColumn() { + ProtoStruct s = + ProtoStruct.create( + // This creates a struct with two unnamed string fields + (SqlType.Struct) SqlType.fromProto(structType(stringType(), stringType())), + arrayValue(stringValue("foo"), stringValue("bar")).getArrayValue()); + + assertThat(s.getString(0)).isEqualTo("foo"); + assertThat(s.getString(1)).isEqualTo("bar"); + } + + @Test + public void getByColumnName_supportsUnnamedColumn() { + ProtoStruct s = + ProtoStruct.create( + // This creates a struct with one unnamed string fields + (SqlType.Struct) SqlType.fromProto(structType(stringType())), + arrayValue(stringValue("foo")).getArrayValue()); + + assertThat(s.getString("")).isEqualTo("foo"); + } + + @Test + public void emptyStruct_behavesCorrectly() { + ProtoStruct empty = + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + Type.newBuilder().setStructType(Struct.newBuilder().build()).build()), + ArrayValue.newBuilder().build()); + + assertThrows(IndexOutOfBoundsException.class, () -> empty.getString(0)); + assertThrows(IllegalArgumentException.class, () -> empty.getString("")); + assertThrows(IndexOutOfBoundsException.class, () -> empty.getColumnType(0)); + assertThrows(IllegalArgumentException.class, () -> empty.getColumnType("")); + } + + @Test + public void getColumnIndexOnDuplicateField_throwsException() { + List values = Arrays.asList(stringValue("foo"), stringValue("bar")); + ProtoStruct s = + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType(structField("dup", stringType()), structField("dup", stringType()))), + arrayValue(values.toArray(new Value[] {})).getArrayValue()); + + assertThrows(IllegalArgumentException.class, () -> s.getColumnIndex("dup")); + } + + @Test + public void getByFieldNameOnDuplicateField_throwsException() { + List values = Arrays.asList(stringValue("foo"), stringValue("bar")); + ProtoStruct s = + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType(structField("dup", stringType()), structField("dup", stringType()))), + arrayValue(values.toArray(new Value[] {})).getArrayValue()); + + assertThrows(IllegalArgumentException.class, () -> s.getString("dup")); + } + + @Test + public void getByIndex_worksWithDuplicateFieldNames() { + List values = Arrays.asList(stringValue("foo"), stringValue("bar")); + ProtoStruct s = + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto( + structType(structField("dup", stringType()), structField("dup", stringType()))), + arrayValue(values.toArray(new Value[] {})).getArrayValue()); + + assertThat(s.getString(0)).isEqualTo("foo"); + assertThat(s.getString(1)).isEqualTo("bar"); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ResultSetImplTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ResultSetImplTest.java new file mode 100644 index 0000000000..a5b823b205 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/ResultSetImplTest.java @@ -0,0 +1,346 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.boolType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.boolValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.float32Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.float64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.floatValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Value; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapElement; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structField; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampValue; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.api.core.SettableApiFuture; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.cloud.Date; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSet; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.cloud.bigtable.data.v2.stub.sql.ExecuteQueryCallContext; +import com.google.cloud.bigtable.data.v2.stub.sql.SqlServerStream; +import com.google.cloud.bigtable.data.v2.stub.sql.SqlServerStreamImpl; +import com.google.cloud.bigtable.gaxx.testing.FakeStreamingApi.ServerStreamingStashCallable; +import com.google.protobuf.ByteString; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.threeten.bp.Instant; + +@RunWith(JUnit4.class) +public class ResultSetImplTest { + + private static ResultSet resultSetWithFakeStream(ResultSetMetadata metadata, SqlRow... rows) { + ServerStreamingStashCallable stream = + new ServerStreamingStashCallable<>(Arrays.asList(rows)); + SettableApiFuture future = SettableApiFuture.create(); + future.set(metadata); + ExecuteQueryCallContext fakeCallContext = + ExecuteQueryCallContext.create(ExecuteQueryRequest.newBuilder().build(), future); + return ResultSetImpl.create(SqlServerStreamImpl.create(future, stream.call(fakeCallContext))); + } + + @Test + public void testSingleRow() throws ExecutionException, InterruptedException { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata( + columnMetadata("string", stringType()), + columnMetadata("bytes", bytesType()), + columnMetadata("long", int64Type()), + columnMetadata("double", float64Type()), + columnMetadata("float", float32Type()), + columnMetadata("boolean", boolType()), + columnMetadata("timestamp", timestampType()), + columnMetadata("date", dateType()), + columnMetadata("struct", structType(structField("string", stringType()))), + columnMetadata("list", arrayType(stringType())), + columnMetadata("map", mapType(stringType(), stringType()))) + .getMetadata()); + ResultSet resultSet = + resultSetWithFakeStream( + metadata, + ProtoSqlRow.create( + metadata, + Arrays.asList( + stringValue("test"), + bytesValue("bytes"), + int64Value(100), + floatValue(1.23), + floatValue(1.23), + boolValue(true), + timestampValue(10000000, 100), + dateValue(2024, 6, 5), + structValue(stringValue("foo")), + arrayValue(stringValue("foo"), stringValue("bar")), + mapValue(mapElement(stringValue("key"), stringValue("val")))))); + int rows = 0; + while (resultSet.next()) { + rows++; + assertThat(resultSet.getString(0)).isEqualTo("test"); + assertThat(resultSet.getString("string")).isEqualTo("test"); + assertThat(resultSet.getBytes(1)).isEqualTo(ByteString.copyFromUtf8("bytes")); + assertThat(resultSet.getBytes("bytes")).isEqualTo(ByteString.copyFromUtf8("bytes")); + assertThat(resultSet.getLong(2)).isEqualTo(100); + assertThat(resultSet.getLong("long")).isEqualTo(100); + assertThat(resultSet.getDouble(3)).isEqualTo(1.23d); + assertThat(resultSet.getDouble("double")).isEqualTo(1.23d); + assertThat(resultSet.getFloat(4)).isEqualTo(1.23f); + assertThat(resultSet.getFloat("float")).isEqualTo(1.23f); + assertThat(resultSet.getBoolean(5)).isTrue(); + assertThat(resultSet.getBoolean("boolean")).isTrue(); + assertThat(resultSet.getTimestamp(6)).isEqualTo(Instant.ofEpochSecond(10000000, 100)); + assertThat(resultSet.getTimestamp("timestamp")) + .isEqualTo(Instant.ofEpochSecond(10000000, 100)); + assertThat(resultSet.getDate(7)).isEqualTo(Date.fromYearMonthDay(2024, 6, 5)); + assertThat(resultSet.getDate("date")).isEqualTo(Date.fromYearMonthDay(2024, 6, 5)); + assertThat(resultSet.getStruct(8)) + .isEqualTo( + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto(structType(structField("string", stringType()))), + structValue(stringValue("foo")).getArrayValue())); + assertThat(resultSet.getStruct("struct")) + .isEqualTo( + ProtoStruct.create( + (SqlType.Struct) + SqlType.fromProto(structType(structField("string", stringType()))), + structValue(stringValue("foo")).getArrayValue())); + assertThat(resultSet.getList(9, SqlType.arrayOf(SqlType.string()))) + .isEqualTo(Arrays.asList("foo", "bar")); + assertThat(resultSet.getList("list", SqlType.arrayOf(SqlType.string()))) + .isEqualTo(Arrays.asList("foo", "bar")); + assertThat(resultSet.getMap(10, SqlType.mapOf(SqlType.string(), SqlType.string()))) + .isEqualTo( + new HashMap() { + { + put("key", "val"); + } + }); + assertThat(resultSet.getMap("map", SqlType.mapOf(SqlType.string(), SqlType.string()))) + .isEqualTo( + new HashMap() { + { + put("key", "val"); + } + }); + } + assertThat(rows).isEqualTo(1); + assertThat(resultSet.next()).isFalse(); + assertThat(resultSet.getMetadata()).isEqualTo(metadata); + resultSet.close(); + } + + @Test + public void testIteration() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("string", stringType())).getMetadata()); + try (ResultSet resultSet = + resultSetWithFakeStream( + metadata, + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("foo"))), + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("bar"))), + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("baz"))), + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("a"))), + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("b"))))) { + + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.getString(0)).isEqualTo("foo"); + assertThat(resultSet.next()).isTrue(); + // skip a row + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.getString(0)).isEqualTo("baz"); + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.getString(0)).isEqualTo("a"); + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.getString(0)).isEqualTo("b"); + assertThat(resultSet.next()).isFalse(); + } + } + + @Test + public void testEmptyResultSet() throws ExecutionException, InterruptedException { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("string", stringType())).getMetadata()); + try (ResultSet resultSet = resultSetWithFakeStream(metadata)) { + assertThat(resultSet.next()).isFalse(); + assertThat(resultSet.getMetadata()).isEqualTo(metadata); + } + } + + @Test + public void getCallsPrevented_afterNextReturnsFalse() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("string", stringType())).getMetadata()); + + ResultSet resultSet = + resultSetWithFakeStream( + metadata, + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("foo"))), + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("bar")))); + + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.getString(0)).isEqualTo("foo"); + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.getString(0)).isEqualTo("bar"); + assertThat(resultSet.next()).isFalse(); + // Users can still call next + assertThat(resultSet.next()).isFalse(); + // Attempts to access data will throw an exception + assertThrows(IllegalStateException.class, () -> resultSet.getString(0)); + resultSet.close(); + } + + @Test + public void close_preventsGetCalls() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("string", stringType())).getMetadata()); + ResultSet resultSet = + resultSetWithFakeStream( + metadata, ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("foo")))); + + assertThat(resultSet.next()).isTrue(); + resultSet.close(); + assertThrows(IllegalStateException.class, () -> resultSet.getString(0)); + } + + @Test + public void close_cancelsStreamWhenResultsNotConsumed() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("string", stringType())).getMetadata()); + ServerStreamingStashCallable stream = + new ServerStreamingStashCallable<>( + Collections.singletonList( + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("foo"))))); + SqlServerStream sqlServerStream = + SqlServerStreamImpl.create( + SettableApiFuture.create(), stream.call(ExecuteQueryRequest.newBuilder().build())); + ResultSet resultSet = ResultSetImpl.create(sqlServerStream); + resultSet.close(); + + Throwable lastCallError = stream.popLastCall().getError(); + assertThat(lastCallError).isInstanceOf(CancellationException.class); + } + + @Test + public void close_doesNotCancelStreamWhenResultsConsumed() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("string", stringType())).getMetadata()); + ServerStreamingStashCallable stream = + new ServerStreamingStashCallable<>( + Collections.singletonList( + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("foo"))))); + SqlServerStream sqlServerStream = + SqlServerStreamImpl.create( + SettableApiFuture.create(), stream.call(ExecuteQueryRequest.newBuilder().build())); + ResultSet resultSet = ResultSetImpl.create(sqlServerStream); + + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.next()).isFalse(); + resultSet.close(); + Throwable lastCallError = stream.popLastCall().getError(); + assertThat(lastCallError).isNull(); + } + + @Test + public void getBeforeNext_throwsException() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("string", stringType())).getMetadata()); + try (ResultSet resultSet = + resultSetWithFakeStream( + metadata, + ProtoSqlRow.create(metadata, Collections.singletonList(stringValue("foo"))))) { + assertThrows(IllegalStateException.class, () -> resultSet.getString(0)); + } + } + + @Test + public void getOnColumnWithDuplicateName_throwsException() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("name", stringType()), columnMetadata("name", stringType())) + .getMetadata()); + try (ResultSet resultSet = + resultSetWithFakeStream( + metadata, + ProtoSqlRow.create(metadata, Arrays.asList(stringValue("foo"), stringValue("bar"))))) { + + assertThat(resultSet.next()).isTrue(); + assertThrows(IllegalArgumentException.class, () -> resultSet.getString("name")); + } + } + + @Test + public void getMetadata_unwrapsExecutionExceptions() { + SettableApiFuture metadataFuture = SettableApiFuture.create(); + ServerStreamingStashCallable stream = + new ServerStreamingStashCallable<>(Collections.emptyList()); + ExecuteQueryCallContext fakeCallContext = + ExecuteQueryCallContext.create(ExecuteQueryRequest.newBuilder().build(), metadataFuture); + ResultSet rs = + ResultSetImpl.create( + SqlServerStreamImpl.create(metadataFuture, stream.call(fakeCallContext))); + + metadataFuture.setException(new IllegalStateException("test")); + assertThrows(IllegalStateException.class, rs::getMetadata); + } + + @Test + public void getMetadata_returnsNonRuntimeExecutionExceptionsWrapped() { + SettableApiFuture metadataFuture = SettableApiFuture.create(); + ServerStreamingStashCallable stream = + new ServerStreamingStashCallable<>(Collections.emptyList()); + ExecuteQueryCallContext fakeCallContext = + ExecuteQueryCallContext.create(ExecuteQueryRequest.newBuilder().build(), metadataFuture); + ResultSet rs = + ResultSetImpl.create( + SqlServerStreamImpl.create(metadataFuture, stream.call(fakeCallContext))); + + metadataFuture.setException(new Throwable("test")); + assertThrows(RuntimeException.class, rs::getMetadata); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/SqlRowMergerUtilTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/SqlRowMergerUtilTest.java new file mode 100644 index 0000000000..6ed96ec517 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/SqlRowMergerUtilTest.java @@ -0,0 +1,228 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapElement; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithoutToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.bigtable.v2.ColumnMetadata; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.common.collect.ImmutableList; +import java.util.ArrayList; +import java.util.List; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class SqlRowMergerUtilTest { + + @Test + public void close_succeedsWhenEmpty() { + try (SqlRowMergerUtil util = new SqlRowMergerUtil()) {} + + try (SqlRowMergerUtil util = new SqlRowMergerUtil()) { + // Metadata with no rows + List unused = + util.parseExecuteQueryResponses( + ImmutableList.of(metadata(columnMetadata("a", stringType())))); + } + } + + @Test + public void parseExecuteQueryResponses_failsWithoutMetadata_serializedProtoRows() { + try (SqlRowMergerUtil util = new SqlRowMergerUtil()) { + // users must pass metadata, as it should always be returned by the server. + assertThrows( + IllegalStateException.class, + () -> + util.parseExecuteQueryResponses( + ImmutableList.of(partialResultSetWithToken(stringValue("val"))))); + } + } + + @Test + public void parseExecuteQueryResponses_handlesSingleValue_serializedProtoRows() { + ExecuteQueryResponse metadata = metadata(columnMetadata("str", stringType())); + ImmutableList responses = + ImmutableList.of(metadata, partialResultSetWithToken(stringValue("val"))); + try (SqlRowMergerUtil util = new SqlRowMergerUtil()) { + List rows = util.parseExecuteQueryResponses(responses); + assertThat(rows) + .containsExactly( + ProtoSqlRow.create( + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("str", stringType())).getMetadata()), + ImmutableList.of(stringValue("val")))); + ; + } + } + + @Test + public void + parseExecuteQueryResponses_handlesMultipleValuesAccrossMultipleRows_serializedProtoRows() { + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), + columnMetadata("bytes", bytesType()), + columnMetadata("strArr", arrayType(stringType())), + columnMetadata("map", mapType(stringType(), bytesType())) + }; + ResultSetMetadata metadata = ProtoResultSetMetadata.fromProto(metadata(columns).getMetadata()); + ImmutableList responses = + ImmutableList.of( + metadata(columns), + partialResultSetWithoutToken( + stringValue("str1"), + bytesValue("bytes1"), + arrayValue(stringValue("arr1")), + mapValue(mapElement(stringValue("key1"), bytesValue("val1"))), + stringValue("str2")), + partialResultSetWithoutToken( + bytesValue("bytes2"), + arrayValue(stringValue("arr2")), + mapValue(mapElement(stringValue("key2"), bytesValue("val2")))), + partialResultSetWithToken( + stringValue("str3"), + bytesValue("bytes3"), + arrayValue(stringValue("arr3")), + mapValue(mapElement(stringValue("key3"), bytesValue("val3"))))); + try (SqlRowMergerUtil util = new SqlRowMergerUtil()) { + List rows = util.parseExecuteQueryResponses(responses); + assertThat(rows) + .containsExactly( + ProtoSqlRow.create( + metadata, + ImmutableList.of( + stringValue("str1"), + bytesValue("bytes1"), + arrayValue(stringValue("arr1")), + mapValue(mapElement(stringValue("key1"), bytesValue("val1"))))), + ProtoSqlRow.create( + metadata, + ImmutableList.of( + stringValue("str2"), + bytesValue("bytes2"), + arrayValue(stringValue("arr2")), + mapValue(mapElement(stringValue("key2"), bytesValue("val2"))))), + ProtoSqlRow.create( + metadata, + ImmutableList.of( + stringValue("str3"), + bytesValue("bytes3"), + arrayValue(stringValue("arr3")), + mapValue(mapElement(stringValue("key3"), bytesValue("val3")))))); + } + } + + @Test + public void parseExecuteQueryResponses_throwsOnCloseWithPartialBatch_serializedProtoRows() { + ImmutableList responses = + ImmutableList.of( + metadata(columnMetadata("str", stringType())), + partialResultSetWithoutToken(stringValue("str1"))); + + SqlRowMergerUtil util = new SqlRowMergerUtil(); + List unused = util.parseExecuteQueryResponses(responses); + assertThrows(IllegalStateException.class, util::close); + } + + @Test + public void + parseExecuteQueryResponses_throwsOnParseWithPartialRowsInCompleteBatch_serializedProtoRows() { + ImmutableList responses = + ImmutableList.of( + metadata(columnMetadata("str", stringType()), columnMetadata("bytes", bytesType())), + partialResultSetWithToken( + stringValue("str1"), bytesValue("bytes1"), stringValue("str2"))); + + SqlRowMergerUtil util = new SqlRowMergerUtil(); + assertThrows(IllegalStateException.class, () -> util.parseExecuteQueryResponses(responses)); + } + + @Test + public void parseExecuteQueryResponses_worksWithIncrementalSetsOfResponses_serializedProtoRows() { + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), + columnMetadata("bytes", bytesType()), + columnMetadata("strArr", arrayType(stringType())), + columnMetadata("map", mapType(stringType(), bytesType())) + }; + ResultSetMetadata metadata = ProtoResultSetMetadata.fromProto(metadata(columns).getMetadata()); + ImmutableList responses = + ImmutableList.of( + metadata(columns), + partialResultSetWithoutToken( + stringValue("str1"), + bytesValue("bytes1"), + arrayValue(stringValue("arr1")), + mapValue(mapElement(stringValue("key1"), bytesValue("val1"))), + stringValue("str2")), + partialResultSetWithoutToken( + bytesValue("bytes2"), + arrayValue(stringValue("arr2")), + mapValue(mapElement(stringValue("key2"), bytesValue("val2")))), + partialResultSetWithToken( + stringValue("str3"), + bytesValue("bytes3"), + arrayValue(stringValue("arr3")), + mapValue(mapElement(stringValue("key3"), bytesValue("val3"))))); + try (SqlRowMergerUtil util = new SqlRowMergerUtil()) { + List rows = new ArrayList<>(); + rows.addAll(util.parseExecuteQueryResponses(responses.subList(0, 1))); + rows.addAll(util.parseExecuteQueryResponses(responses.subList(1, 2))); + rows.addAll(util.parseExecuteQueryResponses(responses.subList(2, 3))); + rows.addAll(util.parseExecuteQueryResponses(responses.subList(3, 4))); + + assertThat(rows) + .containsExactly( + ProtoSqlRow.create( + metadata, + ImmutableList.of( + stringValue("str1"), + bytesValue("bytes1"), + arrayValue(stringValue("arr1")), + mapValue(mapElement(stringValue("key1"), bytesValue("val1"))))), + ProtoSqlRow.create( + metadata, + ImmutableList.of( + stringValue("str2"), + bytesValue("bytes2"), + arrayValue(stringValue("arr2")), + mapValue(mapElement(stringValue("key2"), bytesValue("val2"))))), + ProtoSqlRow.create( + metadata, + ImmutableList.of( + stringValue("str3"), + bytesValue("bytes3"), + arrayValue(stringValue("arr3")), + mapValue(mapElement(stringValue("key3"), bytesValue("val3")))))); + } + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/SqlRowSubject.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/SqlRowSubject.java new file mode 100644 index 0000000000..4e64c75cac --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/SqlRowSubject.java @@ -0,0 +1,41 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.internal; + +import static com.google.common.truth.Truth.assertAbout; + +import com.google.common.truth.FailureMetadata; +import com.google.common.truth.Subject; +import javax.annotation.Nullable; + +/** Truth subject for {@link ProtoSqlRow}. Intended for ease-of-use in testing. */ +public final class SqlRowSubject extends Subject { + + private final @Nullable SqlRow actual; + + private SqlRowSubject(FailureMetadata metadata, @Nullable SqlRow actual) { + super(metadata, actual); + this.actual = actual; + } + + public static Factory sqlRow() { + return SqlRowSubject::new; + } + + public static SqlRowSubject assertThat(@Nullable SqlRow actual) { + return assertAbout(sqlRow()).that(actual); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/sql/SqlTypeTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/sql/SqlTypeTest.java new file mode 100644 index 0000000000..8fef0f6c03 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/sql/SqlTypeTest.java @@ -0,0 +1,191 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.boolType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.float32Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.float64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structField; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampType; +import static com.google.common.truth.Truth.assertThat; + +import com.google.bigtable.v2.Type; +import com.google.cloud.bigtable.common.Type.StructWithSchema; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType.Code; +import com.google.protobuf.ByteString; +import java.util.Arrays; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class SqlTypeTest { + + private HashMap> protoToJavaMapping; + + @Before + public void setUp() { + protoToJavaMapping = new HashMap<>(); + protoToJavaMapping.put(bytesType(), SqlType.bytes()); + protoToJavaMapping.put(stringType(), SqlType.string()); + protoToJavaMapping.put(int64Type(), SqlType.int64()); + protoToJavaMapping.put(float32Type(), SqlType.float32()); + protoToJavaMapping.put(float64Type(), SqlType.float64()); + protoToJavaMapping.put(boolType(), SqlType.bool()); + protoToJavaMapping.put(timestampType(), SqlType.timestamp()); + protoToJavaMapping.put(dateType(), SqlType.date()); + protoToJavaMapping.put( + structType(structField("foo", stringType()), structField("bar", int64Type())), + new StructWithSchema( + Arrays.asList( + StructWithSchema.Field.fromProto(structField("foo", stringType())), + StructWithSchema.Field.fromProto(structField("bar", int64Type()))))); + protoToJavaMapping.put(arrayType(stringType()), SqlType.arrayOf(SqlType.string())); + protoToJavaMapping.put( + mapType(bytesType(), stringType()), SqlType.mapOf(SqlType.bytes(), SqlType.string())); + } + + @Test + public void fromProto_supportsAllTypes() { + EnumSet allCodes = EnumSet.allOf(SqlType.Code.class); + for (Map.Entry> entry : protoToJavaMapping.entrySet()) { + SqlType converted = SqlType.fromProto(entry.getKey()); + assertThat(converted).isEqualTo(entry.getValue()); + allCodes.remove(converted.getCode()); + } + assertThat(allCodes).isEmpty(); + } + + @Test + public void typesMatch_supportsAllTypes() { + EnumSet allCodes = EnumSet.allOf(SqlType.Code.class); + + for (Map.Entry> entry : protoToJavaMapping.entrySet()) { + SqlType type = entry.getValue(); + SqlType copyOfType = SqlType.fromProto(entry.getKey()); + assertThat(SqlType.typesMatch(type, copyOfType)).isTrue(); + SqlType otherType = + type.getCode().equals(Code.STRING) ? SqlType.bytes() : SqlType.string(); + assertThat(SqlType.typesMatch(type, otherType)).isFalse(); + allCodes.remove(type.getCode()); + } + + assertThat(allCodes).isEmpty(); + } + + @Test + public void historicalMap_matchesProto() { + SqlType expected = + SqlType.fromProto( + mapType( + bytesType(), + arrayType( + structType( + structField("timestamp", timestampType()), + structField("value", bytesType()))))); + assertThat(SqlType.typesMatch(SqlType.historicalMap(), expected)).isTrue(); + } + + @Test + public void typesMatch_ignoresStructSchema() { + SqlType.Struct schemalessStruct = SqlType.struct(); + Type structProto = + structType(structField("timestamp", timestampType()), structField("value", bytesType())); + StructWithSchema structWithSchema = StructWithSchema.fromProto(structProto.getStructType()); + SqlType.Array arrayNestedSchemaless = SqlType.arrayOf(SqlType.struct()); + SqlType arrayNestedSchema = SqlType.fromProto(arrayType(structProto)); + SqlType.Map> historicalMapSchemaless = SqlType.historicalMap(); + SqlType mapNestedSchema = SqlType.fromProto(mapType(bytesType(), arrayType(structProto))); + + assertThat(SqlType.typesMatch(schemalessStruct, structWithSchema)).isTrue(); + assertThat(SqlType.typesMatch(arrayNestedSchema, arrayNestedSchemaless)).isTrue(); + assertThat(SqlType.typesMatch(historicalMapSchemaless, mapNestedSchema)).isTrue(); + } + + @Test + public void typesMatch_checksArrayElements() { + SqlType.Array stringArray = SqlType.arrayOf(SqlType.string()); + SqlType.Array bytesArray = SqlType.arrayOf(SqlType.bytes()); + SqlType.Array> nestedStringArray = + SqlType.arrayOf(SqlType.arrayOf(SqlType.string())); + SqlType.Array> nestedBytesArray = + SqlType.arrayOf(SqlType.arrayOf(SqlType.bytes())); + + assertThat(SqlType.typesMatch(stringArray, bytesArray)).isFalse(); + assertThat(SqlType.typesMatch(nestedStringArray, nestedBytesArray)).isFalse(); + } + + @Test + public void typesMatch_checksMapSchema() { + SqlType.Map bytesBytesMap = + SqlType.mapOf(SqlType.bytes(), SqlType.bytes()); + SqlType.Map bytesStringMap = + SqlType.mapOf(SqlType.string(), SqlType.bytes()); + SqlType.Map stringBytesMap = + SqlType.mapOf(SqlType.bytes(), SqlType.string()); + + assertThat(SqlType.typesMatch(bytesBytesMap, bytesStringMap)).isFalse(); + assertThat(SqlType.typesMatch(bytesBytesMap, stringBytesMap)).isFalse(); + assertThat( + SqlType.typesMatch( + SqlType.mapOf(SqlType.bytes(), bytesBytesMap), + SqlType.mapOf(SqlType.bytes(), bytesStringMap))) + .isFalse(); + } + + @Test + public void struct_getFields() { + Type structProto = + structType(structField("timestamp", timestampType()), structField("value", bytesType())); + SqlType struct = SqlType.fromProto(structProto); + SqlType.Struct typedStruct = (SqlType.Struct) struct; + SqlType.Struct.Field timestampField = typedStruct.getFields().get(0); + SqlType.Struct.Field valueField = typedStruct.getFields().get(1); + assertThat(timestampField.name()).isEqualTo("timestamp"); + assertThat(timestampField.type()).isEqualTo(SqlType.timestamp()); + assertThat(valueField.name()).isEqualTo("value"); + assertThat(valueField.type()).isEqualTo(SqlType.bytes()); + } + + @Test + public void array_getElementType() { + SqlType array = SqlType.fromProto(arrayType(stringType())); + SqlType.Array typedArray = (SqlType.Array) array; + + assertThat(typedArray.getElementType()).isEqualTo(SqlType.string()); + } + + @Test + public void map_getKeyAndValueTypes() { + SqlType map = SqlType.mapOf(SqlType.bytes(), SqlType.string()); + SqlType.Map typedMap = (SqlType.Map) map; + + assertThat(typedMap.getKeyType()).isEqualTo(SqlType.bytes()); + assertThat(typedMap.getValueType()).isEqualTo(SqlType.string()); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/sql/StatementTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/sql/StatementTest.java new file mode 100644 index 0000000000..ef72384852 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/sql/StatementTest.java @@ -0,0 +1,322 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.models.sql; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.boolType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.dateValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.timestampValue; +import static com.google.common.truth.Truth.assertThat; + +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.Value; +import com.google.cloud.Date; +import com.google.cloud.bigtable.data.v2.internal.RequestContext; +import com.google.protobuf.ByteString; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.threeten.bp.Instant; + +@RunWith(JUnit4.class) +public class StatementTest { + + private static final String EXPECTED_APP_PROFILE = "test-profile"; + private static final RequestContext REQUEST_CONTEXT = + RequestContext.create("test-project", "test-instance", EXPECTED_APP_PROFILE); + private static final String EXPECTED_INSTANCE_NAME = + "projects/test-project/instances/test-instance"; + + @Test + public void statementWithoutParameters() { + Statement s = Statement.of("SELECT * FROM table"); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table") + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithBytesParam() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE _key=@key") + .setBytesParam("key", ByteString.copyFromUtf8("test")) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE _key=@key") + .putParams( + "key", + Value.newBuilder() + .setType(bytesType()) + .setBytesValue(ByteString.copyFromUtf8("test")) + .build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithNullBytesParam() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE _key=@key") + .setBytesParam("key", null) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE _key=@key") + .putParams("key", Value.newBuilder().setType(bytesType()).build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithStringParam() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE _key=@key") + .setStringParam("key", "test") + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE _key=@key") + .putParams( + "key", Value.newBuilder().setType(stringType()).setStringValue("test").build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithNullStringParam() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE _key=@key") + .setStringParam("key", null) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE _key=@key") + .putParams("key", Value.newBuilder().setType(stringType()).build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithInt64Param() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE 1=@number") + .setLongParam("number", 1L) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE 1=@number") + .putParams("number", Value.newBuilder().setType(int64Type()).setIntValue(1).build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithNullInt64Param() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE 1=@number") + .setLongParam("number", null) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE 1=@number") + .putParams("number", Value.newBuilder().setType(int64Type()).build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithBoolParam() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE @bool") + .setBooleanParam("bool", true) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE @bool") + .putParams( + "bool", Value.newBuilder().setType(boolType()).setBoolValue(true).build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithNullBoolParam() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE @bool") + .setBooleanParam("bool", null) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE @bool") + .putParams("bool", Value.newBuilder().setType(boolType()).build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithTimestampParam() { + Statement s = + Statement.newBuilder( + "SELECT * FROM table WHERE PARSE_TIMESTAMP(\"%Y/%m/%dT%H:%M:%S\", CAST(cf[\"ts\"] AS STRING)) < @timeParam") + .setTimestampParam("timeParam", Instant.ofEpochSecond(1000, 100)) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery( + "SELECT * FROM table WHERE PARSE_TIMESTAMP(\"%Y/%m/%dT%H:%M:%S\", CAST(cf[\"ts\"] AS STRING)) < @timeParam") + .putParams( + "timeParam", + Value.newBuilder() + .setType(timestampType()) + .setTimestampValue(timestampValue(1000, 100).getTimestampValue()) + .build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithNullTimestampParam() { + Statement s = + Statement.newBuilder( + "SELECT * FROM table WHERE PARSE_TIMESTAMP(\"%Y/%m/%dT%H:%M:%S\", CAST(cf[\"ts\"] AS STRING)) < @timeParam") + .setTimestampParam("timeParam", null) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery( + "SELECT * FROM table WHERE PARSE_TIMESTAMP(\"%Y/%m/%dT%H:%M:%S\", CAST(cf[\"ts\"] AS STRING)) < @timeParam") + .putParams("timeParam", Value.newBuilder().setType(timestampType()).build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithDateParam() { + Statement s = + Statement.newBuilder( + "SELECT * FROM table WHERE PARSE_DATE(\"%Y%m%d\", CAST(cf[\"date\"] AS STRING)) < @dateParam") + .setDateParam("dateParam", Date.fromYearMonthDay(2024, 6, 11)) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery( + "SELECT * FROM table WHERE PARSE_DATE(\"%Y%m%d\", CAST(cf[\"date\"] AS STRING)) < @dateParam") + .putParams( + "dateParam", + Value.newBuilder() + .setType(dateType()) + .setDateValue(dateValue(2024, 6, 11).getDateValue()) + .build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementWithNullDateParam() { + Statement s = + Statement.newBuilder( + "SELECT * FROM table WHERE PARSE_DATE(\"%Y%m%d\", CAST(cf[\"date\"] AS STRING)) < @dateParam") + .setDateParam("dateParam", null) + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery( + "SELECT * FROM table WHERE PARSE_DATE(\"%Y%m%d\", CAST(cf[\"date\"] AS STRING)) < @dateParam") + .putParams("dateParam", Value.newBuilder().setType(dateType()).build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void statementBuilderAllowsParamsToBeOverridden() { + Statement s = + Statement.newBuilder("SELECT * FROM table WHERE _key=@key") + .setStringParam("key", "test1") + .setStringParam("key", "test2") + .setStringParam("key", "test3") + .setStringParam("key", "test4") + .build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table WHERE _key=@key") + .putParams( + "key", Value.newBuilder().setType(stringType()).setStringValue("test4").build()) + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } + + @Test + public void builderWorksWithNoParams() { + Statement s = Statement.newBuilder("SELECT * FROM table").build(); + + assertThat(s.toProto(REQUEST_CONTEXT)) + .isEqualTo( + ExecuteQueryRequest.newBuilder() + .setQuery("SELECT * FROM table") + .setInstanceName(EXPECTED_INSTANCE_NAME) + .setAppProfileId(EXPECTED_APP_PROFILE) + .build()); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java index edf0b87fd9..03afa79586 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java @@ -553,6 +553,7 @@ public void testAllMethodsAreCalled() { // Exclude methods that are not supported by routing cookie methods.add("PingAndWarm"); + methods.add("ExecuteQuery"); assertThat(methods).containsExactlyElementsIn(expected); } diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java index 290fcc321f..4bcacab4c7 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java @@ -28,11 +28,13 @@ import com.google.api.gax.rpc.WatchdogProvider; import com.google.auth.Credentials; import com.google.bigtable.v2.PingAndWarmRequest; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation; import com.google.cloud.bigtable.data.v2.models.KeyOffset; import com.google.cloud.bigtable.data.v2.models.Query; import com.google.cloud.bigtable.data.v2.models.Row; import com.google.cloud.bigtable.data.v2.models.RowMutation; +import com.google.cloud.bigtable.data.v2.models.sql.Statement; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Range; @@ -41,6 +43,7 @@ import java.lang.reflect.Modifier; import java.net.URI; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -759,6 +762,81 @@ public void pingAndWarmRetriesAreDisabled() { assertThat(builder.getRetrySettings().getInitialRpcTimeout()).isAtMost(Duration.ofSeconds(30)); } + @Test + public void executeQuerySettingsAreNotLost() { + String dummyProjectId = "my-project"; + String dummyInstanceId = "my-instance"; + + EnhancedBigtableStubSettings.Builder builder = + EnhancedBigtableStubSettings.newBuilder() + .setProjectId(dummyProjectId) + .setInstanceId(dummyInstanceId) + // Here and everywhere in this test, disable channel priming so we won't need + // authentication for sending the prime request since we're only testing the settings. + .setRefreshingChannel(false); + + // Note that we don't support retries yet so the settings won't do anything. + // We still don't want the settings to be dropped though. + RetrySettings retrySettings = + RetrySettings.newBuilder() + .setMaxAttempts(10) + .setTotalTimeout(Duration.ofHours(1)) + .setInitialRpcTimeout(Duration.ofSeconds(10)) + .setRpcTimeoutMultiplier(1) + .setMaxRpcTimeout(Duration.ofSeconds(10)) + .setJittered(true) + .build(); + + builder + .executeQuerySettings() + .setIdleTimeout(Duration.ofMinutes(5)) + .setRetryableCodes(Code.ABORTED, Code.DEADLINE_EXCEEDED) + .setRetrySettings(retrySettings) + .build(); + + builder.executeQuerySettings().setRetryableCodes(Code.ABORTED, Code.DEADLINE_EXCEEDED); + + assertThat(builder.executeQuerySettings().getIdleTimeout()).isEqualTo(Duration.ofMinutes(5)); + assertThat(builder.executeQuerySettings().getRetryableCodes()) + .containsAtLeast(Code.ABORTED, Code.DEADLINE_EXCEEDED); + assertThat(builder.executeQuerySettings().getRetrySettings()).isEqualTo(retrySettings); + + assertThat(builder.build().executeQuerySettings().getIdleTimeout()) + .isEqualTo(Duration.ofMinutes(5)); + assertThat(builder.build().executeQuerySettings().getRetryableCodes()) + .containsAtLeast(Code.ABORTED, Code.DEADLINE_EXCEEDED); + assertThat(builder.build().executeQuerySettings().getRetrySettings()).isEqualTo(retrySettings); + + assertThat(builder.build().toBuilder().executeQuerySettings().getIdleTimeout()) + .isEqualTo(Duration.ofMinutes(5)); + assertThat(builder.build().toBuilder().executeQuerySettings().getRetryableCodes()) + .containsAtLeast(Code.ABORTED, Code.DEADLINE_EXCEEDED); + assertThat(builder.build().toBuilder().executeQuerySettings().getRetrySettings()) + .isEqualTo(retrySettings); + } + + @Test + public void executeQueryHasSaneDefaults() { + ServerStreamingCallSettings.Builder builder = + EnhancedBigtableStubSettings.newBuilder().executeQuerySettings(); + + // Retries aren't supported right now + // call verifyRetrySettingAreSane when we do + assertThat(builder.getRetryableCodes()).containsExactlyElementsIn(Collections.emptySet()); + assertThat(builder.getRetrySettings().getInitialRpcTimeout()).isEqualTo(Duration.ofSeconds(30)); + assertThat(builder.getRetrySettings().getMaxRpcTimeout()).isEqualTo(Duration.ofSeconds(30)); + assertThat(builder.getRetrySettings().getMaxAttempts()).isEqualTo(1); + } + + @Test + public void executeQueryRetriesAreDisabled() { + ServerStreamingCallSettings.Builder builder = + EnhancedBigtableStubSettings.newBuilder().executeQuerySettings(); + + assertThat(builder.getRetrySettings().getMaxAttempts()).isAtMost(1); + assertThat(builder.getRetrySettings().getInitialRpcTimeout()).isAtMost(Duration.ofSeconds(30)); + } + private void verifyRetrySettingAreSane(Set retryCodes, RetrySettings retrySettings) { assertThat(retryCodes).containsAtLeast(Code.DEADLINE_EXCEEDED, Code.UNAVAILABLE); @@ -885,6 +963,7 @@ public void enableRetryInfoFalseValueTest() throws IOException { "generateInitialChangeStreamPartitionsSettings", "readChangeStreamSettings", "pingAndWarmSettings", + "executeQuerySettings", "metricsProvider", }; diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubTest.java index e2e44b0b83..50d086b711 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubTest.java @@ -15,11 +15,17 @@ */ package com.google.cloud.bigtable.data.v2.stub; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; import com.google.api.client.json.gson.GsonFactory; import com.google.api.client.json.webtoken.JsonWebSignature; +import com.google.api.core.ApiFuture; import com.google.api.gax.batching.Batcher; import com.google.api.gax.batching.BatcherImpl; import com.google.api.gax.batching.BatchingException; @@ -38,6 +44,8 @@ import com.google.api.gax.rpc.WatchdogTimeoutException; import com.google.auth.oauth2.ServiceAccountJwtAccessCredentials; import com.google.bigtable.v2.BigtableGrpc; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.ExecuteQueryResponse; import com.google.bigtable.v2.FeatureFlags; import com.google.bigtable.v2.MutateRowsRequest; import com.google.bigtable.v2.MutateRowsResponse; @@ -53,7 +61,12 @@ import com.google.cloud.bigtable.data.v2.BigtableDataSettings; import com.google.cloud.bigtable.data.v2.FakeServiceBuilder; import com.google.cloud.bigtable.data.v2.internal.RequestContext; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; import com.google.cloud.bigtable.data.v2.models.*; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.Statement; +import com.google.cloud.bigtable.data.v2.stub.sql.ExecuteQueryCallable; +import com.google.cloud.bigtable.data.v2.stub.sql.SqlServerStream; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Queues; import com.google.common.io.BaseEncoding; @@ -87,6 +100,7 @@ import java.security.NoSuchAlgorithmException; import java.util.Base64; import java.util.Collection; +import java.util.Iterator; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutionException; @@ -108,6 +122,7 @@ public class EnhancedBigtableStubTest { NameUtil.formatTableName(PROJECT_ID, INSTANCE_ID, "fake-table"); private static final String APP_PROFILE_ID = "app-profile-id"; private static final String WAIT_TIME_TABLE_ID = "test-wait-timeout"; + private static final String WAIT_TIME_QUERY = "test-wait-timeout"; private static final Duration WATCHDOG_CHECK_DURATION = Duration.ofMillis(100); private Server server; @@ -653,6 +668,57 @@ public void testBatchMutationRPCErrorCode() { "Batching finished with 1 batches failed to apply due to: 1 ApiException(1 PERMISSION_DENIED) and 0 partial failures"); } + @Test + public void testCreateExecuteQueryCallable() throws InterruptedException { + ExecuteQueryCallable streamingCallable = enhancedBigtableStub.createExecuteQueryCallable(); + + SqlServerStream sqlServerStream = streamingCallable.call(Statement.of("SELECT * FROM table")); + ExecuteQueryRequest expectedRequest = + ExecuteQueryRequest.newBuilder() + .setInstanceName(NameUtil.formatInstanceName(PROJECT_ID, INSTANCE_ID)) + .setAppProfileId(APP_PROFILE_ID) + .setQuery("SELECT * FROM table") + .build(); + assertThat(sqlServerStream.rows().iterator().next()).isNotNull(); + assertThat(sqlServerStream.metadataFuture().isDone()).isTrue(); + assertThat(fakeDataService.popLastExecuteQueryRequest()).isEqualTo(expectedRequest); + } + + @Test + public void testExecuteQueryWaitTimeoutIsSet() throws IOException { + EnhancedBigtableStubSettings.Builder settings = defaultSettings.toBuilder(); + // Set a shorter wait timeout and make watchdog checks more frequently + settings.executeQuerySettings().setWaitTimeout(WATCHDOG_CHECK_DURATION.dividedBy(2)); + settings.setStreamWatchdogProvider( + InstantiatingWatchdogProvider.create().withCheckInterval(WATCHDOG_CHECK_DURATION)); + + EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings.build()); + Iterator iterator = + stub.executeQueryCallable().call(Statement.of(WAIT_TIME_QUERY)).rows().iterator(); + WatchdogTimeoutException e = assertThrows(WatchdogTimeoutException.class, iterator::next); + assertThat(e).hasMessageThat().contains("Canceled due to timeout waiting for next response"); + } + + @Test + public void testExecuteQueryWaitTimeoutWorksWithMetadataFuture() + throws IOException, InterruptedException { + EnhancedBigtableStubSettings.Builder settings = defaultSettings.toBuilder(); + // Set a shorter wait timeout and make watchdog checks more frequently + settings.executeQuerySettings().setWaitTimeout(WATCHDOG_CHECK_DURATION.dividedBy(2)); + settings.setStreamWatchdogProvider( + InstantiatingWatchdogProvider.create().withCheckInterval(WATCHDOG_CHECK_DURATION)); + + EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings.build()); + ApiFuture future = + stub.executeQueryCallable().call(Statement.of(WAIT_TIME_QUERY)).metadataFuture(); + + ExecutionException e = assertThrows(ExecutionException.class, future::get); + assertThat(e.getCause()).isInstanceOf(WatchdogTimeoutException.class); + assertThat(e.getCause().getMessage()) + .contains("Canceled due to timeout waiting for next response"); + assertThat(e).hasMessageThat().contains("Canceled due to timeout waiting for next response"); + } + private static class MetadataInterceptor implements ServerInterceptor { final BlockingQueue headers = Queues.newLinkedBlockingDeque(); @@ -684,12 +750,17 @@ private static class FakeDataService extends BigtableGrpc.BigtableImplBase { final BlockingQueue readChangeReadStreamRequests = Queues.newLinkedBlockingDeque(); final BlockingQueue pingRequests = Queues.newLinkedBlockingDeque(); + final BlockingQueue executeQueryRequests = Queues.newLinkedBlockingDeque(); @SuppressWarnings("unchecked") ReadRowsRequest popLastRequest() throws InterruptedException { return requests.poll(1, TimeUnit.SECONDS); } + ExecuteQueryRequest popLastExecuteQueryRequest() throws InterruptedException { + return executeQueryRequests.poll(1, TimeUnit.SECONDS); + } + @Override public void mutateRows( MutateRowsRequest request, StreamObserver responseObserver) { @@ -750,5 +821,20 @@ public void pingAndWarm( responseObserver.onNext(PingAndWarmResponse.getDefaultInstance()); responseObserver.onCompleted(); } + + @Override + public void executeQuery( + ExecuteQueryRequest request, StreamObserver responseObserver) { + if (request.getQuery().contains(WAIT_TIME_QUERY)) { + try { + Thread.sleep(WATCHDOG_CHECK_DURATION.toMillis() * 2); + } catch (Exception e) { + + } + } + executeQueryRequests.add(request); + responseObserver.onNext(metadata(columnMetadata("foo", stringType()))); + responseObserver.onNext(partialResultSetWithToken(stringValue("test"))); + } } } diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java index ecab86906b..16e886f9b7 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java @@ -42,6 +42,7 @@ import com.google.cloud.bigtable.data.v2.models.ReadModifyWriteRow; import com.google.cloud.bigtable.data.v2.models.RowMutation; import com.google.cloud.bigtable.data.v2.models.RowMutationEntry; +import com.google.cloud.bigtable.data.v2.models.sql.Statement; import com.google.rpc.Status; import io.grpc.Metadata; import io.grpc.Server; @@ -62,8 +63,10 @@ public class HeadersTest { private static final String PROJECT_ID = "fake-project"; private static final String INSTANCE_ID = "fake-instance"; private static final String TABLE_ID = "fake-table"; - private static final String TABLE_NAME = - "projects%2F" + PROJECT_ID + "%2Finstances%2F" + INSTANCE_ID + "%2Ftables%2F" + TABLE_ID; + + private static final String INSTANCE_NAME = + "projects%2F" + PROJECT_ID + "%2Finstances%2F" + INSTANCE_ID; + private static final String TABLE_NAME = INSTANCE_NAME + "%2Ftables%2F" + TABLE_ID; private static final String APP_PROFILE_ID = "fake-profile"; private static final String TEST_FIXED_HEADER_STRING = "test_fixed_header"; @@ -160,7 +163,17 @@ public void readModifyWriteTest() { verifyHeaderSent(); } + @Test + public void executeQueryTest() { + client.executeQuery(Statement.of("SELECT * FROM table")); + verifyHeaderSent(true); + } + private void verifyHeaderSent() { + verifyHeaderSent(false); + } + + private void verifyHeaderSent(boolean useInstance) { Metadata metadata; try { metadata = sentMetadata.take(); @@ -169,7 +182,11 @@ private void verifyHeaderSent() { } String requestParamsvalue = metadata.get(X_GOOG_REQUEST_PARAMS_KEY); - assertThat(requestParamsvalue).containsMatch("(^|.*&)table_name=" + TABLE_NAME + "($|&.*)"); + if (useInstance) { + assertThat(requestParamsvalue).containsMatch("(^|.*&)name=" + INSTANCE_NAME + "($|&.*)"); + } else { + assertThat(requestParamsvalue).containsMatch("(^|.*&)table_name=" + TABLE_NAME + "($|&.*)"); + } assertThat(requestParamsvalue) .containsMatch("(^|.*&)app_profile_id=" + APP_PROFILE_ID + "($|&.*)"); diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RetryInfoTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RetryInfoTest.java index abbf46c468..c1299f82c9 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RetryInfoTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RetryInfoTest.java @@ -205,6 +205,7 @@ public void testAllMethods() { // Exclude methods that don't support retry info methods.add("PingAndWarm"); + methods.add("ExecuteQuery"); assertThat(methods).containsExactlyElementsIn(expected); } diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallableTest.java new file mode 100644 index 0000000000..9788e5d55d --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ExecuteQueryCallableTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.bigtable.data.v2.internal.ProtoResultSetMetadata; +import com.google.cloud.bigtable.data.v2.internal.ProtoSqlRow; +import com.google.cloud.bigtable.data.v2.internal.RequestContext; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.Statement; +import com.google.cloud.bigtable.gaxx.testing.FakeStreamingApi.ServerStreamingStashCallable; +import java.util.Collections; +import java.util.Iterator; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class ExecuteQueryCallableTest { + + private static final RequestContext REQUEST_CONTEXT = + RequestContext.create("fake-project", "fake-instance", "fake-profile"); + + @Test + public void testCallContextAndServerStreamSetup() { + SqlRow row = + ProtoSqlRow.create( + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("test", stringType())).getMetadata()), + Collections.singletonList(stringValue("foo"))); + ServerStreamingStashCallable innerCallable = + new ServerStreamingStashCallable<>(Collections.singletonList(row)); + ExecuteQueryCallable callable = new ExecuteQueryCallable(innerCallable, REQUEST_CONTEXT); + SqlServerStream stream = callable.call(Statement.of("SELECT * FROM table")); + + assertThat(stream.metadataFuture()) + .isEqualTo(innerCallable.getActualRequest().resultSetMetadataFuture()); + Iterator responseIterator = stream.rows().iterator(); + assertThat(responseIterator.next()).isEqualTo(row); + assertThat(responseIterator.hasNext()).isFalse(); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/MetadataResolvingCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/MetadataResolvingCallableTest.java new file mode 100644 index 0000000000..1c04a11d33 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/MetadataResolvingCallableTest.java @@ -0,0 +1,204 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Value; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.api.core.SettableApiFuture; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.cloud.bigtable.data.v2.internal.ProtoResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.stub.sql.MetadataResolvingCallable.MetadataObserver; +import com.google.cloud.bigtable.gaxx.testing.FakeStreamingApi.ServerStreamingStashCallable; +import com.google.cloud.bigtable.gaxx.testing.MockStreamingApi.MockResponseObserver; +import com.google.cloud.bigtable.gaxx.testing.MockStreamingApi.MockServerStreamingCall; +import com.google.cloud.bigtable.gaxx.testing.MockStreamingApi.MockServerStreamingCallable; +import com.google.cloud.bigtable.gaxx.testing.MockStreamingApi.MockStreamController; +import java.util.Arrays; +import java.util.Collections; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class MetadataResolvingCallableTest { + + private static final ExecuteQueryRequest FAKE_REQUEST = ExecuteQueryRequest.newBuilder().build(); + private static final ExecuteQueryResponse METADATA = + metadata(columnMetadata("foo", stringType()), columnMetadata("bar", int64Type())); + private static final ExecuteQueryResponse DATA = + partialResultSetWithToken(stringValue("fooVal"), int64Value(100)); + + MockResponseObserver outerObserver; + SettableApiFuture metadataFuture; + MetadataResolvingCallable.MetadataObserver observer; + + @Before + public void setUp() { + metadataFuture = SettableApiFuture.create(); + outerObserver = new MockResponseObserver<>(true); + observer = new MetadataObserver(outerObserver, metadataFuture); + } + + @Test + public void observer_parsesMetadataSetsFutureAndPassesThroughResponses() + throws ExecutionException, InterruptedException { + ServerStreamingStashCallable innerCallable = + new ServerStreamingStashCallable<>(Arrays.asList(METADATA, DATA)); + innerCallable.call(FAKE_REQUEST, observer); + + assertThat(metadataFuture.isDone()).isTrue(); + assertThat(metadataFuture.get()) + .isEqualTo(ProtoResultSetMetadata.fromProto(METADATA.getMetadata())); + assertThat(outerObserver.popNextResponse()).isEqualTo(METADATA); + assertThat(outerObserver.popNextResponse()).isEqualTo(DATA); + assertThat(outerObserver.isDone()).isTrue(); + assertThat(outerObserver.getFinalError()).isNull(); + } + + @Test + public void observer_invalidMetadataFailsFutureAndPassesThroughError() { + ExecuteQueryResponse invalidMetadataResponse = metadata(); + ServerStreamingStashCallable innerCallable = + new ServerStreamingStashCallable<>(Arrays.asList(invalidMetadataResponse, DATA)); + innerCallable.call(FAKE_REQUEST, observer); + + assertThat(metadataFuture.isDone()).isTrue(); + assertThrows(ExecutionException.class, metadataFuture::get); + ExecutionException e = assertThrows(ExecutionException.class, metadataFuture::get); + assertThat(e.getCause()).isInstanceOf(IllegalStateException.class); + assertThat(outerObserver.isDone()).isTrue(); + assertThat(outerObserver.getFinalError()).isInstanceOf(IllegalStateException.class); + } + + @Test + public void observer_invalidFirstResponseFailsFutureAndPassesThroughError() { + ServerStreamingStashCallable innerCallable = + new ServerStreamingStashCallable<>(Collections.singletonList(DATA)); + innerCallable.call(FAKE_REQUEST, observer); + + assertThat(metadataFuture.isDone()).isTrue(); + assertThrows(ExecutionException.class, metadataFuture::get); + ExecutionException e = assertThrows(ExecutionException.class, metadataFuture::get); + assertThat(e.getCause()).isInstanceOf(IllegalStateException.class); + assertThat(outerObserver.isDone()).isTrue(); + assertThat(outerObserver.getFinalError()).isInstanceOf(IllegalStateException.class); + } + + // cancel will manifest as an onError call so these are testing both cancellation and + // other exceptions + @Test + public void observer_passesThroughErrorBeforeReceivingMetadata() { + MockServerStreamingCallable innerCallable = + new MockServerStreamingCallable<>(); + innerCallable.call(FAKE_REQUEST, observer); + MockServerStreamingCall lastCall = + innerCallable.popLastCall(); + MockStreamController innerController = lastCall.getController(); + + innerController.getObserver().onError(new CancellationException("Cancelled")); + + assertThat(metadataFuture.isDone()).isTrue(); + assertThrows(ExecutionException.class, metadataFuture::get); + ExecutionException e = assertThrows(ExecutionException.class, metadataFuture::get); + assertThat(e.getCause()).isInstanceOf(CancellationException.class); + assertThat(outerObserver.isDone()).isTrue(); + assertThat(outerObserver.getFinalError()).isInstanceOf(CancellationException.class); + } + + @Test + public void observer_passesThroughErrorAfterReceivingMetadata() + throws ExecutionException, InterruptedException { + MockServerStreamingCallable innerCallable = + new MockServerStreamingCallable<>(); + innerCallable.call(FAKE_REQUEST, observer); + MockServerStreamingCall lastCall = + innerCallable.popLastCall(); + MockStreamController innerController = lastCall.getController(); + + innerController.getObserver().onResponse(METADATA); + innerController.getObserver().onError(new RuntimeException("exception after metadata")); + + assertThat(metadataFuture.isDone()).isTrue(); + assertThat(metadataFuture.get()) + .isEqualTo(ProtoResultSetMetadata.fromProto(METADATA.getMetadata())); + assertThat(outerObserver.popNextResponse()).isEqualTo(METADATA); + assertThat(outerObserver.isDone()).isTrue(); + assertThat(outerObserver.getFinalError()).isInstanceOf(RuntimeException.class); + } + + @Test + public void observer_passThroughOnStart() { + MockServerStreamingCallable innerCallable = + new MockServerStreamingCallable<>(); + innerCallable.call(FAKE_REQUEST, observer); + MockServerStreamingCall lastCall = + innerCallable.popLastCall(); + MockStreamController innerController = lastCall.getController(); + + assertThat(outerObserver.getController()).isEqualTo(innerController); + } + + @Test + public void observer_onCompleteBeforeMetadata_throwsException() throws InterruptedException { + MockServerStreamingCallable innerCallable = + new MockServerStreamingCallable<>(); + innerCallable.call(FAKE_REQUEST, observer); + MockServerStreamingCall lastCall = + innerCallable.popLastCall(); + MockStreamController innerController = lastCall.getController(); + + innerController.getObserver().onComplete(); + assertThrows(ExecutionException.class, metadataFuture::get); + ExecutionException e = assertThrows(ExecutionException.class, metadataFuture::get); + assertThat(e.getCause()).isInstanceOf(IllegalStateException.class); + assertThat(outerObserver.isDone()).isTrue(); + assertThat(outerObserver.getFinalError()).isInstanceOf(IllegalStateException.class); + } + + @Test + public void testCallable() throws ExecutionException, InterruptedException { + ServerStreamingStashCallable innerCallable = + new ServerStreamingStashCallable<>(Arrays.asList(METADATA, DATA)); + MetadataResolvingCallable callable = new MetadataResolvingCallable(innerCallable); + MockResponseObserver outerObserver = new MockResponseObserver<>(true); + SettableApiFuture metadataFuture = SettableApiFuture.create(); + ExecuteQueryCallContext callContext = + ExecuteQueryCallContext.create(FAKE_REQUEST, metadataFuture); + + callable.call(callContext, outerObserver); + + assertThat(metadataFuture.isDone()).isTrue(); + assertThat(metadataFuture.get()) + .isEqualTo(ProtoResultSetMetadata.fromProto(METADATA.getMetadata())); + assertThat(outerObserver.popNextResponse()).isEqualTo(METADATA); + assertThat(outerObserver.popNextResponse()).isEqualTo(DATA); + assertThat(outerObserver.isDone()).isTrue(); + assertThat(outerObserver.getFinalError()).isNull(); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachineSubject.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachineSubject.java new file mode 100644 index 0000000000..9ec406d71e --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachineSubject.java @@ -0,0 +1,70 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import static com.google.common.truth.Truth.assertAbout; + +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.common.truth.FailureMetadata; +import com.google.common.truth.Subject; +import com.google.common.truth.Truth; +import java.util.ArrayDeque; +import java.util.Queue; +import javax.annotation.Nullable; + +/** Truth subject for {@link ProtoRowsMergingStateMachine}. Intended for ease-of-use in testing. */ +public final class ProtoRowsMergingStateMachineSubject extends Subject { + + private final ProtoRowsMergingStateMachine actual; + + private ProtoRowsMergingStateMachineSubject( + FailureMetadata metadata, @Nullable ProtoRowsMergingStateMachine actual) { + super(metadata, actual); + this.actual = actual; + } + + public static Factory + stateMachine() { + return ProtoRowsMergingStateMachineSubject::new; + } + + public static ProtoRowsMergingStateMachineSubject assertThat( + @Nullable ProtoRowsMergingStateMachine actual) { + return assertAbout(stateMachine()).that(actual); + } + + public void hasCompleteBatch(boolean expectation) { + if (expectation) { + check("hasCompleteBatch()").that(actual.hasCompleteBatch()).isTrue(); + } else { + check("hasCompleteBatch()").that(actual.hasCompleteBatch()).isFalse(); + } + } + + public void isBatchInProgress(boolean expectation) { + if (expectation) { + check("isBatchInProgress()").that(actual.isBatchInProgress()).isTrue(); + } else { + check("isBatchInProgress()").that(actual.isBatchInProgress()).isFalse(); + } + } + + public void populateQueueYields(SqlRow... expectedRows) { + Queue actualQueue = new ArrayDeque<>(); + actual.populateQueue(actualQueue); + Truth.assertThat(actualQueue).containsExactlyElementsIn(expectedRows); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachineTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachineTest.java new file mode 100644 index 0000000000..c4586a5c13 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachineTest.java @@ -0,0 +1,434 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import static com.google.cloud.bigtable.data.v2.stub.sql.ProtoRowsMergingStateMachineSubject.assertThat; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapElement; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithoutToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.structValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.tokenOnlyResultSet; +import static com.google.common.truth.Truth.assertWithMessage; +import static org.junit.Assert.assertThrows; + +import com.google.bigtable.v2.PartialResultSet; +import com.google.bigtable.v2.ProtoRows; +import com.google.bigtable.v2.ProtoRowsBatch; +import com.google.bigtable.v2.Value; +import com.google.cloud.bigtable.data.v2.internal.ProtoResultSetMetadata; +import com.google.cloud.bigtable.data.v2.internal.ProtoSqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.data.v2.models.sql.SqlType; +import com.google.common.base.Strings; +import com.google.common.collect.ImmutableList; +import com.google.protobuf.ByteString; +import java.util.ArrayDeque; +import org.junit.Test; +import org.junit.experimental.runners.Enclosed; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; + +// Use enclosed runner so we can put parameterized and non-parameterized cases in the same test +// suite +@RunWith(Enclosed.class) +public final class ProtoRowsMergingStateMachineTest { + + public static final class IndividualTests { + @Test + public void stateMachine_hasCompleteBatch_falseWhenEmpty() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + assertThat(stateMachine).hasCompleteBatch(false); + } + + @Test + public void stateMachine_hasCompleteBatch_falseWhenAwaitingPartialBatch() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + stateMachine.addPartialResultSet( + partialResultSetWithoutToken(stringValue("foo")).getResults()); + assertThat(stateMachine).hasCompleteBatch(false); + } + + @Test + public void stateMachine_hasCompleteBatch_trueWhenAwaitingBatchConsume() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + stateMachine.addPartialResultSet( + partialResultSetWithoutToken(stringValue("foo")).getResults()); + stateMachine.addPartialResultSet(partialResultSetWithToken(stringValue("bar")).getResults()); + assertThat(stateMachine).hasCompleteBatch(true); + } + + @Test + public void stateMachine_isBatchInProgress_falseWhenEmpty() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + assertThat(stateMachine).isBatchInProgress(false); + } + + @Test + public void stateMachine_isBatchInProgress_trueWhenAwaitingPartialBatch() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + stateMachine.addPartialResultSet( + partialResultSetWithoutToken(stringValue("foo")).getResults()); + assertThat(stateMachine).isBatchInProgress(true); + } + + @Test + public void stateMachine_isBatchInProgress_trueWhenAwaitingBatchConsume() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + stateMachine.addPartialResultSet( + partialResultSetWithoutToken(stringValue("foo")).getResults()); + assertThat(stateMachine).isBatchInProgress(true); + } + + @Test + public void stateMachine_consumeRow_throwsExceptionWhenColumnsArentComplete() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType()), columnMetadata("b", stringType())) + .getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + // this is a valid partial result set so we don't expect an error until we call populateQueue + stateMachine.addPartialResultSet(partialResultSetWithToken(stringValue("foo")).getResults()); + assertThrows( + IllegalStateException.class, () -> stateMachine.populateQueue(new ArrayDeque<>())); + } + + @Test + public void stateMachine_consumeRow_throwsExceptionWhenAwaitingPartialBatch() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + // this doesn't have a token so we shouldn't allow results to be processed + stateMachine.addPartialResultSet( + partialResultSetWithoutToken(stringValue("foo")).getResults()); + assertThrows( + IllegalStateException.class, () -> stateMachine.populateQueue(new ArrayDeque<>())); + } + + @Test + public void stateMachine_mergesPartialBatches() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + stateMachine.addPartialResultSet( + partialResultSetWithoutToken(stringValue("foo")).getResults()); + stateMachine.addPartialResultSet( + partialResultSetWithoutToken(stringValue("bar")).getResults()); + stateMachine.addPartialResultSet(partialResultSetWithToken(stringValue("baz")).getResults()); + + assertThat(stateMachine) + .populateQueueYields( + ProtoSqlRow.create(metadata, ImmutableList.of(stringValue("foo"))), + ProtoSqlRow.create(metadata, ImmutableList.of(stringValue("bar"))), + ProtoSqlRow.create(metadata, ImmutableList.of(stringValue("baz")))); + } + + @Test + public void stateMachine_mergesPartialBatches_withRandomChunks() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("map", mapType(stringType(), bytesType()))).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + Value mapVal = + mapValue( + mapElement( + stringValue(Strings.repeat("a", 10)), bytesValue(Strings.repeat("aVal", 100))), + mapElement(stringValue("b"), bytesValue(Strings.repeat("bVal", 100)))); + ProtoRows rows = ProtoRows.newBuilder().addValues(mapVal).build(); + ByteString chunk1 = rows.toByteString().substring(0, 100); + ByteString chunk2 = rows.toByteString().substring(100); + + stateMachine.addPartialResultSet( + PartialResultSet.newBuilder() + .setProtoRowsBatch(ProtoRowsBatch.newBuilder().setBatchData(chunk1).build()) + .build()); + stateMachine.addPartialResultSet( + PartialResultSet.newBuilder() + .setResumeToken(ByteString.copyFromUtf8("token")) + .setProtoRowsBatch(ProtoRowsBatch.newBuilder().setBatchData(chunk2).build()) + .build()); + + assertThat(stateMachine) + .populateQueueYields(ProtoSqlRow.create(metadata, ImmutableList.of(mapVal))); + } + + @Test + public void stateMachine_reconstructsRowWithMultipleColumns() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata( + columnMetadata("a", stringType()), + columnMetadata("b", bytesType()), + columnMetadata("c", arrayType(stringType())), + columnMetadata("d", mapType(stringType(), bytesType()))) + .getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + + Value stringVal = stringValue("test"); + stateMachine.addPartialResultSet(partialResultSetWithoutToken(stringVal).getResults()); + Value bytesVal = bytesValue("bytes"); + stateMachine.addPartialResultSet(partialResultSetWithoutToken(bytesVal).getResults()); + Value arrayVal = arrayValue(stringValue("foo"), stringValue("bar")); + stateMachine.addPartialResultSet(partialResultSetWithoutToken(arrayVal).getResults()); + Value mapVal = + mapValue( + mapElement(stringValue("a"), bytesValue("aVal")), + mapElement(stringValue("b"), bytesValue("bVal"))); + stateMachine.addPartialResultSet(partialResultSetWithToken(mapVal).getResults()); + + assertThat(stateMachine).hasCompleteBatch(true); + assertThat(stateMachine) + .populateQueueYields( + ProtoSqlRow.create( + metadata, ImmutableList.of(stringVal, bytesVal, arrayVal, mapVal))); + + // Once we consume a completed row the state machine should be reset + assertThat(stateMachine).hasCompleteBatch(false); + assertThrows( + IllegalStateException.class, () -> stateMachine.populateQueue(new ArrayDeque<>())); + assertThat(stateMachine).isBatchInProgress(false); + } + + @Test + public void stateMachine_throwsExceptionWhenValuesDontMatchSchema() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType()), columnMetadata("b", bytesType())) + .getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + + // values in wrong order + stateMachine.addPartialResultSet( + partialResultSetWithToken(bytesValue("test"), stringValue("test")).getResults()); + assertThrows( + IllegalStateException.class, () -> stateMachine.populateQueue(new ArrayDeque<>())); + } + + @Test + public void stateMachine_handlesResumeTokenWithNoValues() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + + stateMachine.addPartialResultSet(partialResultSetWithToken().getResults()); + assertThat(stateMachine).populateQueueYields(new ProtoSqlRow[] {}); + } + + @Test + public void stateMachine_handlesResumeTokenWithOpenBatch() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + + stateMachine.addPartialResultSet( + partialResultSetWithoutToken(stringValue("test")).getResults()); + stateMachine.addPartialResultSet( + tokenOnlyResultSet(ByteString.copyFromUtf8("token")).getResults()); + assertThat(stateMachine) + .populateQueueYields(ProtoSqlRow.create(metadata, ImmutableList.of(stringValue("test")))); + } + + @Test + public void addPartialResultSet_throwsExceptionWhenAwaitingRowConsume() { + ResultSetMetadata metadata = + ProtoResultSetMetadata.fromProto( + metadata(columnMetadata("a", stringType())).getMetadata()); + ProtoRowsMergingStateMachine stateMachine = new ProtoRowsMergingStateMachine(metadata); + stateMachine.addPartialResultSet(partialResultSetWithToken(stringValue("test")).getResults()); + + assertThrows( + IllegalStateException.class, + () -> + stateMachine.addPartialResultSet( + partialResultSetWithToken(stringValue("test2")).getResults())); + } + } + + @RunWith(Parameterized.class) + public static final class ParameterizedTests { + + public ParameterizedTests(SqlType.Code typeCode) { + this.typeCase = typeCode; + } + + private final SqlType.Code typeCase; + + @Parameters + public static SqlType.Code[] valueTypes() { + return SqlType.Code.values(); + } + + @Test + @SuppressWarnings("UnnecessaryDefaultInEnumSwitch") + public void testValidateSupportsAllTypes() { + switch (typeCase) { + case STRING: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.string(), bytesValue("test"))); + break; + case BYTES: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.bytes(), stringValue("test"))); + break; + case INT64: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.int64(), stringValue("test"))); + break; + case BOOL: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.bool(), stringValue("test"))); + break; + case FLOAT32: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.float32(), stringValue("test"))); + break; + case FLOAT64: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.float64(), stringValue("test"))); + break; + case TIMESTAMP: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.timestamp(), stringValue("test"))); + break; + case DATE: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.date(), stringValue("test"))); + break; + case ARRAY: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.arrayOf(SqlType.string()), stringValue("test"))); + // It should check nested values match + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.arrayOf(SqlType.string()), + arrayValue(stringValue("test"), bytesValue("test")))); + break; + case STRUCT: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.fromProto(structType(stringType(), bytesType())), + stringValue("test"))); + // It should check nested values match + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.fromProto(structType(stringType(), bytesType())), + structValue(stringValue("test"), stringValue("test")))); + break; + case MAP: + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.mapOf(SqlType.string(), SqlType.string()), stringValue("test"))); + // It should check nested values match + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.mapOf(SqlType.string(), SqlType.bytes()), + mapValue( + mapElement(stringValue("key"), bytesValue("val")), + mapElement(stringValue("key2"), stringValue("val2"))))); + // It should check all map elements contain only one key and one value because map + // elements + // are represented as structs which are represented as an array of fields. + assertThrows( + IllegalStateException.class, + () -> + ProtoRowsMergingStateMachine.validateValueAndType( + SqlType.mapOf(SqlType.string(), SqlType.bytes()), + mapValue( + mapElement(stringValue("key"), bytesValue("val")), + structValue( + stringValue("key2"), bytesValue("val2"), bytesValue("val3"))))); + break; + default: + assertWithMessage( + "Unknown TypeCase " + + typeCase.name() + + " seen. Check if SerializedProtoRowsMergingStateMachine.validateValueAndType" + + " supports all types.") + .fail(); + } + } + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlProtoFactory.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlProtoFactory.java new file mode 100644 index 0000000000..34c49fed2e --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlProtoFactory.java @@ -0,0 +1,200 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import com.google.bigtable.v2.ArrayValue; +import com.google.bigtable.v2.ColumnMetadata; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.bigtable.v2.PartialResultSet; +import com.google.bigtable.v2.ProtoRows; +import com.google.bigtable.v2.ProtoRowsBatch; +import com.google.bigtable.v2.ProtoSchema; +import com.google.bigtable.v2.ResultSetMetadata; +import com.google.bigtable.v2.Type; +import com.google.bigtable.v2.Type.Struct.Field; +import com.google.bigtable.v2.Value; +import com.google.protobuf.ByteString; +import com.google.protobuf.Timestamp; +import com.google.type.Date; +import java.util.Arrays; + +/** Utilities for creating sql proto objects in tests */ +public class SqlProtoFactory { + + private SqlProtoFactory() {} + + public static ColumnMetadata columnMetadata(String name, Type type) { + return ColumnMetadata.newBuilder().setName(name).setType(type).build(); + } + + public static Type stringType() { + return Type.newBuilder().setStringType(Type.String.getDefaultInstance()).build(); + } + + public static Type bytesType() { + return Type.newBuilder().setBytesType(Type.Bytes.getDefaultInstance()).build(); + } + + public static Type int64Type() { + return Type.newBuilder().setInt64Type(Type.Int64.getDefaultInstance()).build(); + } + + public static Type boolType() { + return Type.newBuilder().setBoolType(Type.Bool.getDefaultInstance()).build(); + } + + public static Type float32Type() { + return Type.newBuilder().setFloat32Type(Type.Float32.getDefaultInstance()).build(); + } + + public static Type float64Type() { + return Type.newBuilder().setFloat64Type(Type.Float64.getDefaultInstance()).build(); + } + + public static Type timestampType() { + return Type.newBuilder().setTimestampType(Type.Timestamp.getDefaultInstance()).build(); + } + + public static Type dateType() { + return Type.newBuilder().setDateType(Type.Date.getDefaultInstance()).build(); + } + + public static Type aggregateSumType() { + return Type.newBuilder() + .setAggregateType( + Type.Aggregate.newBuilder().setSum(Type.Aggregate.Sum.getDefaultInstance())) + .build(); + } + + public static Type arrayType(Type elementType) { + return Type.newBuilder() + .setArrayType(Type.Array.newBuilder().setElementType(elementType).build()) + .build(); + } + + public static Type structType(Type... fieldTypes) { + Field[] fields = new Field[fieldTypes.length]; + for (int i = 0; i < fieldTypes.length; i++) { + fields[i] = Type.Struct.Field.newBuilder().setType(fieldTypes[i]).build(); + } + return structType(fields); + } + + public static Type structType(Field... fields) { + return Type.newBuilder() + .setStructType(Type.Struct.newBuilder().addAllFields(Arrays.asList(fields)).build()) + .build(); + } + + public static Field structField(String name, Type type) { + return Type.Struct.Field.newBuilder().setFieldName(name).setType(type).build(); + } + + public static Type mapType(Type keyType, Type valueType) { + return Type.newBuilder() + .setMapType(Type.Map.newBuilder().setKeyType(keyType).setValueType(valueType).build()) + .build(); + } + + public static Value nullValue() { + return Value.newBuilder().build(); + } + + public static Value stringValue(String contents) { + return Value.newBuilder().setStringValue(contents).build(); + } + + public static Value bytesValue(String contents) { + return Value.newBuilder().setBytesValue(ByteString.copyFromUtf8(contents)).build(); + } + + public static Value int64Value(long data) { + return Value.newBuilder().setIntValue(data).build(); + } + + public static Value floatValue(double data) { + return Value.newBuilder().setFloatValue(data).build(); + } + + public static Value boolValue(boolean data) { + return Value.newBuilder().setBoolValue(data).build(); + } + + public static Value timestampValue(long seconds, int nanos) { + return Value.newBuilder() + .setTimestampValue(Timestamp.newBuilder().setSeconds(seconds).setNanos(nanos).build()) + .build(); + } + + public static Value dateValue(int year, int month, int day) { + return Value.newBuilder() + .setDateValue(Date.newBuilder().setYear(year).setMonth(month).setDay(day).build()) + .build(); + } + + public static Value arrayValue(Value... elements) { + return Value.newBuilder() + .setArrayValue(ArrayValue.newBuilder().addAllValues(Arrays.asList(elements))) + .build(); + } + + public static Value structValue(Value... fields) { + return arrayValue(fields); + } + + public static Value mapValue(Value... elements) { + return arrayValue(elements); + } + + public static Value mapElement(Value... fields) { + return structValue(fields); + } + + private static ProtoRowsBatch protoRowsBatch(Value... values) { + ProtoRows protoRows = ProtoRows.newBuilder().addAllValues(Arrays.asList(values)).build(); + return ProtoRowsBatch.newBuilder().setBatchData(protoRows.toByteString()).build(); + } + + public static ExecuteQueryResponse partialResultSetWithoutToken(Value... values) { + return ExecuteQueryResponse.newBuilder() + .setResults(PartialResultSet.newBuilder().setProtoRowsBatch(protoRowsBatch(values)).build()) + .build(); + } + + public static ExecuteQueryResponse partialResultSetWithToken(Value... values) { + return ExecuteQueryResponse.newBuilder() + .setResults( + PartialResultSet.newBuilder() + .setProtoRowsBatch(protoRowsBatch(values)) + .setResumeToken(ByteString.copyFromUtf8("test")) + .build()) + .build(); + } + + public static ExecuteQueryResponse tokenOnlyResultSet(ByteString token) { + return ExecuteQueryResponse.newBuilder() + .setResults(PartialResultSet.newBuilder().setResumeToken(token)) + .build(); + } + + public static ExecuteQueryResponse metadata(ColumnMetadata... columnMetadata) { + ProtoSchema schema = + ProtoSchema.newBuilder().addAllColumns(Arrays.asList(columnMetadata)).build(); + ResultSetMetadata metadata = ResultSetMetadata.newBuilder().setProtoSchema(schema).build(); + + return ExecuteQueryResponse.newBuilder().setMetadata(metadata).build(); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlProtoFactoryTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlProtoFactoryTest.java new file mode 100644 index 0000000000..2a3eb9e404 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlProtoFactoryTest.java @@ -0,0 +1,47 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithToken; +import static com.google.common.truth.Truth.assertThat; + +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.bigtable.v2.PartialResultSet; +import com.google.bigtable.v2.ProtoRows; +import com.google.protobuf.ByteString; +import com.google.protobuf.InvalidProtocolBufferException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public final class SqlProtoFactoryTest { + + @Test + public void serializedProtoRows_canRoundTrip() throws InvalidProtocolBufferException { + ExecuteQueryResponse response = + partialResultSetWithToken( + SqlProtoFactory.stringValue("string"), SqlProtoFactory.bytesValue("bytes")); + PartialResultSet results = response.getResults(); + + assertThat(results.getResumeToken()).isEqualTo(ByteString.copyFromUtf8("test")); + ProtoRows protoRows = ProtoRows.parseFrom(results.getProtoRowsBatch().getBatchData()); + assertThat(protoRows.getValuesCount()).isEqualTo(2); + assertThat(protoRows.getValuesList().get(0).getStringValue()).isEqualTo("string"); + assertThat(protoRows.getValuesList().get(1).getBytesValue()) + .isEqualTo(ByteString.copyFromUtf8("bytes")); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergerSubject.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergerSubject.java new file mode 100644 index 0000000000..6a6f2bc1d0 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergerSubject.java @@ -0,0 +1,57 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import static com.google.common.truth.Truth.assertAbout; + +import com.google.common.truth.FailureMetadata; +import com.google.common.truth.Subject; +import javax.annotation.Nullable; + +/** Truth subject for {@link SqlRowMerger}. Intended for ease-of-use in testing. */ +final class SqlRowMergerSubject extends Subject { + + private final @Nullable SqlRowMerger actual; + + private SqlRowMergerSubject(FailureMetadata metadata, @Nullable SqlRowMerger actual) { + super(metadata, actual); + this.actual = actual; + } + + public static Factory sqlRowMerger() { + return SqlRowMergerSubject::new; + } + + public static SqlRowMergerSubject assertThat(@Nullable SqlRowMerger actual) { + return assertAbout(sqlRowMerger()).that(actual); + } + + public void hasPartialFrame(boolean expectation) { + if (expectation) { + check("hasPartialFrame()").that(actual.hasPartialFrame()).isTrue(); + } else { + check("hasPartialFrame()").that(actual.hasPartialFrame()).isFalse(); + } + } + + public void hasFullFrame(boolean expectation) { + if (expectation) { + check("hasFullFrame()").that(actual.hasFullFrame()).isTrue(); + } else { + check("hasFullFrame()").that(actual.hasFullFrame()).isFalse(); + } + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergerTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergerTest.java new file mode 100644 index 0000000000..90e9672998 --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergerTest.java @@ -0,0 +1,260 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import static com.google.cloud.bigtable.data.v2.internal.SqlRowSubject.assertThat; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.bytesValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapElement; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.mapValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithoutToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.tokenOnlyResultSet; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlRowMergerSubject.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.bigtable.v2.ColumnMetadata; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.bigtable.v2.Value; +import com.google.cloud.bigtable.data.v2.internal.ProtoResultSetMetadata; +import com.google.cloud.bigtable.data.v2.internal.ProtoSqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.common.collect.ImmutableList; +import com.google.protobuf.ByteString; +import java.util.Arrays; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class SqlRowMergerTest { + + @Test + public void sqlRowMerger_handlesEmptyState() { + SqlRowMerger merger = new SqlRowMerger(); + assertThat(merger).hasPartialFrame(false); + assertThat(merger).hasFullFrame(false); + } + + @Test + public void sqlRowMerger_handlesMetadata() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), + columnMetadata("bytes", bytesType()), + columnMetadata("strArr", arrayType(stringType())), + columnMetadata("strByteMap", mapType(stringType(), bytesType())) + }; + merger.push(metadata(columns)); + assertThat(merger).hasPartialFrame(false); + assertThat(merger).hasFullFrame(false); + } + + @Test + public void sqlRowMerger_rejectsMetadataOfUnrecognizedType() { + SqlRowMerger merger = new SqlRowMerger(); + ExecuteQueryResponse unrecognizedMetadata = + ExecuteQueryResponse.newBuilder() + .setMetadata(com.google.bigtable.v2.ResultSetMetadata.newBuilder().build()) + .build(); + + assertThrows(IllegalStateException.class, () -> merger.push(unrecognizedMetadata)); + } + + @Test + public void hasPartialFrame_trueWithIncompleteBatch() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), columnMetadata("bytes", bytesType()) + }; + merger.push(metadata(columns)); + merger.push(partialResultSetWithoutToken(stringValue("test"))); + assertThat(merger).hasPartialFrame(true); + } + + @Test + public void hasPartialFrame_trueWithFullRow() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), columnMetadata("bytes", bytesType()) + }; + merger.push(metadata(columns)); + merger.push(partialResultSetWithToken(stringValue("test"), bytesValue("test"))); + assertThat(merger).hasPartialFrame(true); + } + + @Test + public void push_failsOnCompleteBatchWithIncompleteRow() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), columnMetadata("bytes", bytesType()) + }; + merger.push(metadata(columns)); + assertThrows( + IllegalStateException.class, + () -> merger.push(partialResultSetWithToken(stringValue("test")))); + } + + @Test + public void hasFullFrame_trueWithFullRow() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), columnMetadata("bytes", bytesType()) + }; + merger.push(metadata(columns)); + merger.push(partialResultSetWithoutToken(stringValue("test"))); + merger.push(partialResultSetWithToken(bytesValue("test"))); + assertThat(merger).hasFullFrame(true); + } + + @Test + public void hasFullFrame_falseWithIncompleteBatch() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), columnMetadata("bytes", bytesType()) + }; + merger.push(metadata(columns)); + merger.push(partialResultSetWithoutToken(stringValue("test"))); + assertThat(merger).hasFullFrame(false); + } + + @Test + public void sqlRowMerger_handlesResponseStream() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), + columnMetadata("bytes", bytesType()), + columnMetadata("strArr", arrayType(stringType())), + columnMetadata("strByteMap", mapType(stringType(), bytesType())) + }; + ResultSetMetadata metadata = ProtoResultSetMetadata.fromProto(metadata(columns).getMetadata()); + merger.push(metadata(columns)); + + // Three logical rows worth of values split across two responses + Value[] values = { + // first response + stringValue("test"), + bytesValue("bytes"), + arrayValue(stringValue("foo"), stringValue("bar")), + mapValue(mapElement(stringValue("key"), bytesValue("bytes"))), + stringValue("test2"), + // second response + bytesValue("bytes2"), + arrayValue(stringValue("foo2"), stringValue("bar2")), + mapValue(mapElement(stringValue("key2"), bytesValue("bytes2"))), + stringValue("test3"), + bytesValue("bytes3"), + arrayValue(stringValue("foo3"), stringValue("bar3")), + mapValue(mapElement(stringValue("key3"), bytesValue("bytes3"))) + }; + merger.push(partialResultSetWithoutToken(Arrays.copyOf(values, 5))); + merger.push(partialResultSetWithToken(Arrays.copyOfRange(values, 5, 12))); + assertThat(merger.pop()) + .isEqualTo(ProtoSqlRow.create(metadata, ImmutableList.copyOf(Arrays.copyOf(values, 4)))); + assertThat(merger.pop()) + .isEqualTo( + ProtoSqlRow.create(metadata, ImmutableList.copyOf(Arrays.copyOfRange(values, 4, 8)))); + assertThat(merger.pop()) + .isEqualTo( + ProtoSqlRow.create(metadata, ImmutableList.copyOf(Arrays.copyOfRange(values, 8, 12)))); + } + + @Test + public void addValue_failsWithoutMetadataFirst() { + SqlRowMerger merger = new SqlRowMerger(); + assertThrows( + IllegalStateException.class, + () -> merger.push(partialResultSetWithToken(stringValue("test")))); + } + + @Test + public void sqlRowMerger_handlesTokenWithOpenPartialBatch() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), columnMetadata("bytes", bytesType()), + }; + ResultSetMetadata metadata = ProtoResultSetMetadata.fromProto(metadata(columns).getMetadata()); + merger.push(metadata(columns)); + merger.push(partialResultSetWithoutToken(stringValue("test"))); + merger.push(partialResultSetWithoutToken(bytesValue("test"))); + merger.push(tokenOnlyResultSet(ByteString.copyFromUtf8("token"))); + + assertThat(merger).hasPartialFrame(true); + assertThat(merger).hasFullFrame(true); + assertThat(merger.pop()) + .isEqualTo( + ProtoSqlRow.create( + metadata, ImmutableList.of(stringValue("test"), bytesValue("test")))); + } + + @Test + public void sqlRowMerger_handlesTokensWithNoData() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), columnMetadata("bytes", bytesType()), + }; + merger.push(metadata(columns)); + merger.push(tokenOnlyResultSet(ByteString.copyFromUtf8("token1"))); + merger.push(tokenOnlyResultSet(ByteString.copyFromUtf8("token2"))); + merger.push(tokenOnlyResultSet(ByteString.copyFromUtf8("token3"))); + + assertThat(merger).hasPartialFrame(false); + assertThat(merger).hasFullFrame(false); + } + + @Test + public void sqlRowMerger_handlesLeadingTokens() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = { + columnMetadata("str", stringType()), columnMetadata("bytes", bytesType()), + }; + ResultSetMetadata metadata = ProtoResultSetMetadata.fromProto(metadata(columns).getMetadata()); + merger.push(metadata(columns)); + merger.push(tokenOnlyResultSet(ByteString.copyFromUtf8("token1"))); + merger.push(partialResultSetWithoutToken(stringValue("test"))); + merger.push(partialResultSetWithToken(bytesValue("test"))); + + assertThat(merger).hasPartialFrame(true); + assertThat(merger).hasFullFrame(true); + assertThat(merger.pop()) + .isEqualTo( + ProtoSqlRow.create( + metadata, ImmutableList.of(stringValue("test"), bytesValue("test")))); + } + + @Test + public void addValue_failsOnDuplicateMetadata() { + SqlRowMerger merger = new SqlRowMerger(); + ColumnMetadata[] columns = {columnMetadata("str", stringType())}; + merger.push(metadata(columns)); + merger.push(partialResultSetWithToken(stringValue("test"))); + + assertThrows(IllegalStateException.class, () -> merger.push(metadata(columns))); + } + + @Test + public void pop_failsWhenQueueIsEmpty() { + SqlRowMerger merger = new SqlRowMerger(); + assertThrows(NullPointerException.class, merger::pop); + } +} diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergingCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergingCallableTest.java new file mode 100644 index 0000000000..761ca4090f --- /dev/null +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/sql/SqlRowMergingCallableTest.java @@ -0,0 +1,106 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigtable.data.v2.stub.sql; + +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.arrayValue; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.columnMetadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Type; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.int64Value; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.metadata; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.partialResultSetWithoutToken; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringType; +import static com.google.cloud.bigtable.data.v2.stub.sql.SqlProtoFactory.stringValue; +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import com.google.api.core.SettableApiFuture; +import com.google.api.gax.rpc.ServerStream; +import com.google.bigtable.v2.ExecuteQueryRequest; +import com.google.bigtable.v2.ExecuteQueryResponse; +import com.google.cloud.bigtable.data.v2.internal.ProtoResultSetMetadata; +import com.google.cloud.bigtable.data.v2.internal.ProtoSqlRow; +import com.google.cloud.bigtable.data.v2.internal.SqlRow; +import com.google.cloud.bigtable.data.v2.models.sql.ResultSetMetadata; +import com.google.cloud.bigtable.gaxx.testing.FakeStreamingApi.ServerStreamingStashCallable; +import com.google.common.collect.Lists; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * We have much more extensive testing of the row merging in {@link + * com.google.cloud.bigtable.data.v2.stub.sql.SqlRowMergerTest}. The Callable is a simple wrapper + * around this, so we don't need to duplicate all of the tests. + */ +@RunWith(JUnit4.class) +public class SqlRowMergingCallableTest { + + @Test + public void testMerging() { + ExecuteQueryResponse metadataResponse = + metadata( + columnMetadata("stringCol", stringType()), + columnMetadata("intCol", int64Type()), + columnMetadata("arrayCol", arrayType(stringType()))); + ServerStreamingStashCallable inner = + new ServerStreamingStashCallable<>( + Lists.newArrayList( + metadataResponse, + partialResultSetWithoutToken( + stringValue("foo"), + int64Value(1), + arrayValue(stringValue("foo"), stringValue("bar"))), + partialResultSetWithToken(stringValue("test"), int64Value(10), arrayValue()))); + + SqlRowMergingCallable rowMergingCallable = new SqlRowMergingCallable(inner); + ServerStream results = + rowMergingCallable.call( + ExecuteQueryCallContext.create( + ExecuteQueryRequest.getDefaultInstance(), SettableApiFuture.create())); + List resultsList = results.stream().collect(Collectors.toList()); + ResultSetMetadata metadata = ProtoResultSetMetadata.fromProto(metadataResponse.getMetadata()); + assertThat(resultsList) + .containsExactly( + ProtoSqlRow.create( + metadata, + Arrays.asList( + stringValue("foo"), + int64Value(1), + arrayValue(stringValue("foo"), stringValue("bar")))), + ProtoSqlRow.create( + metadata, Arrays.asList(stringValue("test"), int64Value(10), arrayValue()))); + } + + @Test + public void testError() { + // empty metadata is invalid + ServerStreamingStashCallable inner = + new ServerStreamingStashCallable<>(Lists.newArrayList(metadata())); + + SqlRowMergingCallable rowMergingCallable = new SqlRowMergingCallable(inner); + ServerStream results = + rowMergingCallable.call( + ExecuteQueryCallContext.create( + ExecuteQueryRequest.getDefaultInstance(), SettableApiFuture.create())); + + assertThrows(IllegalStateException.class, () -> results.iterator().next()); + } +} diff --git a/grpc-google-cloud-bigtable-v2/clirr-ignored-differences.xml b/grpc-google-cloud-bigtable-v2/clirr-ignored-differences.xml index 9f4bd315b7..ee16d40221 100644 --- a/grpc-google-cloud-bigtable-v2/clirr-ignored-differences.xml +++ b/grpc-google-cloud-bigtable-v2/clirr-ignored-differences.xml @@ -1,10 +1,10 @@ + - - 6001 - com/google/bigtable/v2/*Grpc - METHOD_* + 7012 + com/google/bigtable/v2/BigtableGrpc$AsyncService + *executeQuery(* diff --git a/grpc-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/BigtableGrpc.java b/grpc-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/BigtableGrpc.java index 70e6a14690..6917926d9f 100644 --- a/grpc-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/BigtableGrpc.java +++ b/grpc-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/BigtableGrpc.java @@ -432,6 +432,47 @@ private BigtableGrpc() {} return getReadChangeStreamMethod; } + private static volatile io.grpc.MethodDescriptor< + com.google.bigtable.v2.ExecuteQueryRequest, com.google.bigtable.v2.ExecuteQueryResponse> + getExecuteQueryMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "ExecuteQuery", + requestType = com.google.bigtable.v2.ExecuteQueryRequest.class, + responseType = com.google.bigtable.v2.ExecuteQueryResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING) + public static io.grpc.MethodDescriptor< + com.google.bigtable.v2.ExecuteQueryRequest, com.google.bigtable.v2.ExecuteQueryResponse> + getExecuteQueryMethod() { + io.grpc.MethodDescriptor< + com.google.bigtable.v2.ExecuteQueryRequest, com.google.bigtable.v2.ExecuteQueryResponse> + getExecuteQueryMethod; + if ((getExecuteQueryMethod = BigtableGrpc.getExecuteQueryMethod) == null) { + synchronized (BigtableGrpc.class) { + if ((getExecuteQueryMethod = BigtableGrpc.getExecuteQueryMethod) == null) { + BigtableGrpc.getExecuteQueryMethod = + getExecuteQueryMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ExecuteQuery")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.bigtable.v2.ExecuteQueryRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.bigtable.v2.ExecuteQueryResponse.getDefaultInstance())) + .setSchemaDescriptor(new BigtableMethodDescriptorSupplier("ExecuteQuery")) + .build(); + } + } + } + return getExecuteQueryMethod; + } + /** Creates a new async stub that supports all call types for the service */ public static BigtableStub newStub(io.grpc.Channel channel) { io.grpc.stub.AbstractStub.StubFactory factory = @@ -630,6 +671,20 @@ default void readChangeStream( io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall( getReadChangeStreamMethod(), responseObserver); } + + /** + * + * + *

+     * Executes a BTQL query against a particular Cloud Bigtable instance.
+     * 
+ */ + default void executeQuery( + com.google.bigtable.v2.ExecuteQueryRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall( + getExecuteQueryMethod(), responseObserver); + } } /** @@ -828,6 +883,22 @@ public void readChangeStream( request, responseObserver); } + + /** + * + * + *
+     * Executes a BTQL query against a particular Cloud Bigtable instance.
+     * 
+ */ + public void executeQuery( + com.google.bigtable.v2.ExecuteQueryRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncServerStreamingCall( + getChannel().newCall(getExecuteQueryMethod(), getCallOptions()), + request, + responseObserver); + } } /** @@ -989,6 +1060,19 @@ public java.util.Iterator readC return io.grpc.stub.ClientCalls.blockingServerStreamingCall( getChannel(), getReadChangeStreamMethod(), getCallOptions(), request); } + + /** + * + * + *
+     * Executes a BTQL query against a particular Cloud Bigtable instance.
+     * 
+ */ + public java.util.Iterator executeQuery( + com.google.bigtable.v2.ExecuteQueryRequest request) { + return io.grpc.stub.ClientCalls.blockingServerStreamingCall( + getChannel(), getExecuteQueryMethod(), getCallOptions(), request); + } } /** @@ -1081,6 +1165,7 @@ protected BigtableFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions private static final int METHODID_READ_MODIFY_WRITE_ROW = 6; private static final int METHODID_GENERATE_INITIAL_CHANGE_STREAM_PARTITIONS = 7; private static final int METHODID_READ_CHANGE_STREAM = 8; + private static final int METHODID_EXECUTE_QUERY = 9; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -1154,6 +1239,12 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_EXECUTE_QUERY: + serviceImpl.executeQuery( + (com.google.bigtable.v2.ExecuteQueryRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; default: throw new AssertionError(); } @@ -1231,6 +1322,12 @@ public static final io.grpc.ServerServiceDefinition bindService(AsyncService ser com.google.bigtable.v2.ReadChangeStreamRequest, com.google.bigtable.v2.ReadChangeStreamResponse>( service, METHODID_READ_CHANGE_STREAM))) + .addMethod( + getExecuteQueryMethod(), + io.grpc.stub.ServerCalls.asyncServerStreamingCall( + new MethodHandlers< + com.google.bigtable.v2.ExecuteQueryRequest, + com.google.bigtable.v2.ExecuteQueryResponse>(service, METHODID_EXECUTE_QUERY))) .build(); } @@ -1289,6 +1386,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { .addMethod(getReadModifyWriteRowMethod()) .addMethod(getGenerateInitialChangeStreamPartitionsMethod()) .addMethod(getReadChangeStreamMethod()) + .addMethod(getExecuteQueryMethod()) .build(); } } diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ArrayValue.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ArrayValue.java new file mode 100644 index 0000000000..9e11b19ba6 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ArrayValue.java @@ -0,0 +1,924 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * `ArrayValue` is an ordered list of `Value`.
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ArrayValue} + */ +public final class ArrayValue extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ArrayValue) + ArrayValueOrBuilder { + private static final long serialVersionUID = 0L; + // Use ArrayValue.newBuilder() to construct. + private ArrayValue(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ArrayValue() { + values_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ArrayValue(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ArrayValue_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ArrayValue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ArrayValue.class, + com.google.bigtable.v2.ArrayValue.Builder.class); + } + + public static final int VALUES_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private java.util.List values_; + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + @java.lang.Override + public java.util.List getValuesList() { + return values_; + } + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + @java.lang.Override + public java.util.List getValuesOrBuilderList() { + return values_; + } + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + @java.lang.Override + public int getValuesCount() { + return values_.size(); + } + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Value getValues(int index) { + return values_.get(index); + } + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.ValueOrBuilder getValuesOrBuilder(int index) { + return values_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < values_.size(); i++) { + output.writeMessage(1, values_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < values_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, values_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ArrayValue)) { + return super.equals(obj); + } + com.google.bigtable.v2.ArrayValue other = (com.google.bigtable.v2.ArrayValue) obj; + + if (!getValuesList().equals(other.getValuesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getValuesCount() > 0) { + hash = (37 * hash) + VALUES_FIELD_NUMBER; + hash = (53 * hash) + getValuesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ArrayValue parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ArrayValue parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ArrayValue parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ArrayValue parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ArrayValue prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * `ArrayValue` is an ordered list of `Value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ArrayValue} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ArrayValue) + com.google.bigtable.v2.ArrayValueOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ArrayValue_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ArrayValue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ArrayValue.class, + com.google.bigtable.v2.ArrayValue.Builder.class); + } + + // Construct using com.google.bigtable.v2.ArrayValue.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + } else { + values_ = null; + valuesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ArrayValue_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ArrayValue getDefaultInstanceForType() { + return com.google.bigtable.v2.ArrayValue.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ArrayValue build() { + com.google.bigtable.v2.ArrayValue result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ArrayValue buildPartial() { + com.google.bigtable.v2.ArrayValue result = new com.google.bigtable.v2.ArrayValue(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(com.google.bigtable.v2.ArrayValue result) { + if (valuesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + values_ = java.util.Collections.unmodifiableList(values_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.values_ = values_; + } else { + result.values_ = valuesBuilder_.build(); + } + } + + private void buildPartial0(com.google.bigtable.v2.ArrayValue result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ArrayValue) { + return mergeFrom((com.google.bigtable.v2.ArrayValue) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ArrayValue other) { + if (other == com.google.bigtable.v2.ArrayValue.getDefaultInstance()) return this; + if (valuesBuilder_ == null) { + if (!other.values_.isEmpty()) { + if (values_.isEmpty()) { + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureValuesIsMutable(); + values_.addAll(other.values_); + } + onChanged(); + } + } else { + if (!other.values_.isEmpty()) { + if (valuesBuilder_.isEmpty()) { + valuesBuilder_.dispose(); + valuesBuilder_ = null; + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + valuesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getValuesFieldBuilder() + : null; + } else { + valuesBuilder_.addAllMessages(other.values_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.bigtable.v2.Value m = + input.readMessage(com.google.bigtable.v2.Value.parser(), extensionRegistry); + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(m); + } else { + valuesBuilder_.addMessage(m); + } + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.util.List values_ = + java.util.Collections.emptyList(); + + private void ensureValuesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + values_ = new java.util.ArrayList(values_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder, + com.google.bigtable.v2.ValueOrBuilder> + valuesBuilder_; + + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public java.util.List getValuesList() { + if (valuesBuilder_ == null) { + return java.util.Collections.unmodifiableList(values_); + } else { + return valuesBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public int getValuesCount() { + if (valuesBuilder_ == null) { + return values_.size(); + } else { + return valuesBuilder_.getCount(); + } + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public com.google.bigtable.v2.Value getValues(int index) { + if (valuesBuilder_ == null) { + return values_.get(index); + } else { + return valuesBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder setValues(int index, com.google.bigtable.v2.Value value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.set(index, value); + onChanged(); + } else { + valuesBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder setValues(int index, com.google.bigtable.v2.Value.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.set(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder addValues(com.google.bigtable.v2.Value value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(value); + onChanged(); + } else { + valuesBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder addValues(int index, com.google.bigtable.v2.Value value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(index, value); + onChanged(); + } else { + valuesBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder addValues(com.google.bigtable.v2.Value.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder addValues(int index, com.google.bigtable.v2.Value.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder addAllValues(java.lang.Iterable values) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, values_); + onChanged(); + } else { + valuesBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder clearValues() { + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + valuesBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public Builder removeValues(int index) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.remove(index); + onChanged(); + } else { + valuesBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public com.google.bigtable.v2.Value.Builder getValuesBuilder(int index) { + return getValuesFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public com.google.bigtable.v2.ValueOrBuilder getValuesOrBuilder(int index) { + if (valuesBuilder_ == null) { + return values_.get(index); + } else { + return valuesBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public java.util.List + getValuesOrBuilderList() { + if (valuesBuilder_ != null) { + return valuesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(values_); + } + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public com.google.bigtable.v2.Value.Builder addValuesBuilder() { + return getValuesFieldBuilder().addBuilder(com.google.bigtable.v2.Value.getDefaultInstance()); + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public com.google.bigtable.v2.Value.Builder addValuesBuilder(int index) { + return getValuesFieldBuilder() + .addBuilder(index, com.google.bigtable.v2.Value.getDefaultInstance()); + } + /** + * + * + *
+     * The ordered elements in the array.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + public java.util.List getValuesBuilderList() { + return getValuesFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder, + com.google.bigtable.v2.ValueOrBuilder> + getValuesFieldBuilder() { + if (valuesBuilder_ == null) { + valuesBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder, + com.google.bigtable.v2.ValueOrBuilder>( + values_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + values_ = null; + } + return valuesBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ArrayValue) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ArrayValue) + private static final com.google.bigtable.v2.ArrayValue DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ArrayValue(); + } + + public static com.google.bigtable.v2.ArrayValue getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ArrayValue parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ArrayValue getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ArrayValueOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ArrayValueOrBuilder.java new file mode 100644 index 0000000000..f4503ab06a --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ArrayValueOrBuilder.java @@ -0,0 +1,77 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ArrayValueOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ArrayValue) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + java.util.List getValuesList(); + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + com.google.bigtable.v2.Value getValues(int index); + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + int getValuesCount(); + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + java.util.List getValuesOrBuilderList(); + /** + * + * + *
+   * The ordered elements in the array.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 1; + */ + com.google.bigtable.v2.ValueOrBuilder getValuesOrBuilder(int index); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/BigtableProto.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/BigtableProto.java index c62d4fe26f..20aa47d69e 100644 --- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/BigtableProto.java +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/BigtableProto.java @@ -136,6 +136,18 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_bigtable_v2_ReadChangeStreamResponse_CloseStream_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_bigtable_v2_ReadChangeStreamResponse_CloseStream_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ExecuteQueryRequest_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ExecuteQueryRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ExecuteQueryRequest_ParamsEntry_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ExecuteQueryRequest_ParamsEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ExecuteQueryResponse_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ExecuteQueryResponse_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -280,129 +292,150 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "H\n\023continuation_tokens\030\002 \003(\0132+.google.bi" + "gtable.v2.StreamContinuationToken\022;\n\016new" + "_partitions\030\003 \003(\0132#.google.bigtable.v2.S" - + "treamPartitionB\017\n\rstream_record2\357!\n\010Bigt" - + "able\022\333\003\n\010ReadRows\022#.google.bigtable.v2.R" - + "eadRowsRequest\032$.google.bigtable.v2.Read" - + "RowsResponse\"\201\003\332A\ntable_name\332A\031table_nam" - + "e,app_profile_id\202\323\344\223\002\232\001\"9/v2/{table_name" - + "=projects/*/instances/*/tables/*}:readRo" - + "ws:\001*ZZ\"U/v2/{authorized_view_name=proje" - + "cts/*/instances/*/tables/*/authorizedVie" - + "ws/*}:readRows:\001*\212\323\344\223\002\260\001\022:\n\ntable_name\022," + + "treamPartitionB\017\n\rstream_record\"\203\003\n\023Exec" + + "uteQueryRequest\022D\n\rinstance_name\030\001 \001(\tB-" + + "\340A\002\372A\'\n%bigtableadmin.googleapis.com/Ins" + + "tance\022\033\n\016app_profile_id\030\002 \001(\tB\003\340A\001\022\022\n\005qu" + + "ery\030\003 \001(\tB\003\340A\002\0227\n\014proto_format\030\004 \001(\0132\037.g" + + "oogle.bigtable.v2.ProtoFormatH\000\022\031\n\014resum" + + "e_token\030\010 \001(\014B\003\340A\001\022H\n\006params\030\007 \003(\01323.goo" + + "gle.bigtable.v2.ExecuteQueryRequest.Para" + + "msEntryB\003\340A\002\032H\n\013ParamsEntry\022\013\n\003key\030\001 \001(\t" + + "\022(\n\005value\030\002 \001(\0132\031.google.bigtable.v2.Val" + + "ue:\0028\001B\r\n\013data_format\"\226\001\n\024ExecuteQueryRe" + + "sponse\0229\n\010metadata\030\001 \001(\0132%.google.bigtab" + + "le.v2.ResultSetMetadataH\000\0227\n\007results\030\002 \001" + + "(\0132$.google.bigtable.v2.PartialResultSet" + + "H\000B\n\n\010response2\235$\n\010Bigtable\022\333\003\n\010ReadRows" + + "\022#.google.bigtable.v2.ReadRowsRequest\032$." + + "google.bigtable.v2.ReadRowsResponse\"\201\003\332A" + + "\ntable_name\332A\031table_name,app_profile_id\202" + + "\323\344\223\002\232\001\"9/v2/{table_name=projects/*/insta" + + "nces/*/tables/*}:readRows:\001*ZZ\"U/v2/{aut" + + "horized_view_name=projects/*/instances/*" + + "/tables/*/authorizedViews/*}:readRows:\001*" + + "\212\323\344\223\002\260\001\022:\n\ntable_name\022,{table_name=proje" + + "cts/*/instances/*/tables/*}\022\020\n\016app_profi" + + "le_id\022`\n\024authorized_view_name\022H{authoriz" + + "ed_view_name=projects/*/instances/*/tabl" + + "es/*/authorizedViews/*}0\001\022\356\003\n\rSampleRowK" + + "eys\022(.google.bigtable.v2.SampleRowKeysRe" + + "quest\032).google.bigtable.v2.SampleRowKeys" + + "Response\"\205\003\332A\ntable_name\332A\031table_name,ap" + + "p_profile_id\202\323\344\223\002\236\001\022>/v2/{table_name=pro" + + "jects/*/instances/*/tables/*}:sampleRowK" + + "eysZ\\\022Z/v2/{authorized_view_name=project" + + "s/*/instances/*/tables/*/authorizedViews" + + "/*}:sampleRowKeys\212\323\344\223\002\260\001\022:\n\ntable_name\022," + "{table_name=projects/*/instances/*/table" + "s/*}\022\020\n\016app_profile_id\022`\n\024authorized_vie" + "w_name\022H{authorized_view_name=projects/*" + "/instances/*/tables/*/authorizedViews/*}" - + "0\001\022\356\003\n\rSampleRowKeys\022(.google.bigtable.v" - + "2.SampleRowKeysRequest\032).google.bigtable" - + ".v2.SampleRowKeysResponse\"\205\003\332A\ntable_nam" - + "e\332A\031table_name,app_profile_id\202\323\344\223\002\236\001\022>/v" - + "2/{table_name=projects/*/instances/*/tab" - + "les/*}:sampleRowKeysZ\\\022Z/v2/{authorized_" - + "view_name=projects/*/instances/*/tables/" - + "*/authorizedViews/*}:sampleRowKeys\212\323\344\223\002\260" - + "\001\022:\n\ntable_name\022,{table_name=projects/*/" - + "instances/*/tables/*}\022\020\n\016app_profile_id\022" - + "`\n\024authorized_view_name\022H{authorized_vie" - + "w_name=projects/*/instances/*/tables/*/a" - + "uthorizedViews/*}0\001\022\202\004\n\tMutateRow\022$.goog" - + "le.bigtable.v2.MutateRowRequest\032%.google" - + ".bigtable.v2.MutateRowResponse\"\247\003\332A\034tabl" - + "e_name,row_key,mutations\332A+table_name,ro" - + "w_key,mutations,app_profile_id\202\323\344\223\002\234\001\":/" - + "v2/{table_name=projects/*/instances/*/ta" - + "bles/*}:mutateRow:\001*Z[\"V/v2/{authorized_" - + "view_name=projects/*/instances/*/tables/" - + "*/authorizedViews/*}:mutateRow:\001*\212\323\344\223\002\260\001" + + "0\001\022\202\004\n\tMutateRow\022$.google.bigtable.v2.Mu" + + "tateRowRequest\032%.google.bigtable.v2.Muta" + + "teRowResponse\"\247\003\332A\034table_name,row_key,mu" + + "tations\332A+table_name,row_key,mutations,a" + + "pp_profile_id\202\323\344\223\002\234\001\":/v2/{table_name=pr" + + "ojects/*/instances/*/tables/*}:mutateRow" + + ":\001*Z[\"V/v2/{authorized_view_name=project" + + "s/*/instances/*/tables/*/authorizedViews" + + "/*}:mutateRow:\001*\212\323\344\223\002\260\001\022:\n\ntable_name\022,{" + + "table_name=projects/*/instances/*/tables" + + "/*}\022\020\n\016app_profile_id\022`\n\024authorized_view" + + "_name\022H{authorized_view_name=projects/*/" + + "instances/*/tables/*/authorizedViews/*}\022" + + "\365\003\n\nMutateRows\022%.google.bigtable.v2.Muta" + + "teRowsRequest\032&.google.bigtable.v2.Mutat" + + "eRowsResponse\"\225\003\332A\022table_name,entries\332A!" + + "table_name,entries,app_profile_id\202\323\344\223\002\236\001" + + "\";/v2/{table_name=projects/*/instances/*" + + "/tables/*}:mutateRows:\001*Z\\\"W/v2/{authori" + + "zed_view_name=projects/*/instances/*/tab" + + "les/*/authorizedViews/*}:mutateRows:\001*\212\323" + + "\344\223\002\260\001\022:\n\ntable_name\022,{table_name=project" + + "s/*/instances/*/tables/*}\022\020\n\016app_profile" + + "_id\022`\n\024authorized_view_name\022H{authorized" + + "_view_name=projects/*/instances/*/tables" + + "/*/authorizedViews/*}0\001\022\366\004\n\021CheckAndMuta" + + "teRow\022,.google.bigtable.v2.CheckAndMutat" + + "eRowRequest\032-.google.bigtable.v2.CheckAn" + + "dMutateRowResponse\"\203\004\332ABtable_name,row_k" + + "ey,predicate_filter,true_mutations,false" + + "_mutations\332AQtable_name,row_key,predicat" + + "e_filter,true_mutations,false_mutations," + + "app_profile_id\202\323\344\223\002\254\001\"B/v2/{table_name=p" + + "rojects/*/instances/*/tables/*}:checkAnd" + + "MutateRow:\001*Zc\"^/v2/{authorized_view_nam" + + "e=projects/*/instances/*/tables/*/author" + + "izedViews/*}:checkAndMutateRow:\001*\212\323\344\223\002\260\001" + "\022:\n\ntable_name\022,{table_name=projects/*/i" + "nstances/*/tables/*}\022\020\n\016app_profile_id\022`" + "\n\024authorized_view_name\022H{authorized_view" + "_name=projects/*/instances/*/tables/*/au" - + "thorizedViews/*}\022\365\003\n\nMutateRows\022%.google" - + ".bigtable.v2.MutateRowsRequest\032&.google." - + "bigtable.v2.MutateRowsResponse\"\225\003\332A\022tabl" - + "e_name,entries\332A!table_name,entries,app_" - + "profile_id\202\323\344\223\002\236\001\";/v2/{table_name=proje" - + "cts/*/instances/*/tables/*}:mutateRows:\001" - + "*Z\\\"W/v2/{authorized_view_name=projects/" - + "*/instances/*/tables/*/authorizedViews/*" - + "}:mutateRows:\001*\212\323\344\223\002\260\001\022:\n\ntable_name\022,{t" - + "able_name=projects/*/instances/*/tables/" - + "*}\022\020\n\016app_profile_id\022`\n\024authorized_view_" - + "name\022H{authorized_view_name=projects/*/i" - + "nstances/*/tables/*/authorizedViews/*}0\001" - + "\022\366\004\n\021CheckAndMutateRow\022,.google.bigtable" - + ".v2.CheckAndMutateRowRequest\032-.google.bi" - + "gtable.v2.CheckAndMutateRowResponse\"\203\004\332A" - + "Btable_name,row_key,predicate_filter,tru" - + "e_mutations,false_mutations\332AQtable_name" - + ",row_key,predicate_filter,true_mutations" - + ",false_mutations,app_profile_id\202\323\344\223\002\254\001\"B" - + "/v2/{table_name=projects/*/instances/*/t" - + "ables/*}:checkAndMutateRow:\001*Zc\"^/v2/{au" - + "thorized_view_name=projects/*/instances/" - + "*/tables/*/authorizedViews/*}:checkAndMu" - + "tateRow:\001*\212\323\344\223\002\260\001\022:\n\ntable_name\022,{table_" - + "name=projects/*/instances/*/tables/*}\022\020\n" - + "\016app_profile_id\022`\n\024authorized_view_name\022" - + "H{authorized_view_name=projects/*/instan" - + "ces/*/tables/*/authorizedViews/*}\022\356\001\n\013Pi" - + "ngAndWarm\022&.google.bigtable.v2.PingAndWa" - + "rmRequest\032\'.google.bigtable.v2.PingAndWa" - + "rmResponse\"\215\001\332A\004name\332A\023name,app_profile_" - + "id\202\323\344\223\002+\"&/v2/{name=projects/*/instances" - + "/*}:ping:\001*\212\323\344\223\0029\022%\n\004name\022\035{name=project" - + "s/*/instances/*}\022\020\n\016app_profile_id\022\247\004\n\022R" - + "eadModifyWriteRow\022-.google.bigtable.v2.R" - + "eadModifyWriteRowRequest\032..google.bigtab" - + "le.v2.ReadModifyWriteRowResponse\"\261\003\332A\030ta" - + "ble_name,row_key,rules\332A\'table_name,row_" - + "key,rules,app_profile_id\202\323\344\223\002\256\001\"C/v2/{ta" - + "ble_name=projects/*/instances/*/tables/*" - + "}:readModifyWriteRow:\001*Zd\"_/v2/{authoriz" - + "ed_view_name=projects/*/instances/*/tabl" - + "es/*/authorizedViews/*}:readModifyWriteR" - + "ow:\001*\212\323\344\223\002\260\001\022:\n\ntable_name\022,{table_name=" - + "projects/*/instances/*/tables/*}\022\020\n\016app_" - + "profile_id\022`\n\024authorized_view_name\022H{aut" - + "horized_view_name=projects/*/instances/*" - + "/tables/*/authorizedViews/*}\022\273\002\n%Generat" - + "eInitialChangeStreamPartitions\022@.google." - + "bigtable.v2.GenerateInitialChangeStreamP" - + "artitionsRequest\032A.google.bigtable.v2.Ge" - + "nerateInitialChangeStreamPartitionsRespo" - + "nse\"\212\001\332A\ntable_name\332A\031table_name,app_pro" - + "file_id\202\323\344\223\002[\"V/v2/{table_name=projects/" - + "*/instances/*/tables/*}:generateInitialC" - + "hangeStreamPartitions:\001*0\001\022\346\001\n\020ReadChang" - + "eStream\022+.google.bigtable.v2.ReadChangeS" - + "treamRequest\032,.google.bigtable.v2.ReadCh" - + "angeStreamResponse\"u\332A\ntable_name\332A\031tabl" - + "e_name,app_profile_id\202\323\344\223\002F\"A/v2/{table_" - + "name=projects/*/instances/*/tables/*}:re" - + "adChangeStream:\001*0\001\032\333\002\312A\027bigtable.google" - + "apis.com\322A\275\002https://www.googleapis.com/a" - + "uth/bigtable.data,https://www.googleapis" - + ".com/auth/bigtable.data.readonly,https:/" - + "/www.googleapis.com/auth/cloud-bigtable." - + "data,https://www.googleapis.com/auth/clo" - + "ud-bigtable.data.readonly,https://www.go" - + "ogleapis.com/auth/cloud-platform,https:/" - + "/www.googleapis.com/auth/cloud-platform." - + "read-onlyB\366\003\n\026com.google.bigtable.v2B\rBi" - + "gtableProtoP\001Z:google.golang.org/genprot" - + "o/googleapis/bigtable/v2;bigtable\252\002\030Goog" - + "le.Cloud.Bigtable.V2\312\002\030Google\\Cloud\\Bigt" - + "able\\V2\352\002\033Google::Cloud::Bigtable::V2\352AP" - + "\n%bigtableadmin.googleapis.com/Instance\022" - + "\'projects/{project}/instances/{instance}" - + "\352A\\\n\"bigtableadmin.googleapis.com/Table\022" - + "6projects/{project}/instances/{instance}" - + "/tables/{table}\352A\207\001\n+bigtableadmin.googl" - + "eapis.com/AuthorizedView\022Xprojects/{proj" - + "ect}/instances/{instance}/tables/{table}" - + "/authorizedViews/{authorized_view}b\006prot" - + "o3" + + "thorizedViews/*}\022\356\001\n\013PingAndWarm\022&.googl" + + "e.bigtable.v2.PingAndWarmRequest\032\'.googl" + + "e.bigtable.v2.PingAndWarmResponse\"\215\001\332A\004n" + + "ame\332A\023name,app_profile_id\202\323\344\223\002+\"&/v2/{na" + + "me=projects/*/instances/*}:ping:\001*\212\323\344\223\0029" + + "\022%\n\004name\022\035{name=projects/*/instances/*}\022" + + "\020\n\016app_profile_id\022\247\004\n\022ReadModifyWriteRow" + + "\022-.google.bigtable.v2.ReadModifyWriteRow" + + "Request\032..google.bigtable.v2.ReadModifyW" + + "riteRowResponse\"\261\003\332A\030table_name,row_key," + + "rules\332A\'table_name,row_key,rules,app_pro" + + "file_id\202\323\344\223\002\256\001\"C/v2/{table_name=projects" + + "/*/instances/*/tables/*}:readModifyWrite" + + "Row:\001*Zd\"_/v2/{authorized_view_name=proj" + + "ects/*/instances/*/tables/*/authorizedVi" + + "ews/*}:readModifyWriteRow:\001*\212\323\344\223\002\260\001\022:\n\nt" + + "able_name\022,{table_name=projects/*/instan" + + "ces/*/tables/*}\022\020\n\016app_profile_id\022`\n\024aut" + + "horized_view_name\022H{authorized_view_name" + + "=projects/*/instances/*/tables/*/authori" + + "zedViews/*}\022\273\002\n%GenerateInitialChangeStr" + + "eamPartitions\022@.google.bigtable.v2.Gener" + + "ateInitialChangeStreamPartitionsRequest\032" + + "A.google.bigtable.v2.GenerateInitialChan" + + "geStreamPartitionsResponse\"\212\001\332A\ntable_na" + + "me\332A\031table_name,app_profile_id\202\323\344\223\002[\"V/v" + + "2/{table_name=projects/*/instances/*/tab" + + "les/*}:generateInitialChangeStreamPartit" + + "ions:\001*0\001\022\346\001\n\020ReadChangeStream\022+.google." + + "bigtable.v2.ReadChangeStreamRequest\032,.go" + + "ogle.bigtable.v2.ReadChangeStreamRespons" + + "e\"u\332A\ntable_name\332A\031table_name,app_profil" + + "e_id\202\323\344\223\002F\"A/v2/{table_name=projects/*/i" + + "nstances/*/tables/*}:readChangeStream:\001*" + + "0\001\022\253\002\n\014ExecuteQuery\022\'.google.bigtable.v2" + + ".ExecuteQueryRequest\032(.google.bigtable.v" + + "2.ExecuteQueryResponse\"\305\001\332A\023instance_nam" + + "e,query\332A\"instance_name,query,app_profil" + + "e_id\202\323\344\223\002<\"7/v2/{instance_name=projects/" + + "*/instances/*}:executeQuery:\001*\212\323\344\223\002B\022.\n\r" + + "instance_name\022\035{name=projects/*/instance" + + "s/*}\022\020\n\016app_profile_id0\001\032\333\002\312A\027bigtable.g" + + "oogleapis.com\322A\275\002https://www.googleapis." + + "com/auth/bigtable.data,https://www.googl" + + "eapis.com/auth/bigtable.data.readonly,ht" + + "tps://www.googleapis.com/auth/cloud-bigt" + + "able.data,https://www.googleapis.com/aut" + + "h/cloud-bigtable.data.readonly,https://w" + + "ww.googleapis.com/auth/cloud-platform,ht" + + "tps://www.googleapis.com/auth/cloud-plat" + + "form.read-onlyB\366\003\n\026com.google.bigtable.v" + + "2B\rBigtableProtoP\001Z:google.golang.org/ge" + + "nproto/googleapis/bigtable/v2;bigtable\252\002" + + "\030Google.Cloud.Bigtable.V2\312\002\030Google\\Cloud" + + "\\Bigtable\\V2\352\002\033Google::Cloud::Bigtable::" + + "V2\352AP\n%bigtableadmin.googleapis.com/Inst" + + "ance\022\'projects/{project}/instances/{inst" + + "ance}\352A\\\n\"bigtableadmin.googleapis.com/T" + + "able\0226projects/{project}/instances/{inst" + + "ance}/tables/{table}\352A\207\001\n+bigtableadmin." + + "googleapis.com/AuthorizedView\022Xprojects/" + + "{project}/instances/{instance}/tables/{t" + + "able}/authorizedViews/{authorized_view}b" + + "\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -679,6 +712,36 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "Status", "ContinuationTokens", "NewPartitions", }); + internal_static_google_bigtable_v2_ExecuteQueryRequest_descriptor = + getDescriptor().getMessageTypes().get(19); + internal_static_google_bigtable_v2_ExecuteQueryRequest_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ExecuteQueryRequest_descriptor, + new java.lang.String[] { + "InstanceName", + "AppProfileId", + "Query", + "ProtoFormat", + "ResumeToken", + "Params", + "DataFormat", + }); + internal_static_google_bigtable_v2_ExecuteQueryRequest_ParamsEntry_descriptor = + internal_static_google_bigtable_v2_ExecuteQueryRequest_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_ExecuteQueryRequest_ParamsEntry_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ExecuteQueryRequest_ParamsEntry_descriptor, + new java.lang.String[] { + "Key", "Value", + }); + internal_static_google_bigtable_v2_ExecuteQueryResponse_descriptor = + getDescriptor().getMessageTypes().get(20); + internal_static_google_bigtable_v2_ExecuteQueryResponse_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ExecuteQueryResponse_descriptor, + new java.lang.String[] { + "Metadata", "Results", "Response", + }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(com.google.api.ClientProto.defaultHost); diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ColumnMetadata.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ColumnMetadata.java new file mode 100644 index 0000000000..2db8895324 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ColumnMetadata.java @@ -0,0 +1,892 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * Describes a column in a Bigtable Query Language result set.
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ColumnMetadata} + */ +public final class ColumnMetadata extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ColumnMetadata) + ColumnMetadataOrBuilder { + private static final long serialVersionUID = 0L; + // Use ColumnMetadata.newBuilder() to construct. + private ColumnMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ColumnMetadata() { + name_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ColumnMetadata(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ColumnMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ColumnMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ColumnMetadata.class, + com.google.bigtable.v2.ColumnMetadata.Builder.class); + } + + private int bitField0_; + public static final int NAME_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; + /** + * + * + *
+   * The name of the column.
+   * 
+ * + * string name = 1; + * + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + 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(); + name_ = s; + return s; + } + } + /** + * + * + *
+   * The name of the column.
+   * 
+ * + * string name = 1; + * + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TYPE_FIELD_NUMBER = 2; + private com.google.bigtable.v2.Type type_; + /** + * + * + *
+   * The type of the column.
+   * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return Whether the type field is set. + */ + @java.lang.Override + public boolean hasType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+   * The type of the column.
+   * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return The type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type getType() { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + /** + * + * + *
+   * The type of the column.
+   * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder() { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(2, getType()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getType()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ColumnMetadata)) { + return super.equals(obj); + } + com.google.bigtable.v2.ColumnMetadata other = (com.google.bigtable.v2.ColumnMetadata) obj; + + if (!getName().equals(other.getName())) return false; + if (hasType() != other.hasType()) return false; + if (hasType()) { + if (!getType().equals(other.getType())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + if (hasType()) { + hash = (37 * hash) + TYPE_FIELD_NUMBER; + hash = (53 * hash) + getType().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ColumnMetadata parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ColumnMetadata parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ColumnMetadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ColumnMetadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Describes a column in a Bigtable Query Language result set.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ColumnMetadata} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ColumnMetadata) + com.google.bigtable.v2.ColumnMetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ColumnMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ColumnMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ColumnMetadata.class, + com.google.bigtable.v2.ColumnMetadata.Builder.class); + } + + // Construct using com.google.bigtable.v2.ColumnMetadata.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getTypeFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + name_ = ""; + type_ = null; + if (typeBuilder_ != null) { + typeBuilder_.dispose(); + typeBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ColumnMetadata_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ColumnMetadata getDefaultInstanceForType() { + return com.google.bigtable.v2.ColumnMetadata.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ColumnMetadata build() { + com.google.bigtable.v2.ColumnMetadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ColumnMetadata buildPartial() { + com.google.bigtable.v2.ColumnMetadata result = + new com.google.bigtable.v2.ColumnMetadata(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.ColumnMetadata result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.type_ = typeBuilder_ == null ? type_ : typeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ColumnMetadata) { + return mergeFrom((com.google.bigtable.v2.ColumnMetadata) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ColumnMetadata other) { + if (other == com.google.bigtable.v2.ColumnMetadata.getDefaultInstance()) return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.hasType()) { + mergeType(other.getType()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + input.readMessage(getTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.lang.Object name_ = ""; + /** + * + * + *
+     * The name of the column.
+     * 
+ * + * string name = 1; + * + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * The name of the column.
+     * 
+ * + * string name = 1; + * + * @return The bytes for name. + */ + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * The name of the column.
+     * 
+ * + * string name = 1; + * + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The name of the column.
+     * 
+ * + * string name = 1; + * + * @return This builder for chaining. + */ + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
+     * The name of the column.
+     * 
+ * + * string name = 1; + * + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private com.google.bigtable.v2.Type type_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + typeBuilder_; + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return Whether the type field is set. + */ + public boolean hasType() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return The type. + */ + public com.google.bigtable.v2.Type getType() { + if (typeBuilder_ == null) { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } else { + return typeBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public Builder setType(com.google.bigtable.v2.Type value) { + if (typeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + type_ = value; + } else { + typeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public Builder setType(com.google.bigtable.v2.Type.Builder builderForValue) { + if (typeBuilder_ == null) { + type_ = builderForValue.build(); + } else { + typeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public Builder mergeType(com.google.bigtable.v2.Type value) { + if (typeBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) + && type_ != null + && type_ != com.google.bigtable.v2.Type.getDefaultInstance()) { + getTypeBuilder().mergeFrom(value); + } else { + type_ = value; + } + } else { + typeBuilder_.mergeFrom(value); + } + if (type_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public Builder clearType() { + bitField0_ = (bitField0_ & ~0x00000002); + type_ = null; + if (typeBuilder_ != null) { + typeBuilder_.dispose(); + typeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public com.google.bigtable.v2.Type.Builder getTypeBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder() { + if (typeBuilder_ != null) { + return typeBuilder_.getMessageOrBuilder(); + } else { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + } + /** + * + * + *
+     * The type of the column.
+     * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + getTypeFieldBuilder() { + if (typeBuilder_ == null) { + typeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder>(getType(), getParentForChildren(), isClean()); + type_ = null; + } + return typeBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ColumnMetadata) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ColumnMetadata) + private static final com.google.bigtable.v2.ColumnMetadata DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ColumnMetadata(); + } + + public static com.google.bigtable.v2.ColumnMetadata getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ColumnMetadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ColumnMetadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ColumnMetadataOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ColumnMetadataOrBuilder.java new file mode 100644 index 0000000000..3645b44245 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ColumnMetadataOrBuilder.java @@ -0,0 +1,86 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ColumnMetadataOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ColumnMetadata) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * The name of the column.
+   * 
+ * + * string name = 1; + * + * @return The name. + */ + java.lang.String getName(); + /** + * + * + *
+   * The name of the column.
+   * 
+ * + * string name = 1; + * + * @return The bytes for name. + */ + com.google.protobuf.ByteString getNameBytes(); + + /** + * + * + *
+   * The type of the column.
+   * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return Whether the type field is set. + */ + boolean hasType(); + /** + * + * + *
+   * The type of the column.
+   * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return The type. + */ + com.google.bigtable.v2.Type getType(); + /** + * + * + *
+   * The type of the column.
+   * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder(); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/DataProto.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/DataProto.java index 7c48796856..205688dfa6 100644 --- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/DataProto.java +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/DataProto.java @@ -48,6 +48,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_bigtable_v2_Value_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_bigtable_v2_Value_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ArrayValue_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ArrayValue_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_bigtable_v2_RowRange_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -124,6 +128,34 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_bigtable_v2_StreamContinuationToken_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_bigtable_v2_StreamContinuationToken_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ProtoFormat_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ProtoFormat_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ColumnMetadata_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ColumnMetadata_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ProtoSchema_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ProtoSchema_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ResultSetMetadata_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ResultSetMetadata_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ProtoRows_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ProtoRows_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ProtoRowsBatch_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_ProtoRowsBatch_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_PartialResultSet_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_PartialResultSet_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -135,90 +167,113 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { java.lang.String[] descriptorData = { "\n\035google/bigtable/v2/data.proto\022\022google." + "bigtable.v2\032\037google/api/field_behavior.p" - + "roto\"@\n\003Row\022\013\n\003key\030\001 \001(\014\022,\n\010families\030\002 \003" - + "(\0132\032.google.bigtable.v2.Family\"C\n\006Family" - + "\022\014\n\004name\030\001 \001(\t\022+\n\007columns\030\002 \003(\0132\032.google" - + ".bigtable.v2.Column\"D\n\006Column\022\021\n\tqualifi" - + "er\030\001 \001(\014\022\'\n\005cells\030\002 \003(\0132\030.google.bigtabl" - + "e.v2.Cell\"?\n\004Cell\022\030\n\020timestamp_micros\030\001 " - + "\001(\003\022\r\n\005value\030\002 \001(\014\022\016\n\006labels\030\003 \003(\t\"Y\n\005Va" - + "lue\022\023\n\traw_value\030\010 \001(\014H\000\022\036\n\024raw_timestam" - + "p_micros\030\t \001(\003H\000\022\023\n\tint_value\030\006 \001(\003H\000B\006\n" - + "\004kind\"\212\001\n\010RowRange\022\032\n\020start_key_closed\030\001" - + " \001(\014H\000\022\030\n\016start_key_open\030\002 \001(\014H\000\022\026\n\014end_" - + "key_open\030\003 \001(\014H\001\022\030\n\016end_key_closed\030\004 \001(\014" - + "H\001B\013\n\tstart_keyB\t\n\007end_key\"L\n\006RowSet\022\020\n\010" - + "row_keys\030\001 \003(\014\0220\n\nrow_ranges\030\002 \003(\0132\034.goo" - + "gle.bigtable.v2.RowRange\"\306\001\n\013ColumnRange" - + "\022\023\n\013family_name\030\001 \001(\t\022 \n\026start_qualifier" - + "_closed\030\002 \001(\014H\000\022\036\n\024start_qualifier_open\030" - + "\003 \001(\014H\000\022\036\n\024end_qualifier_closed\030\004 \001(\014H\001\022" - + "\034\n\022end_qualifier_open\030\005 \001(\014H\001B\021\n\017start_q" - + "ualifierB\017\n\rend_qualifier\"N\n\016TimestampRa" - + "nge\022\036\n\026start_timestamp_micros\030\001 \001(\003\022\034\n\024e" - + "nd_timestamp_micros\030\002 \001(\003\"\230\001\n\nValueRange" - + "\022\034\n\022start_value_closed\030\001 \001(\014H\000\022\032\n\020start_" - + "value_open\030\002 \001(\014H\000\022\032\n\020end_value_closed\030\003" - + " \001(\014H\001\022\030\n\016end_value_open\030\004 \001(\014H\001B\r\n\013star" - + "t_valueB\013\n\tend_value\"\337\010\n\tRowFilter\0224\n\005ch" - + "ain\030\001 \001(\0132#.google.bigtable.v2.RowFilter" - + ".ChainH\000\022>\n\ninterleave\030\002 \001(\0132(.google.bi" - + "gtable.v2.RowFilter.InterleaveH\000\022<\n\tcond" - + "ition\030\003 \001(\0132\'.google.bigtable.v2.RowFilt" - + "er.ConditionH\000\022\016\n\004sink\030\020 \001(\010H\000\022\031\n\017pass_a" - + "ll_filter\030\021 \001(\010H\000\022\032\n\020block_all_filter\030\022 " - + "\001(\010H\000\022\036\n\024row_key_regex_filter\030\004 \001(\014H\000\022\033\n" - + "\021row_sample_filter\030\016 \001(\001H\000\022\"\n\030family_nam" - + "e_regex_filter\030\005 \001(\tH\000\022\'\n\035column_qualifi" - + "er_regex_filter\030\006 \001(\014H\000\022>\n\023column_range_" - + "filter\030\007 \001(\0132\037.google.bigtable.v2.Column" - + "RangeH\000\022D\n\026timestamp_range_filter\030\010 \001(\0132" - + "\".google.bigtable.v2.TimestampRangeH\000\022\034\n" - + "\022value_regex_filter\030\t \001(\014H\000\022<\n\022value_ran" - + "ge_filter\030\017 \001(\0132\036.google.bigtable.v2.Val" - + "ueRangeH\000\022%\n\033cells_per_row_offset_filter" - + "\030\n \001(\005H\000\022$\n\032cells_per_row_limit_filter\030\013" - + " \001(\005H\000\022\'\n\035cells_per_column_limit_filter\030" - + "\014 \001(\005H\000\022!\n\027strip_value_transformer\030\r \001(\010" - + "H\000\022!\n\027apply_label_transformer\030\023 \001(\tH\000\0327\n" - + "\005Chain\022.\n\007filters\030\001 \003(\0132\035.google.bigtabl" - + "e.v2.RowFilter\032<\n\nInterleave\022.\n\007filters\030" - + "\001 \003(\0132\035.google.bigtable.v2.RowFilter\032\255\001\n" - + "\tCondition\0227\n\020predicate_filter\030\001 \001(\0132\035.g" - + "oogle.bigtable.v2.RowFilter\0222\n\013true_filt" - + "er\030\002 \001(\0132\035.google.bigtable.v2.RowFilter\022" - + "3\n\014false_filter\030\003 \001(\0132\035.google.bigtable." - + "v2.RowFilterB\010\n\006filter\"\270\006\n\010Mutation\0228\n\010s" - + "et_cell\030\001 \001(\0132$.google.bigtable.v2.Mutat" - + "ion.SetCellH\000\022=\n\013add_to_cell\030\005 \001(\0132&.goo" - + "gle.bigtable.v2.Mutation.AddToCellH\000\022K\n\022" - + "delete_from_column\030\002 \001(\0132-.google.bigtab" - + "le.v2.Mutation.DeleteFromColumnH\000\022K\n\022del" - + "ete_from_family\030\003 \001(\0132-.google.bigtable." - + "v2.Mutation.DeleteFromFamilyH\000\022E\n\017delete" - + "_from_row\030\004 \001(\0132*.google.bigtable.v2.Mut" - + "ation.DeleteFromRowH\000\032a\n\007SetCell\022\023\n\013fami" - + "ly_name\030\001 \001(\t\022\030\n\020column_qualifier\030\002 \001(\014\022" - + "\030\n\020timestamp_micros\030\003 \001(\003\022\r\n\005value\030\004 \001(\014" - + "\032\255\001\n\tAddToCell\022\023\n\013family_name\030\001 \001(\t\0223\n\020c" - + "olumn_qualifier\030\002 \001(\0132\031.google.bigtable." - + "v2.Value\022,\n\ttimestamp\030\003 \001(\0132\031.google.big" - + "table.v2.Value\022(\n\005input\030\004 \001(\0132\031.google.b" - + "igtable.v2.Value\032y\n\020DeleteFromColumn\022\023\n\013" - + "family_name\030\001 \001(\t\022\030\n\020column_qualifier\030\002 " - + "\001(\014\0226\n\ntime_range\030\003 \001(\0132\".google.bigtabl" - + "e.v2.TimestampRange\032\'\n\020DeleteFromFamily\022" - + "\023\n\013family_name\030\001 \001(\t\032\017\n\rDeleteFromRowB\n\n" - + "\010mutation\"\200\001\n\023ReadModifyWriteRule\022\023\n\013fam" - + "ily_name\030\001 \001(\t\022\030\n\020column_qualifier\030\002 \001(\014" - + "\022\026\n\014append_value\030\003 \001(\014H\000\022\032\n\020increment_am" - + "ount\030\004 \001(\003H\000B\006\n\004rule\"B\n\017StreamPartition\022" - + "/\n\trow_range\030\001 \001(\0132\034.google.bigtable.v2." - + "RowRange\"W\n\030StreamContinuationTokens\022;\n\006" - + "tokens\030\001 \003(\0132+.google.bigtable.v2.Stream" - + "ContinuationToken\"`\n\027StreamContinuationT" - + "oken\0226\n\tpartition\030\001 \001(\0132#.google.bigtabl" - + "e.v2.StreamPartition\022\r\n\005token\030\002 \001(\tB\265\001\n\026" + + "roto\032\036google/bigtable/v2/types.proto\032\037go" + + "ogle/protobuf/timestamp.proto\032\026google/ty" + + "pe/date.proto\"@\n\003Row\022\013\n\003key\030\001 \001(\014\022,\n\010fam" + + "ilies\030\002 \003(\0132\032.google.bigtable.v2.Family\"" + + "C\n\006Family\022\014\n\004name\030\001 \001(\t\022+\n\007columns\030\002 \003(\013" + + "2\032.google.bigtable.v2.Column\"D\n\006Column\022\021" + + "\n\tqualifier\030\001 \001(\014\022\'\n\005cells\030\002 \003(\0132\030.googl" + + "e.bigtable.v2.Cell\"?\n\004Cell\022\030\n\020timestamp_" + + "micros\030\001 \001(\003\022\r\n\005value\030\002 \001(\014\022\016\n\006labels\030\003 " + + "\003(\t\"\364\002\n\005Value\022&\n\004type\030\007 \001(\0132\030.google.big" + + "table.v2.Type\022\023\n\traw_value\030\010 \001(\014H\000\022\036\n\024ra" + + "w_timestamp_micros\030\t \001(\003H\000\022\025\n\013bytes_valu" + + "e\030\002 \001(\014H\000\022\026\n\014string_value\030\003 \001(\tH\000\022\023\n\tint" + + "_value\030\006 \001(\003H\000\022\024\n\nbool_value\030\n \001(\010H\000\022\025\n\013" + + "float_value\030\013 \001(\001H\000\0225\n\017timestamp_value\030\014" + + " \001(\0132\032.google.protobuf.TimestampH\000\022\'\n\nda" + + "te_value\030\r \001(\0132\021.google.type.DateH\000\0225\n\013a" + + "rray_value\030\004 \001(\0132\036.google.bigtable.v2.Ar" + + "rayValueH\000B\006\n\004kind\"7\n\nArrayValue\022)\n\006valu" + + "es\030\001 \003(\0132\031.google.bigtable.v2.Value\"\212\001\n\010" + + "RowRange\022\032\n\020start_key_closed\030\001 \001(\014H\000\022\030\n\016" + + "start_key_open\030\002 \001(\014H\000\022\026\n\014end_key_open\030\003" + + " \001(\014H\001\022\030\n\016end_key_closed\030\004 \001(\014H\001B\013\n\tstar" + + "t_keyB\t\n\007end_key\"L\n\006RowSet\022\020\n\010row_keys\030\001" + + " \003(\014\0220\n\nrow_ranges\030\002 \003(\0132\034.google.bigtab" + + "le.v2.RowRange\"\306\001\n\013ColumnRange\022\023\n\013family" + + "_name\030\001 \001(\t\022 \n\026start_qualifier_closed\030\002 " + + "\001(\014H\000\022\036\n\024start_qualifier_open\030\003 \001(\014H\000\022\036\n" + + "\024end_qualifier_closed\030\004 \001(\014H\001\022\034\n\022end_qua" + + "lifier_open\030\005 \001(\014H\001B\021\n\017start_qualifierB\017" + + "\n\rend_qualifier\"N\n\016TimestampRange\022\036\n\026sta" + + "rt_timestamp_micros\030\001 \001(\003\022\034\n\024end_timesta" + + "mp_micros\030\002 \001(\003\"\230\001\n\nValueRange\022\034\n\022start_" + + "value_closed\030\001 \001(\014H\000\022\032\n\020start_value_open" + + "\030\002 \001(\014H\000\022\032\n\020end_value_closed\030\003 \001(\014H\001\022\030\n\016" + + "end_value_open\030\004 \001(\014H\001B\r\n\013start_valueB\013\n" + + "\tend_value\"\337\010\n\tRowFilter\0224\n\005chain\030\001 \001(\0132" + + "#.google.bigtable.v2.RowFilter.ChainH\000\022>" + + "\n\ninterleave\030\002 \001(\0132(.google.bigtable.v2." + + "RowFilter.InterleaveH\000\022<\n\tcondition\030\003 \001(" + + "\0132\'.google.bigtable.v2.RowFilter.Conditi" + + "onH\000\022\016\n\004sink\030\020 \001(\010H\000\022\031\n\017pass_all_filter\030" + + "\021 \001(\010H\000\022\032\n\020block_all_filter\030\022 \001(\010H\000\022\036\n\024r" + + "ow_key_regex_filter\030\004 \001(\014H\000\022\033\n\021row_sampl" + + "e_filter\030\016 \001(\001H\000\022\"\n\030family_name_regex_fi" + + "lter\030\005 \001(\tH\000\022\'\n\035column_qualifier_regex_f" + + "ilter\030\006 \001(\014H\000\022>\n\023column_range_filter\030\007 \001" + + "(\0132\037.google.bigtable.v2.ColumnRangeH\000\022D\n" + + "\026timestamp_range_filter\030\010 \001(\0132\".google.b" + + "igtable.v2.TimestampRangeH\000\022\034\n\022value_reg" + + "ex_filter\030\t \001(\014H\000\022<\n\022value_range_filter\030" + + "\017 \001(\0132\036.google.bigtable.v2.ValueRangeH\000\022" + + "%\n\033cells_per_row_offset_filter\030\n \001(\005H\000\022$" + + "\n\032cells_per_row_limit_filter\030\013 \001(\005H\000\022\'\n\035" + + "cells_per_column_limit_filter\030\014 \001(\005H\000\022!\n" + + "\027strip_value_transformer\030\r \001(\010H\000\022!\n\027appl" + + "y_label_transformer\030\023 \001(\tH\000\0327\n\005Chain\022.\n\007" + + "filters\030\001 \003(\0132\035.google.bigtable.v2.RowFi" + + "lter\032<\n\nInterleave\022.\n\007filters\030\001 \003(\0132\035.go" + + "ogle.bigtable.v2.RowFilter\032\255\001\n\tCondition" + + "\0227\n\020predicate_filter\030\001 \001(\0132\035.google.bigt" + + "able.v2.RowFilter\0222\n\013true_filter\030\002 \001(\0132\035" + + ".google.bigtable.v2.RowFilter\0223\n\014false_f" + + "ilter\030\003 \001(\0132\035.google.bigtable.v2.RowFilt" + + "erB\010\n\006filter\"\270\006\n\010Mutation\0228\n\010set_cell\030\001 " + + "\001(\0132$.google.bigtable.v2.Mutation.SetCel" + + "lH\000\022=\n\013add_to_cell\030\005 \001(\0132&.google.bigtab" + + "le.v2.Mutation.AddToCellH\000\022K\n\022delete_fro" + + "m_column\030\002 \001(\0132-.google.bigtable.v2.Muta" + + "tion.DeleteFromColumnH\000\022K\n\022delete_from_f" + + "amily\030\003 \001(\0132-.google.bigtable.v2.Mutatio" + + "n.DeleteFromFamilyH\000\022E\n\017delete_from_row\030" + + "\004 \001(\0132*.google.bigtable.v2.Mutation.Dele" + + "teFromRowH\000\032a\n\007SetCell\022\023\n\013family_name\030\001 " + + "\001(\t\022\030\n\020column_qualifier\030\002 \001(\014\022\030\n\020timesta" + + "mp_micros\030\003 \001(\003\022\r\n\005value\030\004 \001(\014\032\255\001\n\tAddTo" + + "Cell\022\023\n\013family_name\030\001 \001(\t\0223\n\020column_qual" + + "ifier\030\002 \001(\0132\031.google.bigtable.v2.Value\022," + + "\n\ttimestamp\030\003 \001(\0132\031.google.bigtable.v2.V" + + "alue\022(\n\005input\030\004 \001(\0132\031.google.bigtable.v2" + + ".Value\032y\n\020DeleteFromColumn\022\023\n\013family_nam" + + "e\030\001 \001(\t\022\030\n\020column_qualifier\030\002 \001(\014\0226\n\ntim" + + "e_range\030\003 \001(\0132\".google.bigtable.v2.Times" + + "tampRange\032\'\n\020DeleteFromFamily\022\023\n\013family_" + + "name\030\001 \001(\t\032\017\n\rDeleteFromRowB\n\n\010mutation\"" + + "\200\001\n\023ReadModifyWriteRule\022\023\n\013family_name\030\001" + + " \001(\t\022\030\n\020column_qualifier\030\002 \001(\014\022\026\n\014append" + + "_value\030\003 \001(\014H\000\022\032\n\020increment_amount\030\004 \001(\003" + + "H\000B\006\n\004rule\"B\n\017StreamPartition\022/\n\trow_ran" + + "ge\030\001 \001(\0132\034.google.bigtable.v2.RowRange\"W" + + "\n\030StreamContinuationTokens\022;\n\006tokens\030\001 \003" + + "(\0132+.google.bigtable.v2.StreamContinuati" + + "onToken\"`\n\027StreamContinuationToken\0226\n\tpa" + + "rtition\030\001 \001(\0132#.google.bigtable.v2.Strea" + + "mPartition\022\r\n\005token\030\002 \001(\t\"\r\n\013ProtoFormat" + + "\"F\n\016ColumnMetadata\022\014\n\004name\030\001 \001(\t\022&\n\004type" + + "\030\002 \001(\0132\030.google.bigtable.v2.Type\"B\n\013Prot" + + "oSchema\0223\n\007columns\030\001 \003(\0132\".google.bigtab" + + "le.v2.ColumnMetadata\"V\n\021ResultSetMetadat" + + "a\0227\n\014proto_schema\030\001 \001(\0132\037.google.bigtabl" + + "e.v2.ProtoSchemaH\000B\010\n\006schema\"6\n\tProtoRow" + + "s\022)\n\006values\030\002 \003(\0132\031.google.bigtable.v2.V" + + "alue\"$\n\016ProtoRowsBatch\022\022\n\nbatch_data\030\001 \001" + + "(\014\"\226\001\n\020PartialResultSet\022>\n\020proto_rows_ba" + + "tch\030\003 \001(\0132\".google.bigtable.v2.ProtoRows" + + "BatchH\000\022\024\n\014resume_token\030\005 \001(\014\022\034\n\024estimat" + + "ed_batch_size\030\004 \001(\005B\016\n\014partial_rowsB\265\001\n\026" + "com.google.bigtable.v2B\tDataProtoP\001Z:goo" + "gle.golang.org/genproto/googleapis/bigta" + "ble/v2;bigtable\252\002\030Google.Cloud.Bigtable." @@ -230,6 +285,9 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { com.google.api.FieldBehaviorProto.getDescriptor(), + com.google.bigtable.v2.TypesProto.getDescriptor(), + com.google.protobuf.TimestampProto.getDescriptor(), + com.google.type.DateProto.getDescriptor(), }); internal_static_google_bigtable_v2_Row_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_google_bigtable_v2_Row_fieldAccessorTable = @@ -264,17 +322,36 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_Value_descriptor, new java.lang.String[] { - "RawValue", "RawTimestampMicros", "IntValue", "Kind", + "Type", + "RawValue", + "RawTimestampMicros", + "BytesValue", + "StringValue", + "IntValue", + "BoolValue", + "FloatValue", + "TimestampValue", + "DateValue", + "ArrayValue", + "Kind", }); - internal_static_google_bigtable_v2_RowRange_descriptor = + internal_static_google_bigtable_v2_ArrayValue_descriptor = getDescriptor().getMessageTypes().get(5); + internal_static_google_bigtable_v2_ArrayValue_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ArrayValue_descriptor, + new java.lang.String[] { + "Values", + }); + internal_static_google_bigtable_v2_RowRange_descriptor = + getDescriptor().getMessageTypes().get(6); internal_static_google_bigtable_v2_RowRange_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_RowRange_descriptor, new java.lang.String[] { "StartKeyClosed", "StartKeyOpen", "EndKeyOpen", "EndKeyClosed", "StartKey", "EndKey", }); - internal_static_google_bigtable_v2_RowSet_descriptor = getDescriptor().getMessageTypes().get(6); + internal_static_google_bigtable_v2_RowSet_descriptor = getDescriptor().getMessageTypes().get(7); internal_static_google_bigtable_v2_RowSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_RowSet_descriptor, @@ -282,7 +359,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "RowKeys", "RowRanges", }); internal_static_google_bigtable_v2_ColumnRange_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_google_bigtable_v2_ColumnRange_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_ColumnRange_descriptor, @@ -296,7 +373,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "EndQualifier", }); internal_static_google_bigtable_v2_TimestampRange_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_google_bigtable_v2_TimestampRange_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_TimestampRange_descriptor, @@ -304,7 +381,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "StartTimestampMicros", "EndTimestampMicros", }); internal_static_google_bigtable_v2_ValueRange_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_google_bigtable_v2_ValueRange_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_ValueRange_descriptor, @@ -317,7 +394,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "EndValue", }); internal_static_google_bigtable_v2_RowFilter_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(11); internal_static_google_bigtable_v2_RowFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_RowFilter_descriptor, @@ -368,7 +445,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "PredicateFilter", "TrueFilter", "FalseFilter", }); internal_static_google_bigtable_v2_Mutation_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(12); internal_static_google_bigtable_v2_Mutation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_Mutation_descriptor, @@ -419,7 +496,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { internal_static_google_bigtable_v2_Mutation_DeleteFromRow_descriptor, new java.lang.String[] {}); internal_static_google_bigtable_v2_ReadModifyWriteRule_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(13); internal_static_google_bigtable_v2_ReadModifyWriteRule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_ReadModifyWriteRule_descriptor, @@ -427,7 +504,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "FamilyName", "ColumnQualifier", "AppendValue", "IncrementAmount", "Rule", }); internal_static_google_bigtable_v2_StreamPartition_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(14); internal_static_google_bigtable_v2_StreamPartition_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_StreamPartition_descriptor, @@ -435,7 +512,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "RowRange", }); internal_static_google_bigtable_v2_StreamContinuationTokens_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(15); internal_static_google_bigtable_v2_StreamContinuationTokens_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_StreamContinuationTokens_descriptor, @@ -443,14 +520,70 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Tokens", }); internal_static_google_bigtable_v2_StreamContinuationToken_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(16); internal_static_google_bigtable_v2_StreamContinuationToken_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_bigtable_v2_StreamContinuationToken_descriptor, new java.lang.String[] { "Partition", "Token", }); + internal_static_google_bigtable_v2_ProtoFormat_descriptor = + getDescriptor().getMessageTypes().get(17); + internal_static_google_bigtable_v2_ProtoFormat_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ProtoFormat_descriptor, new java.lang.String[] {}); + internal_static_google_bigtable_v2_ColumnMetadata_descriptor = + getDescriptor().getMessageTypes().get(18); + internal_static_google_bigtable_v2_ColumnMetadata_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ColumnMetadata_descriptor, + new java.lang.String[] { + "Name", "Type", + }); + internal_static_google_bigtable_v2_ProtoSchema_descriptor = + getDescriptor().getMessageTypes().get(19); + internal_static_google_bigtable_v2_ProtoSchema_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ProtoSchema_descriptor, + new java.lang.String[] { + "Columns", + }); + internal_static_google_bigtable_v2_ResultSetMetadata_descriptor = + getDescriptor().getMessageTypes().get(20); + internal_static_google_bigtable_v2_ResultSetMetadata_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ResultSetMetadata_descriptor, + new java.lang.String[] { + "ProtoSchema", "Schema", + }); + internal_static_google_bigtable_v2_ProtoRows_descriptor = + getDescriptor().getMessageTypes().get(21); + internal_static_google_bigtable_v2_ProtoRows_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ProtoRows_descriptor, + new java.lang.String[] { + "Values", + }); + internal_static_google_bigtable_v2_ProtoRowsBatch_descriptor = + getDescriptor().getMessageTypes().get(22); + internal_static_google_bigtable_v2_ProtoRowsBatch_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_ProtoRowsBatch_descriptor, + new java.lang.String[] { + "BatchData", + }); + internal_static_google_bigtable_v2_PartialResultSet_descriptor = + getDescriptor().getMessageTypes().get(23); + internal_static_google_bigtable_v2_PartialResultSet_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_PartialResultSet_descriptor, + new java.lang.String[] { + "ProtoRowsBatch", "ResumeToken", "EstimatedBatchSize", "PartialRows", + }); com.google.api.FieldBehaviorProto.getDescriptor(); + com.google.bigtable.v2.TypesProto.getDescriptor(); + com.google.protobuf.TimestampProto.getDescriptor(); + com.google.type.DateProto.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryRequest.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryRequest.java new file mode 100644 index 0000000000..91a076d0f8 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryRequest.java @@ -0,0 +1,2172 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/bigtable.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * Request message for Bigtable.ExecuteQuery
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ExecuteQueryRequest} + */ +public final class ExecuteQueryRequest extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ExecuteQueryRequest) + ExecuteQueryRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use ExecuteQueryRequest.newBuilder() to construct. + private ExecuteQueryRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ExecuteQueryRequest() { + instanceName_ = ""; + appProfileId_ = ""; + query_ = ""; + resumeToken_ = com.google.protobuf.ByteString.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ExecuteQueryRequest(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryRequest_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection( + int number) { + switch (number) { + case 7: + return internalGetParams(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ExecuteQueryRequest.class, + com.google.bigtable.v2.ExecuteQueryRequest.Builder.class); + } + + private int dataFormatCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object dataFormat_; + + public enum DataFormatCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + PROTO_FORMAT(4), + DATAFORMAT_NOT_SET(0); + private final int value; + + private DataFormatCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static DataFormatCase valueOf(int value) { + return forNumber(value); + } + + public static DataFormatCase forNumber(int value) { + switch (value) { + case 4: + return PROTO_FORMAT; + case 0: + return DATAFORMAT_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public DataFormatCase getDataFormatCase() { + return DataFormatCase.forNumber(dataFormatCase_); + } + + public static final int INSTANCE_NAME_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object instanceName_ = ""; + /** + * + * + *
+   * Required. The unique name of the instance against which the query should be
+   * executed.
+   * Values are of the form `projects/<project>/instances/<instance>`
+   * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The instanceName. + */ + @java.lang.Override + public java.lang.String getInstanceName() { + java.lang.Object ref = instanceName_; + 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(); + instanceName_ = s; + return s; + } + } + /** + * + * + *
+   * Required. The unique name of the instance against which the query should be
+   * executed.
+   * Values are of the form `projects/<project>/instances/<instance>`
+   * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for instanceName. + */ + @java.lang.Override + public com.google.protobuf.ByteString getInstanceNameBytes() { + java.lang.Object ref = instanceName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + instanceName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int APP_PROFILE_ID_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object appProfileId_ = ""; + /** + * + * + *
+   * Optional. This value specifies routing for replication. If not specified,
+   * the `default` application profile will be used.
+   * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The appProfileId. + */ + @java.lang.Override + public java.lang.String getAppProfileId() { + java.lang.Object ref = appProfileId_; + 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(); + appProfileId_ = s; + return s; + } + } + /** + * + * + *
+   * Optional. This value specifies routing for replication. If not specified,
+   * the `default` application profile will be used.
+   * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for appProfileId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getAppProfileIdBytes() { + java.lang.Object ref = appProfileId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + appProfileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int QUERY_FIELD_NUMBER = 3; + + @SuppressWarnings("serial") + private volatile java.lang.Object query_ = ""; + /** + * + * + *
+   * Required. The query string.
+   * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The query. + */ + @java.lang.Override + public java.lang.String getQuery() { + java.lang.Object ref = query_; + 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(); + query_ = s; + return s; + } + } + /** + * + * + *
+   * Required. The query string.
+   * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for query. + */ + @java.lang.Override + public com.google.protobuf.ByteString getQueryBytes() { + java.lang.Object ref = query_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + query_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PROTO_FORMAT_FIELD_NUMBER = 4; + /** + * + * + *
+   * Protocol buffer format as described by ProtoSchema and ProtoRows
+   * messages.
+   * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + * + * @return Whether the protoFormat field is set. + */ + @java.lang.Override + public boolean hasProtoFormat() { + return dataFormatCase_ == 4; + } + /** + * + * + *
+   * Protocol buffer format as described by ProtoSchema and ProtoRows
+   * messages.
+   * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + * + * @return The protoFormat. + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoFormat getProtoFormat() { + if (dataFormatCase_ == 4) { + return (com.google.bigtable.v2.ProtoFormat) dataFormat_; + } + return com.google.bigtable.v2.ProtoFormat.getDefaultInstance(); + } + /** + * + * + *
+   * Protocol buffer format as described by ProtoSchema and ProtoRows
+   * messages.
+   * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoFormatOrBuilder getProtoFormatOrBuilder() { + if (dataFormatCase_ == 4) { + return (com.google.bigtable.v2.ProtoFormat) dataFormat_; + } + return com.google.bigtable.v2.ProtoFormat.getDefaultInstance(); + } + + public static final int RESUME_TOKEN_FIELD_NUMBER = 8; + private com.google.protobuf.ByteString resumeToken_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+   * Optional. If this request is resuming a previously interrupted query
+   * execution, `resume_token` should be copied from the last
+   * PartialResultSet yielded before the interruption. Doing this
+   * enables the query execution to resume where the last one left
+   * off.
+   * The rest of the request parameters must exactly match the
+   * request that yielded this token. Otherwise the request will fail.
+   * 
+ * + * bytes resume_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The resumeToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getResumeToken() { + return resumeToken_; + } + + public static final int PARAMS_FIELD_NUMBER = 7; + + private static final class ParamsDefaultEntryHolder { + static final com.google.protobuf.MapEntry + defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryRequest_ParamsEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.MESSAGE, + com.google.bigtable.v2.Value.getDefaultInstance()); + } + + @SuppressWarnings("serial") + private com.google.protobuf.MapField params_; + + private com.google.protobuf.MapField + internalGetParams() { + if (params_ == null) { + return com.google.protobuf.MapField.emptyMapField(ParamsDefaultEntryHolder.defaultEntry); + } + return params_; + } + + public int getParamsCount() { + return internalGetParams().getMap().size(); + } + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public boolean containsParams(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetParams().getMap().containsKey(key); + } + /** Use {@link #getParamsMap()} instead. */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getParams() { + return getParamsMap(); + } + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public java.util.Map getParamsMap() { + return internalGetParams().getMap(); + } + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public /* nullable */ com.google.bigtable.v2.Value getParamsOrDefault( + java.lang.String key, + /* nullable */ + com.google.bigtable.v2.Value defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = + internalGetParams().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public com.google.bigtable.v2.Value getParamsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = + internalGetParams().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(instanceName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, instanceName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(appProfileId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, appProfileId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(query_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, query_); + } + if (dataFormatCase_ == 4) { + output.writeMessage(4, (com.google.bigtable.v2.ProtoFormat) dataFormat_); + } + com.google.protobuf.GeneratedMessageV3.serializeStringMapTo( + output, internalGetParams(), ParamsDefaultEntryHolder.defaultEntry, 7); + if (!resumeToken_.isEmpty()) { + output.writeBytes(8, resumeToken_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(instanceName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, instanceName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(appProfileId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, appProfileId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(query_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, query_); + } + if (dataFormatCase_ == 4) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 4, (com.google.bigtable.v2.ProtoFormat) dataFormat_); + } + for (java.util.Map.Entry entry : + internalGetParams().getMap().entrySet()) { + com.google.protobuf.MapEntry params__ = + ParamsDefaultEntryHolder.defaultEntry + .newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, params__); + } + if (!resumeToken_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream.computeBytesSize(8, resumeToken_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ExecuteQueryRequest)) { + return super.equals(obj); + } + com.google.bigtable.v2.ExecuteQueryRequest other = + (com.google.bigtable.v2.ExecuteQueryRequest) obj; + + if (!getInstanceName().equals(other.getInstanceName())) return false; + if (!getAppProfileId().equals(other.getAppProfileId())) return false; + if (!getQuery().equals(other.getQuery())) return false; + if (!getResumeToken().equals(other.getResumeToken())) return false; + if (!internalGetParams().equals(other.internalGetParams())) return false; + if (!getDataFormatCase().equals(other.getDataFormatCase())) return false; + switch (dataFormatCase_) { + case 4: + if (!getProtoFormat().equals(other.getProtoFormat())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + INSTANCE_NAME_FIELD_NUMBER; + hash = (53 * hash) + getInstanceName().hashCode(); + hash = (37 * hash) + APP_PROFILE_ID_FIELD_NUMBER; + hash = (53 * hash) + getAppProfileId().hashCode(); + hash = (37 * hash) + QUERY_FIELD_NUMBER; + hash = (53 * hash) + getQuery().hashCode(); + hash = (37 * hash) + RESUME_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getResumeToken().hashCode(); + if (!internalGetParams().getMap().isEmpty()) { + hash = (37 * hash) + PARAMS_FIELD_NUMBER; + hash = (53 * hash) + internalGetParams().hashCode(); + } + switch (dataFormatCase_) { + case 4: + hash = (37 * hash) + PROTO_FORMAT_FIELD_NUMBER; + hash = (53 * hash) + getProtoFormat().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ExecuteQueryRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Request message for Bigtable.ExecuteQuery
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ExecuteQueryRequest} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ExecuteQueryRequest) + com.google.bigtable.v2.ExecuteQueryRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryRequest_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection( + int number) { + switch (number) { + case 7: + return internalGetParams(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection( + int number) { + switch (number) { + case 7: + return internalGetMutableParams(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ExecuteQueryRequest.class, + com.google.bigtable.v2.ExecuteQueryRequest.Builder.class); + } + + // Construct using com.google.bigtable.v2.ExecuteQueryRequest.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + instanceName_ = ""; + appProfileId_ = ""; + query_ = ""; + if (protoFormatBuilder_ != null) { + protoFormatBuilder_.clear(); + } + resumeToken_ = com.google.protobuf.ByteString.EMPTY; + internalGetMutableParams().clear(); + dataFormatCase_ = 0; + dataFormat_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryRequest_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ExecuteQueryRequest getDefaultInstanceForType() { + return com.google.bigtable.v2.ExecuteQueryRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ExecuteQueryRequest build() { + com.google.bigtable.v2.ExecuteQueryRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ExecuteQueryRequest buildPartial() { + com.google.bigtable.v2.ExecuteQueryRequest result = + new com.google.bigtable.v2.ExecuteQueryRequest(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.ExecuteQueryRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.instanceName_ = instanceName_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.appProfileId_ = appProfileId_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.query_ = query_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.resumeToken_ = resumeToken_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.params_ = internalGetParams().build(ParamsDefaultEntryHolder.defaultEntry); + } + } + + private void buildPartialOneofs(com.google.bigtable.v2.ExecuteQueryRequest result) { + result.dataFormatCase_ = dataFormatCase_; + result.dataFormat_ = this.dataFormat_; + if (dataFormatCase_ == 4 && protoFormatBuilder_ != null) { + result.dataFormat_ = protoFormatBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ExecuteQueryRequest) { + return mergeFrom((com.google.bigtable.v2.ExecuteQueryRequest) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ExecuteQueryRequest other) { + if (other == com.google.bigtable.v2.ExecuteQueryRequest.getDefaultInstance()) return this; + if (!other.getInstanceName().isEmpty()) { + instanceName_ = other.instanceName_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getAppProfileId().isEmpty()) { + appProfileId_ = other.appProfileId_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.getQuery().isEmpty()) { + query_ = other.query_; + bitField0_ |= 0x00000004; + onChanged(); + } + if (other.getResumeToken() != com.google.protobuf.ByteString.EMPTY) { + setResumeToken(other.getResumeToken()); + } + internalGetMutableParams().mergeFrom(other.internalGetParams()); + bitField0_ |= 0x00000020; + switch (other.getDataFormatCase()) { + case PROTO_FORMAT: + { + mergeProtoFormat(other.getProtoFormat()); + break; + } + case DATAFORMAT_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + instanceName_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + appProfileId_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: + { + query_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 34: + { + input.readMessage(getProtoFormatFieldBuilder().getBuilder(), extensionRegistry); + dataFormatCase_ = 4; + break; + } // case 34 + case 58: + { + com.google.protobuf.MapEntry + params__ = + input.readMessage( + ParamsDefaultEntryHolder.defaultEntry.getParserForType(), + extensionRegistry); + internalGetMutableParams() + .ensureBuilderMap() + .put(params__.getKey(), params__.getValue()); + bitField0_ |= 0x00000020; + break; + } // case 58 + case 66: + { + resumeToken_ = input.readBytes(); + bitField0_ |= 0x00000010; + break; + } // case 66 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int dataFormatCase_ = 0; + private java.lang.Object dataFormat_; + + public DataFormatCase getDataFormatCase() { + return DataFormatCase.forNumber(dataFormatCase_); + } + + public Builder clearDataFormat() { + dataFormatCase_ = 0; + dataFormat_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private java.lang.Object instanceName_ = ""; + /** + * + * + *
+     * Required. The unique name of the instance against which the query should be
+     * executed.
+     * Values are of the form `projects/<project>/instances/<instance>`
+     * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The instanceName. + */ + public java.lang.String getInstanceName() { + java.lang.Object ref = instanceName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + instanceName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. The unique name of the instance against which the query should be
+     * executed.
+     * Values are of the form `projects/<project>/instances/<instance>`
+     * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for instanceName. + */ + public com.google.protobuf.ByteString getInstanceNameBytes() { + java.lang.Object ref = instanceName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + instanceName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. The unique name of the instance against which the query should be
+     * executed.
+     * Values are of the form `projects/<project>/instances/<instance>`
+     * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The instanceName to set. + * @return This builder for chaining. + */ + public Builder setInstanceName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + instanceName_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The unique name of the instance against which the query should be
+     * executed.
+     * Values are of the form `projects/<project>/instances/<instance>`
+     * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return This builder for chaining. + */ + public Builder clearInstanceName() { + instanceName_ = getDefaultInstance().getInstanceName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The unique name of the instance against which the query should be
+     * executed.
+     * Values are of the form `projects/<project>/instances/<instance>`
+     * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The bytes for instanceName to set. + * @return This builder for chaining. + */ + public Builder setInstanceNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + instanceName_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object appProfileId_ = ""; + /** + * + * + *
+     * Optional. This value specifies routing for replication. If not specified,
+     * the `default` application profile will be used.
+     * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The appProfileId. + */ + public java.lang.String getAppProfileId() { + java.lang.Object ref = appProfileId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + appProfileId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Optional. This value specifies routing for replication. If not specified,
+     * the `default` application profile will be used.
+     * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for appProfileId. + */ + public com.google.protobuf.ByteString getAppProfileIdBytes() { + java.lang.Object ref = appProfileId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + appProfileId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Optional. This value specifies routing for replication. If not specified,
+     * the `default` application profile will be used.
+     * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @param value The appProfileId to set. + * @return This builder for chaining. + */ + public Builder setAppProfileId(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + appProfileId_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. This value specifies routing for replication. If not specified,
+     * the `default` application profile will be used.
+     * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return This builder for chaining. + */ + public Builder clearAppProfileId() { + appProfileId_ = getDefaultInstance().getAppProfileId(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. This value specifies routing for replication. If not specified,
+     * the `default` application profile will be used.
+     * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @param value The bytes for appProfileId to set. + * @return This builder for chaining. + */ + public Builder setAppProfileIdBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + appProfileId_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object query_ = ""; + /** + * + * + *
+     * Required. The query string.
+     * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The query. + */ + public java.lang.String getQuery() { + java.lang.Object ref = query_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + query_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. The query string.
+     * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for query. + */ + public com.google.protobuf.ByteString getQueryBytes() { + java.lang.Object ref = query_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + query_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. The query string.
+     * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The query to set. + * @return This builder for chaining. + */ + public Builder setQuery(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + query_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The query string.
+     * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return This builder for chaining. + */ + public Builder clearQuery() { + query_ = getDefaultInstance().getQuery(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The query string.
+     * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The bytes for query to set. + * @return This builder for chaining. + */ + public Builder setQueryBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + query_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoFormat, + com.google.bigtable.v2.ProtoFormat.Builder, + com.google.bigtable.v2.ProtoFormatOrBuilder> + protoFormatBuilder_; + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + * + * @return Whether the protoFormat field is set. + */ + @java.lang.Override + public boolean hasProtoFormat() { + return dataFormatCase_ == 4; + } + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + * + * @return The protoFormat. + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoFormat getProtoFormat() { + if (protoFormatBuilder_ == null) { + if (dataFormatCase_ == 4) { + return (com.google.bigtable.v2.ProtoFormat) dataFormat_; + } + return com.google.bigtable.v2.ProtoFormat.getDefaultInstance(); + } else { + if (dataFormatCase_ == 4) { + return protoFormatBuilder_.getMessage(); + } + return com.google.bigtable.v2.ProtoFormat.getDefaultInstance(); + } + } + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + public Builder setProtoFormat(com.google.bigtable.v2.ProtoFormat value) { + if (protoFormatBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + dataFormat_ = value; + onChanged(); + } else { + protoFormatBuilder_.setMessage(value); + } + dataFormatCase_ = 4; + return this; + } + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + public Builder setProtoFormat(com.google.bigtable.v2.ProtoFormat.Builder builderForValue) { + if (protoFormatBuilder_ == null) { + dataFormat_ = builderForValue.build(); + onChanged(); + } else { + protoFormatBuilder_.setMessage(builderForValue.build()); + } + dataFormatCase_ = 4; + return this; + } + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + public Builder mergeProtoFormat(com.google.bigtable.v2.ProtoFormat value) { + if (protoFormatBuilder_ == null) { + if (dataFormatCase_ == 4 + && dataFormat_ != com.google.bigtable.v2.ProtoFormat.getDefaultInstance()) { + dataFormat_ = + com.google.bigtable.v2.ProtoFormat.newBuilder( + (com.google.bigtable.v2.ProtoFormat) dataFormat_) + .mergeFrom(value) + .buildPartial(); + } else { + dataFormat_ = value; + } + onChanged(); + } else { + if (dataFormatCase_ == 4) { + protoFormatBuilder_.mergeFrom(value); + } else { + protoFormatBuilder_.setMessage(value); + } + } + dataFormatCase_ = 4; + return this; + } + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + public Builder clearProtoFormat() { + if (protoFormatBuilder_ == null) { + if (dataFormatCase_ == 4) { + dataFormatCase_ = 0; + dataFormat_ = null; + onChanged(); + } + } else { + if (dataFormatCase_ == 4) { + dataFormatCase_ = 0; + dataFormat_ = null; + } + protoFormatBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + public com.google.bigtable.v2.ProtoFormat.Builder getProtoFormatBuilder() { + return getProtoFormatFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoFormatOrBuilder getProtoFormatOrBuilder() { + if ((dataFormatCase_ == 4) && (protoFormatBuilder_ != null)) { + return protoFormatBuilder_.getMessageOrBuilder(); + } else { + if (dataFormatCase_ == 4) { + return (com.google.bigtable.v2.ProtoFormat) dataFormat_; + } + return com.google.bigtable.v2.ProtoFormat.getDefaultInstance(); + } + } + /** + * + * + *
+     * Protocol buffer format as described by ProtoSchema and ProtoRows
+     * messages.
+     * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoFormat, + com.google.bigtable.v2.ProtoFormat.Builder, + com.google.bigtable.v2.ProtoFormatOrBuilder> + getProtoFormatFieldBuilder() { + if (protoFormatBuilder_ == null) { + if (!(dataFormatCase_ == 4)) { + dataFormat_ = com.google.bigtable.v2.ProtoFormat.getDefaultInstance(); + } + protoFormatBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoFormat, + com.google.bigtable.v2.ProtoFormat.Builder, + com.google.bigtable.v2.ProtoFormatOrBuilder>( + (com.google.bigtable.v2.ProtoFormat) dataFormat_, + getParentForChildren(), + isClean()); + dataFormat_ = null; + } + dataFormatCase_ = 4; + onChanged(); + return protoFormatBuilder_; + } + + private com.google.protobuf.ByteString resumeToken_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+     * Optional. If this request is resuming a previously interrupted query
+     * execution, `resume_token` should be copied from the last
+     * PartialResultSet yielded before the interruption. Doing this
+     * enables the query execution to resume where the last one left
+     * off.
+     * The rest of the request parameters must exactly match the
+     * request that yielded this token. Otherwise the request will fail.
+     * 
+ * + * bytes resume_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The resumeToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getResumeToken() { + return resumeToken_; + } + /** + * + * + *
+     * Optional. If this request is resuming a previously interrupted query
+     * execution, `resume_token` should be copied from the last
+     * PartialResultSet yielded before the interruption. Doing this
+     * enables the query execution to resume where the last one left
+     * off.
+     * The rest of the request parameters must exactly match the
+     * request that yielded this token. Otherwise the request will fail.
+     * 
+ * + * bytes resume_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @param value The resumeToken to set. + * @return This builder for chaining. + */ + public Builder setResumeToken(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + resumeToken_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. If this request is resuming a previously interrupted query
+     * execution, `resume_token` should be copied from the last
+     * PartialResultSet yielded before the interruption. Doing this
+     * enables the query execution to resume where the last one left
+     * off.
+     * The rest of the request parameters must exactly match the
+     * request that yielded this token. Otherwise the request will fail.
+     * 
+ * + * bytes resume_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return This builder for chaining. + */ + public Builder clearResumeToken() { + bitField0_ = (bitField0_ & ~0x00000010); + resumeToken_ = getDefaultInstance().getResumeToken(); + onChanged(); + return this; + } + + private static final class ParamsConverter + implements com.google.protobuf.MapFieldBuilder.Converter< + java.lang.String, com.google.bigtable.v2.ValueOrBuilder, com.google.bigtable.v2.Value> { + @java.lang.Override + public com.google.bigtable.v2.Value build(com.google.bigtable.v2.ValueOrBuilder val) { + if (val instanceof com.google.bigtable.v2.Value) { + return (com.google.bigtable.v2.Value) val; + } + return ((com.google.bigtable.v2.Value.Builder) val).build(); + } + + @java.lang.Override + public com.google.protobuf.MapEntry + defaultEntry() { + return ParamsDefaultEntryHolder.defaultEntry; + } + }; + + private static final ParamsConverter paramsConverter = new ParamsConverter(); + + private com.google.protobuf.MapFieldBuilder< + java.lang.String, + com.google.bigtable.v2.ValueOrBuilder, + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder> + params_; + + private com.google.protobuf.MapFieldBuilder< + java.lang.String, + com.google.bigtable.v2.ValueOrBuilder, + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder> + internalGetParams() { + if (params_ == null) { + return new com.google.protobuf.MapFieldBuilder<>(paramsConverter); + } + return params_; + } + + private com.google.protobuf.MapFieldBuilder< + java.lang.String, + com.google.bigtable.v2.ValueOrBuilder, + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder> + internalGetMutableParams() { + if (params_ == null) { + params_ = new com.google.protobuf.MapFieldBuilder<>(paramsConverter); + } + bitField0_ |= 0x00000020; + onChanged(); + return params_; + } + + public int getParamsCount() { + return internalGetParams().ensureBuilderMap().size(); + } + /** + * + * + *
+     * Required. params contains string type keys and Bigtable type values that
+     * bind to placeholders in the query string. In query string, a parameter
+     * placeholder consists of the
+     * `@` character followed by the parameter name (for example, `@firstName`) in
+     * the query string.
+     *
+     * For example, if
+     * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+     *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+     *  query string during query evaluation.
+     *
+     * In case of Value.kind is not set, it will be set to corresponding null
+     * value in googlesql.
+     *  `params["firstName"] =  type {string_type {}}`
+     *  then `@firstName` will be replaced with googlesql null string.
+     *
+     * Value.type should always be set and no inference of type will be made from
+     * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+     * error.
+     * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public boolean containsParams(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + return internalGetParams().ensureBuilderMap().containsKey(key); + } + /** Use {@link #getParamsMap()} instead. */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getParams() { + return getParamsMap(); + } + /** + * + * + *
+     * Required. params contains string type keys and Bigtable type values that
+     * bind to placeholders in the query string. In query string, a parameter
+     * placeholder consists of the
+     * `@` character followed by the parameter name (for example, `@firstName`) in
+     * the query string.
+     *
+     * For example, if
+     * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+     *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+     *  query string during query evaluation.
+     *
+     * In case of Value.kind is not set, it will be set to corresponding null
+     * value in googlesql.
+     *  `params["firstName"] =  type {string_type {}}`
+     *  then `@firstName` will be replaced with googlesql null string.
+     *
+     * Value.type should always be set and no inference of type will be made from
+     * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+     * error.
+     * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public java.util.Map getParamsMap() { + return internalGetParams().getImmutableMap(); + } + /** + * + * + *
+     * Required. params contains string type keys and Bigtable type values that
+     * bind to placeholders in the query string. In query string, a parameter
+     * placeholder consists of the
+     * `@` character followed by the parameter name (for example, `@firstName`) in
+     * the query string.
+     *
+     * For example, if
+     * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+     *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+     *  query string during query evaluation.
+     *
+     * In case of Value.kind is not set, it will be set to corresponding null
+     * value in googlesql.
+     *  `params["firstName"] =  type {string_type {}}`
+     *  then `@firstName` will be replaced with googlesql null string.
+     *
+     * Value.type should always be set and no inference of type will be made from
+     * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+     * error.
+     * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public /* nullable */ com.google.bigtable.v2.Value getParamsOrDefault( + java.lang.String key, + /* nullable */ + com.google.bigtable.v2.Value defaultValue) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = + internalGetMutableParams().ensureBuilderMap(); + return map.containsKey(key) ? paramsConverter.build(map.get(key)) : defaultValue; + } + /** + * + * + *
+     * Required. params contains string type keys and Bigtable type values that
+     * bind to placeholders in the query string. In query string, a parameter
+     * placeholder consists of the
+     * `@` character followed by the parameter name (for example, `@firstName`) in
+     * the query string.
+     *
+     * For example, if
+     * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+     *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+     *  query string during query evaluation.
+     *
+     * In case of Value.kind is not set, it will be set to corresponding null
+     * value in googlesql.
+     *  `params["firstName"] =  type {string_type {}}`
+     *  then `@firstName` will be replaced with googlesql null string.
+     *
+     * Value.type should always be set and no inference of type will be made from
+     * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+     * error.
+     * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public com.google.bigtable.v2.Value getParamsOrThrow(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + java.util.Map map = + internalGetMutableParams().ensureBuilderMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return paramsConverter.build(map.get(key)); + } + + public Builder clearParams() { + bitField0_ = (bitField0_ & ~0x00000020); + internalGetMutableParams().clear(); + return this; + } + /** + * + * + *
+     * Required. params contains string type keys and Bigtable type values that
+     * bind to placeholders in the query string. In query string, a parameter
+     * placeholder consists of the
+     * `@` character followed by the parameter name (for example, `@firstName`) in
+     * the query string.
+     *
+     * For example, if
+     * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+     *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+     *  query string during query evaluation.
+     *
+     * In case of Value.kind is not set, it will be set to corresponding null
+     * value in googlesql.
+     *  `params["firstName"] =  type {string_type {}}`
+     *  then `@firstName` will be replaced with googlesql null string.
+     *
+     * Value.type should always be set and no inference of type will be made from
+     * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+     * error.
+     * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder removeParams(java.lang.String key) { + if (key == null) { + throw new NullPointerException("map key"); + } + internalGetMutableParams().ensureBuilderMap().remove(key); + return this; + } + /** Use alternate mutation accessors instead. */ + @java.lang.Deprecated + public java.util.Map getMutableParams() { + bitField0_ |= 0x00000020; + return internalGetMutableParams().ensureMessageMap(); + } + /** + * + * + *
+     * Required. params contains string type keys and Bigtable type values that
+     * bind to placeholders in the query string. In query string, a parameter
+     * placeholder consists of the
+     * `@` character followed by the parameter name (for example, `@firstName`) in
+     * the query string.
+     *
+     * For example, if
+     * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+     *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+     *  query string during query evaluation.
+     *
+     * In case of Value.kind is not set, it will be set to corresponding null
+     * value in googlesql.
+     *  `params["firstName"] =  type {string_type {}}`
+     *  then `@firstName` will be replaced with googlesql null string.
+     *
+     * Value.type should always be set and no inference of type will be made from
+     * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+     * error.
+     * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder putParams(java.lang.String key, com.google.bigtable.v2.Value value) { + if (key == null) { + throw new NullPointerException("map key"); + } + if (value == null) { + throw new NullPointerException("map value"); + } + internalGetMutableParams().ensureBuilderMap().put(key, value); + bitField0_ |= 0x00000020; + return this; + } + /** + * + * + *
+     * Required. params contains string type keys and Bigtable type values that
+     * bind to placeholders in the query string. In query string, a parameter
+     * placeholder consists of the
+     * `@` character followed by the parameter name (for example, `@firstName`) in
+     * the query string.
+     *
+     * For example, if
+     * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+     *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+     *  query string during query evaluation.
+     *
+     * In case of Value.kind is not set, it will be set to corresponding null
+     * value in googlesql.
+     *  `params["firstName"] =  type {string_type {}}`
+     *  then `@firstName` will be replaced with googlesql null string.
+     *
+     * Value.type should always be set and no inference of type will be made from
+     * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+     * error.
+     * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder putAllParams( + java.util.Map values) { + for (java.util.Map.Entry e : + values.entrySet()) { + if (e.getKey() == null || e.getValue() == null) { + throw new NullPointerException(); + } + } + internalGetMutableParams().ensureBuilderMap().putAll(values); + bitField0_ |= 0x00000020; + return this; + } + /** + * + * + *
+     * Required. params contains string type keys and Bigtable type values that
+     * bind to placeholders in the query string. In query string, a parameter
+     * placeholder consists of the
+     * `@` character followed by the parameter name (for example, `@firstName`) in
+     * the query string.
+     *
+     * For example, if
+     * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+     *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+     *  query string during query evaluation.
+     *
+     * In case of Value.kind is not set, it will be set to corresponding null
+     * value in googlesql.
+     *  `params["firstName"] =  type {string_type {}}`
+     *  then `@firstName` will be replaced with googlesql null string.
+     *
+     * Value.type should always be set and no inference of type will be made from
+     * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+     * error.
+     * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public com.google.bigtable.v2.Value.Builder putParamsBuilderIfAbsent(java.lang.String key) { + java.util.Map builderMap = + internalGetMutableParams().ensureBuilderMap(); + com.google.bigtable.v2.ValueOrBuilder entry = builderMap.get(key); + if (entry == null) { + entry = com.google.bigtable.v2.Value.newBuilder(); + builderMap.put(key, entry); + } + if (entry instanceof com.google.bigtable.v2.Value) { + entry = ((com.google.bigtable.v2.Value) entry).toBuilder(); + builderMap.put(key, entry); + } + return (com.google.bigtable.v2.Value.Builder) entry; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ExecuteQueryRequest) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ExecuteQueryRequest) + private static final com.google.bigtable.v2.ExecuteQueryRequest DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ExecuteQueryRequest(); + } + + public static com.google.bigtable.v2.ExecuteQueryRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ExecuteQueryRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ExecuteQueryRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryRequestOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryRequestOrBuilder.java new file mode 100644 index 0000000000..a376d8ce56 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryRequestOrBuilder.java @@ -0,0 +1,328 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/bigtable.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ExecuteQueryRequestOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ExecuteQueryRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. The unique name of the instance against which the query should be
+   * executed.
+   * Values are of the form `projects/<project>/instances/<instance>`
+   * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The instanceName. + */ + java.lang.String getInstanceName(); + /** + * + * + *
+   * Required. The unique name of the instance against which the query should be
+   * executed.
+   * Values are of the form `projects/<project>/instances/<instance>`
+   * 
+ * + * + * string instance_name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for instanceName. + */ + com.google.protobuf.ByteString getInstanceNameBytes(); + + /** + * + * + *
+   * Optional. This value specifies routing for replication. If not specified,
+   * the `default` application profile will be used.
+   * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The appProfileId. + */ + java.lang.String getAppProfileId(); + /** + * + * + *
+   * Optional. This value specifies routing for replication. If not specified,
+   * the `default` application profile will be used.
+   * 
+ * + * string app_profile_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for appProfileId. + */ + com.google.protobuf.ByteString getAppProfileIdBytes(); + + /** + * + * + *
+   * Required. The query string.
+   * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The query. + */ + java.lang.String getQuery(); + /** + * + * + *
+   * Required. The query string.
+   * 
+ * + * string query = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for query. + */ + com.google.protobuf.ByteString getQueryBytes(); + + /** + * + * + *
+   * Protocol buffer format as described by ProtoSchema and ProtoRows
+   * messages.
+   * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + * + * @return Whether the protoFormat field is set. + */ + boolean hasProtoFormat(); + /** + * + * + *
+   * Protocol buffer format as described by ProtoSchema and ProtoRows
+   * messages.
+   * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + * + * @return The protoFormat. + */ + com.google.bigtable.v2.ProtoFormat getProtoFormat(); + /** + * + * + *
+   * Protocol buffer format as described by ProtoSchema and ProtoRows
+   * messages.
+   * 
+ * + * .google.bigtable.v2.ProtoFormat proto_format = 4; + */ + com.google.bigtable.v2.ProtoFormatOrBuilder getProtoFormatOrBuilder(); + + /** + * + * + *
+   * Optional. If this request is resuming a previously interrupted query
+   * execution, `resume_token` should be copied from the last
+   * PartialResultSet yielded before the interruption. Doing this
+   * enables the query execution to resume where the last one left
+   * off.
+   * The rest of the request parameters must exactly match the
+   * request that yielded this token. Otherwise the request will fail.
+   * 
+ * + * bytes resume_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The resumeToken. + */ + com.google.protobuf.ByteString getResumeToken(); + + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + int getParamsCount(); + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + boolean containsParams(java.lang.String key); + /** Use {@link #getParamsMap()} instead. */ + @java.lang.Deprecated + java.util.Map getParams(); + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + java.util.Map getParamsMap(); + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + /* nullable */ + com.google.bigtable.v2.Value getParamsOrDefault( + java.lang.String key, + /* nullable */ + com.google.bigtable.v2.Value defaultValue); + /** + * + * + *
+   * Required. params contains string type keys and Bigtable type values that
+   * bind to placeholders in the query string. In query string, a parameter
+   * placeholder consists of the
+   * `@` character followed by the parameter name (for example, `@firstName`) in
+   * the query string.
+   *
+   * For example, if
+   * `params["firstName"] = bytes_value: "foo" type {bytes_type {}}`
+   *  then `@firstName` will be replaced with googlesql bytes value "foo" in the
+   *  query string during query evaluation.
+   *
+   * In case of Value.kind is not set, it will be set to corresponding null
+   * value in googlesql.
+   *  `params["firstName"] =  type {string_type {}}`
+   *  then `@firstName` will be replaced with googlesql null string.
+   *
+   * Value.type should always be set and no inference of type will be made from
+   * Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT
+   * error.
+   * 
+ * + * + * map<string, .google.bigtable.v2.Value> params = 7 [(.google.api.field_behavior) = REQUIRED]; + * + */ + com.google.bigtable.v2.Value getParamsOrThrow(java.lang.String key); + + com.google.bigtable.v2.ExecuteQueryRequest.DataFormatCase getDataFormatCase(); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryResponse.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryResponse.java new file mode 100644 index 0000000000..61f1268b72 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryResponse.java @@ -0,0 +1,1145 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/bigtable.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * Response message for Bigtable.ExecuteQuery
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ExecuteQueryResponse} + */ +public final class ExecuteQueryResponse extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ExecuteQueryResponse) + ExecuteQueryResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use ExecuteQueryResponse.newBuilder() to construct. + private ExecuteQueryResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ExecuteQueryResponse() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ExecuteQueryResponse(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ExecuteQueryResponse.class, + com.google.bigtable.v2.ExecuteQueryResponse.Builder.class); + } + + private int responseCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object response_; + + public enum ResponseCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + METADATA(1), + RESULTS(2), + RESPONSE_NOT_SET(0); + private final int value; + + private ResponseCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ResponseCase valueOf(int value) { + return forNumber(value); + } + + public static ResponseCase forNumber(int value) { + switch (value) { + case 1: + return METADATA; + case 2: + return RESULTS; + case 0: + return RESPONSE_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public ResponseCase getResponseCase() { + return ResponseCase.forNumber(responseCase_); + } + + public static final int METADATA_FIELD_NUMBER = 1; + /** + * + * + *
+   * Structure of rows in this response stream. The first (and only the first)
+   * response streamed from the server will be of this type.
+   * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + * + * @return Whether the metadata field is set. + */ + @java.lang.Override + public boolean hasMetadata() { + return responseCase_ == 1; + } + /** + * + * + *
+   * Structure of rows in this response stream. The first (and only the first)
+   * response streamed from the server will be of this type.
+   * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + * + * @return The metadata. + */ + @java.lang.Override + public com.google.bigtable.v2.ResultSetMetadata getMetadata() { + if (responseCase_ == 1) { + return (com.google.bigtable.v2.ResultSetMetadata) response_; + } + return com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance(); + } + /** + * + * + *
+   * Structure of rows in this response stream. The first (and only the first)
+   * response streamed from the server will be of this type.
+   * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.ResultSetMetadataOrBuilder getMetadataOrBuilder() { + if (responseCase_ == 1) { + return (com.google.bigtable.v2.ResultSetMetadata) response_; + } + return com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance(); + } + + public static final int RESULTS_FIELD_NUMBER = 2; + /** + * + * + *
+   * A partial result set with row data potentially including additional
+   * instructions on how recent past and future partial responses should be
+   * interpreted.
+   * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + * + * @return Whether the results field is set. + */ + @java.lang.Override + public boolean hasResults() { + return responseCase_ == 2; + } + /** + * + * + *
+   * A partial result set with row data potentially including additional
+   * instructions on how recent past and future partial responses should be
+   * interpreted.
+   * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + * + * @return The results. + */ + @java.lang.Override + public com.google.bigtable.v2.PartialResultSet getResults() { + if (responseCase_ == 2) { + return (com.google.bigtable.v2.PartialResultSet) response_; + } + return com.google.bigtable.v2.PartialResultSet.getDefaultInstance(); + } + /** + * + * + *
+   * A partial result set with row data potentially including additional
+   * instructions on how recent past and future partial responses should be
+   * interpreted.
+   * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.PartialResultSetOrBuilder getResultsOrBuilder() { + if (responseCase_ == 2) { + return (com.google.bigtable.v2.PartialResultSet) response_; + } + return com.google.bigtable.v2.PartialResultSet.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (responseCase_ == 1) { + output.writeMessage(1, (com.google.bigtable.v2.ResultSetMetadata) response_); + } + if (responseCase_ == 2) { + output.writeMessage(2, (com.google.bigtable.v2.PartialResultSet) response_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (responseCase_ == 1) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 1, (com.google.bigtable.v2.ResultSetMetadata) response_); + } + if (responseCase_ == 2) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 2, (com.google.bigtable.v2.PartialResultSet) response_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ExecuteQueryResponse)) { + return super.equals(obj); + } + com.google.bigtable.v2.ExecuteQueryResponse other = + (com.google.bigtable.v2.ExecuteQueryResponse) obj; + + if (!getResponseCase().equals(other.getResponseCase())) return false; + switch (responseCase_) { + case 1: + if (!getMetadata().equals(other.getMetadata())) return false; + break; + case 2: + if (!getResults().equals(other.getResults())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (responseCase_) { + case 1: + hash = (37 * hash) + METADATA_FIELD_NUMBER; + hash = (53 * hash) + getMetadata().hashCode(); + break; + case 2: + hash = (37 * hash) + RESULTS_FIELD_NUMBER; + hash = (53 * hash) + getResults().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ExecuteQueryResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Response message for Bigtable.ExecuteQuery
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ExecuteQueryResponse} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ExecuteQueryResponse) + com.google.bigtable.v2.ExecuteQueryResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ExecuteQueryResponse.class, + com.google.bigtable.v2.ExecuteQueryResponse.Builder.class); + } + + // Construct using com.google.bigtable.v2.ExecuteQueryResponse.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (metadataBuilder_ != null) { + metadataBuilder_.clear(); + } + if (resultsBuilder_ != null) { + resultsBuilder_.clear(); + } + responseCase_ = 0; + response_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.BigtableProto + .internal_static_google_bigtable_v2_ExecuteQueryResponse_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ExecuteQueryResponse getDefaultInstanceForType() { + return com.google.bigtable.v2.ExecuteQueryResponse.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ExecuteQueryResponse build() { + com.google.bigtable.v2.ExecuteQueryResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ExecuteQueryResponse buildPartial() { + com.google.bigtable.v2.ExecuteQueryResponse result = + new com.google.bigtable.v2.ExecuteQueryResponse(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.ExecuteQueryResponse result) { + int from_bitField0_ = bitField0_; + } + + private void buildPartialOneofs(com.google.bigtable.v2.ExecuteQueryResponse result) { + result.responseCase_ = responseCase_; + result.response_ = this.response_; + if (responseCase_ == 1 && metadataBuilder_ != null) { + result.response_ = metadataBuilder_.build(); + } + if (responseCase_ == 2 && resultsBuilder_ != null) { + result.response_ = resultsBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ExecuteQueryResponse) { + return mergeFrom((com.google.bigtable.v2.ExecuteQueryResponse) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ExecuteQueryResponse other) { + if (other == com.google.bigtable.v2.ExecuteQueryResponse.getDefaultInstance()) return this; + switch (other.getResponseCase()) { + case METADATA: + { + mergeMetadata(other.getMetadata()); + break; + } + case RESULTS: + { + mergeResults(other.getResults()); + break; + } + case RESPONSE_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getMetadataFieldBuilder().getBuilder(), extensionRegistry); + responseCase_ = 1; + break; + } // case 10 + case 18: + { + input.readMessage(getResultsFieldBuilder().getBuilder(), extensionRegistry); + responseCase_ = 2; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int responseCase_ = 0; + private java.lang.Object response_; + + public ResponseCase getResponseCase() { + return ResponseCase.forNumber(responseCase_); + } + + public Builder clearResponse() { + responseCase_ = 0; + response_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ResultSetMetadata, + com.google.bigtable.v2.ResultSetMetadata.Builder, + com.google.bigtable.v2.ResultSetMetadataOrBuilder> + metadataBuilder_; + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + * + * @return Whether the metadata field is set. + */ + @java.lang.Override + public boolean hasMetadata() { + return responseCase_ == 1; + } + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + * + * @return The metadata. + */ + @java.lang.Override + public com.google.bigtable.v2.ResultSetMetadata getMetadata() { + if (metadataBuilder_ == null) { + if (responseCase_ == 1) { + return (com.google.bigtable.v2.ResultSetMetadata) response_; + } + return com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance(); + } else { + if (responseCase_ == 1) { + return metadataBuilder_.getMessage(); + } + return com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance(); + } + } + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + public Builder setMetadata(com.google.bigtable.v2.ResultSetMetadata value) { + if (metadataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + response_ = value; + onChanged(); + } else { + metadataBuilder_.setMessage(value); + } + responseCase_ = 1; + return this; + } + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + public Builder setMetadata(com.google.bigtable.v2.ResultSetMetadata.Builder builderForValue) { + if (metadataBuilder_ == null) { + response_ = builderForValue.build(); + onChanged(); + } else { + metadataBuilder_.setMessage(builderForValue.build()); + } + responseCase_ = 1; + return this; + } + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + public Builder mergeMetadata(com.google.bigtable.v2.ResultSetMetadata value) { + if (metadataBuilder_ == null) { + if (responseCase_ == 1 + && response_ != com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance()) { + response_ = + com.google.bigtable.v2.ResultSetMetadata.newBuilder( + (com.google.bigtable.v2.ResultSetMetadata) response_) + .mergeFrom(value) + .buildPartial(); + } else { + response_ = value; + } + onChanged(); + } else { + if (responseCase_ == 1) { + metadataBuilder_.mergeFrom(value); + } else { + metadataBuilder_.setMessage(value); + } + } + responseCase_ = 1; + return this; + } + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + public Builder clearMetadata() { + if (metadataBuilder_ == null) { + if (responseCase_ == 1) { + responseCase_ = 0; + response_ = null; + onChanged(); + } + } else { + if (responseCase_ == 1) { + responseCase_ = 0; + response_ = null; + } + metadataBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + public com.google.bigtable.v2.ResultSetMetadata.Builder getMetadataBuilder() { + return getMetadataFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.ResultSetMetadataOrBuilder getMetadataOrBuilder() { + if ((responseCase_ == 1) && (metadataBuilder_ != null)) { + return metadataBuilder_.getMessageOrBuilder(); + } else { + if (responseCase_ == 1) { + return (com.google.bigtable.v2.ResultSetMetadata) response_; + } + return com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance(); + } + } + /** + * + * + *
+     * Structure of rows in this response stream. The first (and only the first)
+     * response streamed from the server will be of this type.
+     * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ResultSetMetadata, + com.google.bigtable.v2.ResultSetMetadata.Builder, + com.google.bigtable.v2.ResultSetMetadataOrBuilder> + getMetadataFieldBuilder() { + if (metadataBuilder_ == null) { + if (!(responseCase_ == 1)) { + response_ = com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance(); + } + metadataBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ResultSetMetadata, + com.google.bigtable.v2.ResultSetMetadata.Builder, + com.google.bigtable.v2.ResultSetMetadataOrBuilder>( + (com.google.bigtable.v2.ResultSetMetadata) response_, + getParentForChildren(), + isClean()); + response_ = null; + } + responseCase_ = 1; + onChanged(); + return metadataBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.PartialResultSet, + com.google.bigtable.v2.PartialResultSet.Builder, + com.google.bigtable.v2.PartialResultSetOrBuilder> + resultsBuilder_; + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + * + * @return Whether the results field is set. + */ + @java.lang.Override + public boolean hasResults() { + return responseCase_ == 2; + } + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + * + * @return The results. + */ + @java.lang.Override + public com.google.bigtable.v2.PartialResultSet getResults() { + if (resultsBuilder_ == null) { + if (responseCase_ == 2) { + return (com.google.bigtable.v2.PartialResultSet) response_; + } + return com.google.bigtable.v2.PartialResultSet.getDefaultInstance(); + } else { + if (responseCase_ == 2) { + return resultsBuilder_.getMessage(); + } + return com.google.bigtable.v2.PartialResultSet.getDefaultInstance(); + } + } + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + public Builder setResults(com.google.bigtable.v2.PartialResultSet value) { + if (resultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + response_ = value; + onChanged(); + } else { + resultsBuilder_.setMessage(value); + } + responseCase_ = 2; + return this; + } + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + public Builder setResults(com.google.bigtable.v2.PartialResultSet.Builder builderForValue) { + if (resultsBuilder_ == null) { + response_ = builderForValue.build(); + onChanged(); + } else { + resultsBuilder_.setMessage(builderForValue.build()); + } + responseCase_ = 2; + return this; + } + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + public Builder mergeResults(com.google.bigtable.v2.PartialResultSet value) { + if (resultsBuilder_ == null) { + if (responseCase_ == 2 + && response_ != com.google.bigtable.v2.PartialResultSet.getDefaultInstance()) { + response_ = + com.google.bigtable.v2.PartialResultSet.newBuilder( + (com.google.bigtable.v2.PartialResultSet) response_) + .mergeFrom(value) + .buildPartial(); + } else { + response_ = value; + } + onChanged(); + } else { + if (responseCase_ == 2) { + resultsBuilder_.mergeFrom(value); + } else { + resultsBuilder_.setMessage(value); + } + } + responseCase_ = 2; + return this; + } + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + public Builder clearResults() { + if (resultsBuilder_ == null) { + if (responseCase_ == 2) { + responseCase_ = 0; + response_ = null; + onChanged(); + } + } else { + if (responseCase_ == 2) { + responseCase_ = 0; + response_ = null; + } + resultsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + public com.google.bigtable.v2.PartialResultSet.Builder getResultsBuilder() { + return getResultsFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.PartialResultSetOrBuilder getResultsOrBuilder() { + if ((responseCase_ == 2) && (resultsBuilder_ != null)) { + return resultsBuilder_.getMessageOrBuilder(); + } else { + if (responseCase_ == 2) { + return (com.google.bigtable.v2.PartialResultSet) response_; + } + return com.google.bigtable.v2.PartialResultSet.getDefaultInstance(); + } + } + /** + * + * + *
+     * A partial result set with row data potentially including additional
+     * instructions on how recent past and future partial responses should be
+     * interpreted.
+     * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.PartialResultSet, + com.google.bigtable.v2.PartialResultSet.Builder, + com.google.bigtable.v2.PartialResultSetOrBuilder> + getResultsFieldBuilder() { + if (resultsBuilder_ == null) { + if (!(responseCase_ == 2)) { + response_ = com.google.bigtable.v2.PartialResultSet.getDefaultInstance(); + } + resultsBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.PartialResultSet, + com.google.bigtable.v2.PartialResultSet.Builder, + com.google.bigtable.v2.PartialResultSetOrBuilder>( + (com.google.bigtable.v2.PartialResultSet) response_, + getParentForChildren(), + isClean()); + response_ = null; + } + responseCase_ = 2; + onChanged(); + return resultsBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ExecuteQueryResponse) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ExecuteQueryResponse) + private static final com.google.bigtable.v2.ExecuteQueryResponse DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ExecuteQueryResponse(); + } + + public static com.google.bigtable.v2.ExecuteQueryResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ExecuteQueryResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ExecuteQueryResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryResponseOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryResponseOrBuilder.java new file mode 100644 index 0000000000..2379c97b83 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ExecuteQueryResponseOrBuilder.java @@ -0,0 +1,107 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/bigtable.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ExecuteQueryResponseOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ExecuteQueryResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Structure of rows in this response stream. The first (and only the first)
+   * response streamed from the server will be of this type.
+   * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + * + * @return Whether the metadata field is set. + */ + boolean hasMetadata(); + /** + * + * + *
+   * Structure of rows in this response stream. The first (and only the first)
+   * response streamed from the server will be of this type.
+   * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + * + * @return The metadata. + */ + com.google.bigtable.v2.ResultSetMetadata getMetadata(); + /** + * + * + *
+   * Structure of rows in this response stream. The first (and only the first)
+   * response streamed from the server will be of this type.
+   * 
+ * + * .google.bigtable.v2.ResultSetMetadata metadata = 1; + */ + com.google.bigtable.v2.ResultSetMetadataOrBuilder getMetadataOrBuilder(); + + /** + * + * + *
+   * A partial result set with row data potentially including additional
+   * instructions on how recent past and future partial responses should be
+   * interpreted.
+   * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + * + * @return Whether the results field is set. + */ + boolean hasResults(); + /** + * + * + *
+   * A partial result set with row data potentially including additional
+   * instructions on how recent past and future partial responses should be
+   * interpreted.
+   * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + * + * @return The results. + */ + com.google.bigtable.v2.PartialResultSet getResults(); + /** + * + * + *
+   * A partial result set with row data potentially including additional
+   * instructions on how recent past and future partial responses should be
+   * interpreted.
+   * 
+ * + * .google.bigtable.v2.PartialResultSet results = 2; + */ + com.google.bigtable.v2.PartialResultSetOrBuilder getResultsOrBuilder(); + + com.google.bigtable.v2.ExecuteQueryResponse.ResponseCase getResponseCase(); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/PartialResultSet.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/PartialResultSet.java new file mode 100644 index 0000000000..d63c94777c --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/PartialResultSet.java @@ -0,0 +1,1105 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * A partial result set from the streaming query API.
+ * CBT client will buffer partial_rows from result_sets until it gets a
+ * resumption_token.
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.PartialResultSet} + */ +public final class PartialResultSet extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.PartialResultSet) + PartialResultSetOrBuilder { + private static final long serialVersionUID = 0L; + // Use PartialResultSet.newBuilder() to construct. + private PartialResultSet(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private PartialResultSet() { + resumeToken_ = com.google.protobuf.ByteString.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new PartialResultSet(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_PartialResultSet_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_PartialResultSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.PartialResultSet.class, + com.google.bigtable.v2.PartialResultSet.Builder.class); + } + + private int partialRowsCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object partialRows_; + + public enum PartialRowsCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + PROTO_ROWS_BATCH(3), + PARTIALROWS_NOT_SET(0); + private final int value; + + private PartialRowsCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static PartialRowsCase valueOf(int value) { + return forNumber(value); + } + + public static PartialRowsCase forNumber(int value) { + switch (value) { + case 3: + return PROTO_ROWS_BATCH; + case 0: + return PARTIALROWS_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public PartialRowsCase getPartialRowsCase() { + return PartialRowsCase.forNumber(partialRowsCase_); + } + + public static final int PROTO_ROWS_BATCH_FIELD_NUMBER = 3; + /** + * + * + *
+   * Partial rows in serialized ProtoRows format.
+   * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + * + * @return Whether the protoRowsBatch field is set. + */ + @java.lang.Override + public boolean hasProtoRowsBatch() { + return partialRowsCase_ == 3; + } + /** + * + * + *
+   * Partial rows in serialized ProtoRows format.
+   * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + * + * @return The protoRowsBatch. + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoRowsBatch getProtoRowsBatch() { + if (partialRowsCase_ == 3) { + return (com.google.bigtable.v2.ProtoRowsBatch) partialRows_; + } + return com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance(); + } + /** + * + * + *
+   * Partial rows in serialized ProtoRows format.
+   * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoRowsBatchOrBuilder getProtoRowsBatchOrBuilder() { + if (partialRowsCase_ == 3) { + return (com.google.bigtable.v2.ProtoRowsBatch) partialRows_; + } + return com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance(); + } + + public static final int RESUME_TOKEN_FIELD_NUMBER = 5; + private com.google.protobuf.ByteString resumeToken_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+   * An opaque token sent by the server to allow query resumption and signal
+   * the client to accumulate `partial_rows` since the last non-empty
+   * `resume_token`. On resumption, the resumed query will return the remaining
+   * rows for this query.
+   *
+   * If there is a batch in progress, a non-empty `resume_token`
+   * means that that the batch of `partial_rows` will be complete after merging
+   * the `partial_rows` from this response. The client must only yield
+   * completed batches to the application, and must ensure that any future
+   * retries send the latest token to avoid returning duplicate data.
+   *
+   * The server may set 'resume_token' without a 'partial_rows'. If there is a
+   * batch in progress the client should yield it.
+   *
+   * The server will also send a sentinel `resume_token` when last batch of
+   * `partial_rows` is sent. If the client retries the ExecuteQueryRequest with
+   * the sentinel `resume_token`, the server will emit it again without any
+   * `partial_rows`, then return OK.
+   * 
+ * + * bytes resume_token = 5; + * + * @return The resumeToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getResumeToken() { + return resumeToken_; + } + + public static final int ESTIMATED_BATCH_SIZE_FIELD_NUMBER = 4; + private int estimatedBatchSize_ = 0; + /** + * + * + *
+   * Estimated size of a new batch. The server will always set this when
+   * returning the first `partial_rows` of a batch, and will not set it at any
+   * other time.
+   *
+   * The client can use this estimate to allocate an initial buffer for the
+   * batched results. This helps minimize the number of allocations required,
+   * though the buffer size may still need to be increased if the estimate is
+   * too low.
+   * 
+ * + * int32 estimated_batch_size = 4; + * + * @return The estimatedBatchSize. + */ + @java.lang.Override + public int getEstimatedBatchSize() { + return estimatedBatchSize_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (partialRowsCase_ == 3) { + output.writeMessage(3, (com.google.bigtable.v2.ProtoRowsBatch) partialRows_); + } + if (estimatedBatchSize_ != 0) { + output.writeInt32(4, estimatedBatchSize_); + } + if (!resumeToken_.isEmpty()) { + output.writeBytes(5, resumeToken_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (partialRowsCase_ == 3) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 3, (com.google.bigtable.v2.ProtoRowsBatch) partialRows_); + } + if (estimatedBatchSize_ != 0) { + size += com.google.protobuf.CodedOutputStream.computeInt32Size(4, estimatedBatchSize_); + } + if (!resumeToken_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream.computeBytesSize(5, resumeToken_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.PartialResultSet)) { + return super.equals(obj); + } + com.google.bigtable.v2.PartialResultSet other = (com.google.bigtable.v2.PartialResultSet) obj; + + if (!getResumeToken().equals(other.getResumeToken())) return false; + if (getEstimatedBatchSize() != other.getEstimatedBatchSize()) return false; + if (!getPartialRowsCase().equals(other.getPartialRowsCase())) return false; + switch (partialRowsCase_) { + case 3: + if (!getProtoRowsBatch().equals(other.getProtoRowsBatch())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + RESUME_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getResumeToken().hashCode(); + hash = (37 * hash) + ESTIMATED_BATCH_SIZE_FIELD_NUMBER; + hash = (53 * hash) + getEstimatedBatchSize(); + switch (partialRowsCase_) { + case 3: + hash = (37 * hash) + PROTO_ROWS_BATCH_FIELD_NUMBER; + hash = (53 * hash) + getProtoRowsBatch().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.PartialResultSet parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.PartialResultSet parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.PartialResultSet parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.PartialResultSet prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * A partial result set from the streaming query API.
+   * CBT client will buffer partial_rows from result_sets until it gets a
+   * resumption_token.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.PartialResultSet} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.PartialResultSet) + com.google.bigtable.v2.PartialResultSetOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_PartialResultSet_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_PartialResultSet_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.PartialResultSet.class, + com.google.bigtable.v2.PartialResultSet.Builder.class); + } + + // Construct using com.google.bigtable.v2.PartialResultSet.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (protoRowsBatchBuilder_ != null) { + protoRowsBatchBuilder_.clear(); + } + resumeToken_ = com.google.protobuf.ByteString.EMPTY; + estimatedBatchSize_ = 0; + partialRowsCase_ = 0; + partialRows_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_PartialResultSet_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.PartialResultSet getDefaultInstanceForType() { + return com.google.bigtable.v2.PartialResultSet.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.PartialResultSet build() { + com.google.bigtable.v2.PartialResultSet result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.PartialResultSet buildPartial() { + com.google.bigtable.v2.PartialResultSet result = + new com.google.bigtable.v2.PartialResultSet(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.PartialResultSet result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.resumeToken_ = resumeToken_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.estimatedBatchSize_ = estimatedBatchSize_; + } + } + + private void buildPartialOneofs(com.google.bigtable.v2.PartialResultSet result) { + result.partialRowsCase_ = partialRowsCase_; + result.partialRows_ = this.partialRows_; + if (partialRowsCase_ == 3 && protoRowsBatchBuilder_ != null) { + result.partialRows_ = protoRowsBatchBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.PartialResultSet) { + return mergeFrom((com.google.bigtable.v2.PartialResultSet) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.PartialResultSet other) { + if (other == com.google.bigtable.v2.PartialResultSet.getDefaultInstance()) return this; + if (other.getResumeToken() != com.google.protobuf.ByteString.EMPTY) { + setResumeToken(other.getResumeToken()); + } + if (other.getEstimatedBatchSize() != 0) { + setEstimatedBatchSize(other.getEstimatedBatchSize()); + } + switch (other.getPartialRowsCase()) { + case PROTO_ROWS_BATCH: + { + mergeProtoRowsBatch(other.getProtoRowsBatch()); + break; + } + case PARTIALROWS_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 26: + { + input.readMessage(getProtoRowsBatchFieldBuilder().getBuilder(), extensionRegistry); + partialRowsCase_ = 3; + break; + } // case 26 + case 32: + { + estimatedBatchSize_ = input.readInt32(); + bitField0_ |= 0x00000004; + break; + } // case 32 + case 42: + { + resumeToken_ = input.readBytes(); + bitField0_ |= 0x00000002; + break; + } // case 42 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int partialRowsCase_ = 0; + private java.lang.Object partialRows_; + + public PartialRowsCase getPartialRowsCase() { + return PartialRowsCase.forNumber(partialRowsCase_); + } + + public Builder clearPartialRows() { + partialRowsCase_ = 0; + partialRows_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoRowsBatch, + com.google.bigtable.v2.ProtoRowsBatch.Builder, + com.google.bigtable.v2.ProtoRowsBatchOrBuilder> + protoRowsBatchBuilder_; + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + * + * @return Whether the protoRowsBatch field is set. + */ + @java.lang.Override + public boolean hasProtoRowsBatch() { + return partialRowsCase_ == 3; + } + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + * + * @return The protoRowsBatch. + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoRowsBatch getProtoRowsBatch() { + if (protoRowsBatchBuilder_ == null) { + if (partialRowsCase_ == 3) { + return (com.google.bigtable.v2.ProtoRowsBatch) partialRows_; + } + return com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance(); + } else { + if (partialRowsCase_ == 3) { + return protoRowsBatchBuilder_.getMessage(); + } + return com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance(); + } + } + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + public Builder setProtoRowsBatch(com.google.bigtable.v2.ProtoRowsBatch value) { + if (protoRowsBatchBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + partialRows_ = value; + onChanged(); + } else { + protoRowsBatchBuilder_.setMessage(value); + } + partialRowsCase_ = 3; + return this; + } + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + public Builder setProtoRowsBatch( + com.google.bigtable.v2.ProtoRowsBatch.Builder builderForValue) { + if (protoRowsBatchBuilder_ == null) { + partialRows_ = builderForValue.build(); + onChanged(); + } else { + protoRowsBatchBuilder_.setMessage(builderForValue.build()); + } + partialRowsCase_ = 3; + return this; + } + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + public Builder mergeProtoRowsBatch(com.google.bigtable.v2.ProtoRowsBatch value) { + if (protoRowsBatchBuilder_ == null) { + if (partialRowsCase_ == 3 + && partialRows_ != com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance()) { + partialRows_ = + com.google.bigtable.v2.ProtoRowsBatch.newBuilder( + (com.google.bigtable.v2.ProtoRowsBatch) partialRows_) + .mergeFrom(value) + .buildPartial(); + } else { + partialRows_ = value; + } + onChanged(); + } else { + if (partialRowsCase_ == 3) { + protoRowsBatchBuilder_.mergeFrom(value); + } else { + protoRowsBatchBuilder_.setMessage(value); + } + } + partialRowsCase_ = 3; + return this; + } + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + public Builder clearProtoRowsBatch() { + if (protoRowsBatchBuilder_ == null) { + if (partialRowsCase_ == 3) { + partialRowsCase_ = 0; + partialRows_ = null; + onChanged(); + } + } else { + if (partialRowsCase_ == 3) { + partialRowsCase_ = 0; + partialRows_ = null; + } + protoRowsBatchBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + public com.google.bigtable.v2.ProtoRowsBatch.Builder getProtoRowsBatchBuilder() { + return getProtoRowsBatchFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoRowsBatchOrBuilder getProtoRowsBatchOrBuilder() { + if ((partialRowsCase_ == 3) && (protoRowsBatchBuilder_ != null)) { + return protoRowsBatchBuilder_.getMessageOrBuilder(); + } else { + if (partialRowsCase_ == 3) { + return (com.google.bigtable.v2.ProtoRowsBatch) partialRows_; + } + return com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance(); + } + } + /** + * + * + *
+     * Partial rows in serialized ProtoRows format.
+     * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoRowsBatch, + com.google.bigtable.v2.ProtoRowsBatch.Builder, + com.google.bigtable.v2.ProtoRowsBatchOrBuilder> + getProtoRowsBatchFieldBuilder() { + if (protoRowsBatchBuilder_ == null) { + if (!(partialRowsCase_ == 3)) { + partialRows_ = com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance(); + } + protoRowsBatchBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoRowsBatch, + com.google.bigtable.v2.ProtoRowsBatch.Builder, + com.google.bigtable.v2.ProtoRowsBatchOrBuilder>( + (com.google.bigtable.v2.ProtoRowsBatch) partialRows_, + getParentForChildren(), + isClean()); + partialRows_ = null; + } + partialRowsCase_ = 3; + onChanged(); + return protoRowsBatchBuilder_; + } + + private com.google.protobuf.ByteString resumeToken_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+     * An opaque token sent by the server to allow query resumption and signal
+     * the client to accumulate `partial_rows` since the last non-empty
+     * `resume_token`. On resumption, the resumed query will return the remaining
+     * rows for this query.
+     *
+     * If there is a batch in progress, a non-empty `resume_token`
+     * means that that the batch of `partial_rows` will be complete after merging
+     * the `partial_rows` from this response. The client must only yield
+     * completed batches to the application, and must ensure that any future
+     * retries send the latest token to avoid returning duplicate data.
+     *
+     * The server may set 'resume_token' without a 'partial_rows'. If there is a
+     * batch in progress the client should yield it.
+     *
+     * The server will also send a sentinel `resume_token` when last batch of
+     * `partial_rows` is sent. If the client retries the ExecuteQueryRequest with
+     * the sentinel `resume_token`, the server will emit it again without any
+     * `partial_rows`, then return OK.
+     * 
+ * + * bytes resume_token = 5; + * + * @return The resumeToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getResumeToken() { + return resumeToken_; + } + /** + * + * + *
+     * An opaque token sent by the server to allow query resumption and signal
+     * the client to accumulate `partial_rows` since the last non-empty
+     * `resume_token`. On resumption, the resumed query will return the remaining
+     * rows for this query.
+     *
+     * If there is a batch in progress, a non-empty `resume_token`
+     * means that that the batch of `partial_rows` will be complete after merging
+     * the `partial_rows` from this response. The client must only yield
+     * completed batches to the application, and must ensure that any future
+     * retries send the latest token to avoid returning duplicate data.
+     *
+     * The server may set 'resume_token' without a 'partial_rows'. If there is a
+     * batch in progress the client should yield it.
+     *
+     * The server will also send a sentinel `resume_token` when last batch of
+     * `partial_rows` is sent. If the client retries the ExecuteQueryRequest with
+     * the sentinel `resume_token`, the server will emit it again without any
+     * `partial_rows`, then return OK.
+     * 
+ * + * bytes resume_token = 5; + * + * @param value The resumeToken to set. + * @return This builder for chaining. + */ + public Builder setResumeToken(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + resumeToken_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * An opaque token sent by the server to allow query resumption and signal
+     * the client to accumulate `partial_rows` since the last non-empty
+     * `resume_token`. On resumption, the resumed query will return the remaining
+     * rows for this query.
+     *
+     * If there is a batch in progress, a non-empty `resume_token`
+     * means that that the batch of `partial_rows` will be complete after merging
+     * the `partial_rows` from this response. The client must only yield
+     * completed batches to the application, and must ensure that any future
+     * retries send the latest token to avoid returning duplicate data.
+     *
+     * The server may set 'resume_token' without a 'partial_rows'. If there is a
+     * batch in progress the client should yield it.
+     *
+     * The server will also send a sentinel `resume_token` when last batch of
+     * `partial_rows` is sent. If the client retries the ExecuteQueryRequest with
+     * the sentinel `resume_token`, the server will emit it again without any
+     * `partial_rows`, then return OK.
+     * 
+ * + * bytes resume_token = 5; + * + * @return This builder for chaining. + */ + public Builder clearResumeToken() { + bitField0_ = (bitField0_ & ~0x00000002); + resumeToken_ = getDefaultInstance().getResumeToken(); + onChanged(); + return this; + } + + private int estimatedBatchSize_; + /** + * + * + *
+     * Estimated size of a new batch. The server will always set this when
+     * returning the first `partial_rows` of a batch, and will not set it at any
+     * other time.
+     *
+     * The client can use this estimate to allocate an initial buffer for the
+     * batched results. This helps minimize the number of allocations required,
+     * though the buffer size may still need to be increased if the estimate is
+     * too low.
+     * 
+ * + * int32 estimated_batch_size = 4; + * + * @return The estimatedBatchSize. + */ + @java.lang.Override + public int getEstimatedBatchSize() { + return estimatedBatchSize_; + } + /** + * + * + *
+     * Estimated size of a new batch. The server will always set this when
+     * returning the first `partial_rows` of a batch, and will not set it at any
+     * other time.
+     *
+     * The client can use this estimate to allocate an initial buffer for the
+     * batched results. This helps minimize the number of allocations required,
+     * though the buffer size may still need to be increased if the estimate is
+     * too low.
+     * 
+ * + * int32 estimated_batch_size = 4; + * + * @param value The estimatedBatchSize to set. + * @return This builder for chaining. + */ + public Builder setEstimatedBatchSize(int value) { + + estimatedBatchSize_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * Estimated size of a new batch. The server will always set this when
+     * returning the first `partial_rows` of a batch, and will not set it at any
+     * other time.
+     *
+     * The client can use this estimate to allocate an initial buffer for the
+     * batched results. This helps minimize the number of allocations required,
+     * though the buffer size may still need to be increased if the estimate is
+     * too low.
+     * 
+ * + * int32 estimated_batch_size = 4; + * + * @return This builder for chaining. + */ + public Builder clearEstimatedBatchSize() { + bitField0_ = (bitField0_ & ~0x00000004); + estimatedBatchSize_ = 0; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.PartialResultSet) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.PartialResultSet) + private static final com.google.bigtable.v2.PartialResultSet DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.PartialResultSet(); + } + + public static com.google.bigtable.v2.PartialResultSet getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PartialResultSet parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.PartialResultSet getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/PartialResultSetOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/PartialResultSetOrBuilder.java new file mode 100644 index 0000000000..90191f0eb5 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/PartialResultSetOrBuilder.java @@ -0,0 +1,113 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface PartialResultSetOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.PartialResultSet) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Partial rows in serialized ProtoRows format.
+   * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + * + * @return Whether the protoRowsBatch field is set. + */ + boolean hasProtoRowsBatch(); + /** + * + * + *
+   * Partial rows in serialized ProtoRows format.
+   * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + * + * @return The protoRowsBatch. + */ + com.google.bigtable.v2.ProtoRowsBatch getProtoRowsBatch(); + /** + * + * + *
+   * Partial rows in serialized ProtoRows format.
+   * 
+ * + * .google.bigtable.v2.ProtoRowsBatch proto_rows_batch = 3; + */ + com.google.bigtable.v2.ProtoRowsBatchOrBuilder getProtoRowsBatchOrBuilder(); + + /** + * + * + *
+   * An opaque token sent by the server to allow query resumption and signal
+   * the client to accumulate `partial_rows` since the last non-empty
+   * `resume_token`. On resumption, the resumed query will return the remaining
+   * rows for this query.
+   *
+   * If there is a batch in progress, a non-empty `resume_token`
+   * means that that the batch of `partial_rows` will be complete after merging
+   * the `partial_rows` from this response. The client must only yield
+   * completed batches to the application, and must ensure that any future
+   * retries send the latest token to avoid returning duplicate data.
+   *
+   * The server may set 'resume_token' without a 'partial_rows'. If there is a
+   * batch in progress the client should yield it.
+   *
+   * The server will also send a sentinel `resume_token` when last batch of
+   * `partial_rows` is sent. If the client retries the ExecuteQueryRequest with
+   * the sentinel `resume_token`, the server will emit it again without any
+   * `partial_rows`, then return OK.
+   * 
+ * + * bytes resume_token = 5; + * + * @return The resumeToken. + */ + com.google.protobuf.ByteString getResumeToken(); + + /** + * + * + *
+   * Estimated size of a new batch. The server will always set this when
+   * returning the first `partial_rows` of a batch, and will not set it at any
+   * other time.
+   *
+   * The client can use this estimate to allocate an initial buffer for the
+   * batched results. This helps minimize the number of allocations required,
+   * though the buffer size may still need to be increased if the estimate is
+   * too low.
+   * 
+ * + * int32 estimated_batch_size = 4; + * + * @return The estimatedBatchSize. + */ + int getEstimatedBatchSize(); + + com.google.bigtable.v2.PartialResultSet.PartialRowsCase getPartialRowsCase(); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoFormat.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoFormat.java new file mode 100644 index 0000000000..0fff1e6a83 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoFormat.java @@ -0,0 +1,430 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * Protocol buffers format descriptor, as described by Messages ProtoSchema and
+ * ProtoRows
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ProtoFormat} + */ +public final class ProtoFormat extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ProtoFormat) + ProtoFormatOrBuilder { + private static final long serialVersionUID = 0L; + // Use ProtoFormat.newBuilder() to construct. + private ProtoFormat(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ProtoFormat() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ProtoFormat(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoFormat_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoFormat_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ProtoFormat.class, + com.google.bigtable.v2.ProtoFormat.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ProtoFormat)) { + return super.equals(obj); + } + com.google.bigtable.v2.ProtoFormat other = (com.google.bigtable.v2.ProtoFormat) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoFormat parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoFormat parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoFormat parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ProtoFormat prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Protocol buffers format descriptor, as described by Messages ProtoSchema and
+   * ProtoRows
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ProtoFormat} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ProtoFormat) + com.google.bigtable.v2.ProtoFormatOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoFormat_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoFormat_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ProtoFormat.class, + com.google.bigtable.v2.ProtoFormat.Builder.class); + } + + // Construct using com.google.bigtable.v2.ProtoFormat.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoFormat_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoFormat getDefaultInstanceForType() { + return com.google.bigtable.v2.ProtoFormat.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoFormat build() { + com.google.bigtable.v2.ProtoFormat result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoFormat buildPartial() { + com.google.bigtable.v2.ProtoFormat result = new com.google.bigtable.v2.ProtoFormat(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ProtoFormat) { + return mergeFrom((com.google.bigtable.v2.ProtoFormat) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ProtoFormat other) { + if (other == com.google.bigtable.v2.ProtoFormat.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ProtoFormat) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ProtoFormat) + private static final com.google.bigtable.v2.ProtoFormat DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ProtoFormat(); + } + + public static com.google.bigtable.v2.ProtoFormat getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ProtoFormat parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoFormat getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoFormatOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoFormatOrBuilder.java new file mode 100644 index 0000000000..2dd6df5b29 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoFormatOrBuilder.java @@ -0,0 +1,25 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ProtoFormatOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ProtoFormat) + com.google.protobuf.MessageOrBuilder {} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRows.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRows.java new file mode 100644 index 0000000000..fa2a5ae06a --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRows.java @@ -0,0 +1,976 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * Rows represented in proto format.
+ *
+ * This should be constructed by concatenating the `batch_data` from each
+ * of the relevant `ProtoRowsBatch` messages and parsing the result as a
+ * `ProtoRows` message.
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ProtoRows} + */ +public final class ProtoRows extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ProtoRows) + ProtoRowsOrBuilder { + private static final long serialVersionUID = 0L; + // Use ProtoRows.newBuilder() to construct. + private ProtoRows(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ProtoRows() { + values_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ProtoRows(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto.internal_static_google_bigtable_v2_ProtoRows_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRows_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ProtoRows.class, com.google.bigtable.v2.ProtoRows.Builder.class); + } + + public static final int VALUES_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private java.util.List values_; + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + @java.lang.Override + public java.util.List getValuesList() { + return values_; + } + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + @java.lang.Override + public java.util.List getValuesOrBuilderList() { + return values_; + } + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + @java.lang.Override + public int getValuesCount() { + return values_.size(); + } + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.Value getValues(int index) { + return values_.get(index); + } + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.ValueOrBuilder getValuesOrBuilder(int index) { + return values_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < values_.size(); i++) { + output.writeMessage(2, values_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < values_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, values_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ProtoRows)) { + return super.equals(obj); + } + com.google.bigtable.v2.ProtoRows other = (com.google.bigtable.v2.ProtoRows) obj; + + if (!getValuesList().equals(other.getValuesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getValuesCount() > 0) { + hash = (37 * hash) + VALUES_FIELD_NUMBER; + hash = (53 * hash) + getValuesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ProtoRows parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRows parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoRows parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoRows parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ProtoRows prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Rows represented in proto format.
+   *
+   * This should be constructed by concatenating the `batch_data` from each
+   * of the relevant `ProtoRowsBatch` messages and parsing the result as a
+   * `ProtoRows` message.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ProtoRows} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ProtoRows) + com.google.bigtable.v2.ProtoRowsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRows_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRows_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ProtoRows.class, + com.google.bigtable.v2.ProtoRows.Builder.class); + } + + // Construct using com.google.bigtable.v2.ProtoRows.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + } else { + values_ = null; + valuesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRows_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoRows getDefaultInstanceForType() { + return com.google.bigtable.v2.ProtoRows.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoRows build() { + com.google.bigtable.v2.ProtoRows result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoRows buildPartial() { + com.google.bigtable.v2.ProtoRows result = new com.google.bigtable.v2.ProtoRows(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(com.google.bigtable.v2.ProtoRows result) { + if (valuesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + values_ = java.util.Collections.unmodifiableList(values_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.values_ = values_; + } else { + result.values_ = valuesBuilder_.build(); + } + } + + private void buildPartial0(com.google.bigtable.v2.ProtoRows result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ProtoRows) { + return mergeFrom((com.google.bigtable.v2.ProtoRows) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ProtoRows other) { + if (other == com.google.bigtable.v2.ProtoRows.getDefaultInstance()) return this; + if (valuesBuilder_ == null) { + if (!other.values_.isEmpty()) { + if (values_.isEmpty()) { + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureValuesIsMutable(); + values_.addAll(other.values_); + } + onChanged(); + } + } else { + if (!other.values_.isEmpty()) { + if (valuesBuilder_.isEmpty()) { + valuesBuilder_.dispose(); + valuesBuilder_ = null; + values_ = other.values_; + bitField0_ = (bitField0_ & ~0x00000001); + valuesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getValuesFieldBuilder() + : null; + } else { + valuesBuilder_.addAllMessages(other.values_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 18: + { + com.google.bigtable.v2.Value m = + input.readMessage(com.google.bigtable.v2.Value.parser(), extensionRegistry); + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(m); + } else { + valuesBuilder_.addMessage(m); + } + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.util.List values_ = + java.util.Collections.emptyList(); + + private void ensureValuesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + values_ = new java.util.ArrayList(values_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder, + com.google.bigtable.v2.ValueOrBuilder> + valuesBuilder_; + + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public java.util.List getValuesList() { + if (valuesBuilder_ == null) { + return java.util.Collections.unmodifiableList(values_); + } else { + return valuesBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public int getValuesCount() { + if (valuesBuilder_ == null) { + return values_.size(); + } else { + return valuesBuilder_.getCount(); + } + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public com.google.bigtable.v2.Value getValues(int index) { + if (valuesBuilder_ == null) { + return values_.get(index); + } else { + return valuesBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder setValues(int index, com.google.bigtable.v2.Value value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.set(index, value); + onChanged(); + } else { + valuesBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder setValues(int index, com.google.bigtable.v2.Value.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.set(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder addValues(com.google.bigtable.v2.Value value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(value); + onChanged(); + } else { + valuesBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder addValues(int index, com.google.bigtable.v2.Value value) { + if (valuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureValuesIsMutable(); + values_.add(index, value); + onChanged(); + } else { + valuesBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder addValues(com.google.bigtable.v2.Value.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder addValues(int index, com.google.bigtable.v2.Value.Builder builderForValue) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.add(index, builderForValue.build()); + onChanged(); + } else { + valuesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder addAllValues(java.lang.Iterable values) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, values_); + onChanged(); + } else { + valuesBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder clearValues() { + if (valuesBuilder_ == null) { + values_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + valuesBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public Builder removeValues(int index) { + if (valuesBuilder_ == null) { + ensureValuesIsMutable(); + values_.remove(index); + onChanged(); + } else { + valuesBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public com.google.bigtable.v2.Value.Builder getValuesBuilder(int index) { + return getValuesFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public com.google.bigtable.v2.ValueOrBuilder getValuesOrBuilder(int index) { + if (valuesBuilder_ == null) { + return values_.get(index); + } else { + return valuesBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public java.util.List + getValuesOrBuilderList() { + if (valuesBuilder_ != null) { + return valuesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(values_); + } + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public com.google.bigtable.v2.Value.Builder addValuesBuilder() { + return getValuesFieldBuilder().addBuilder(com.google.bigtable.v2.Value.getDefaultInstance()); + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public com.google.bigtable.v2.Value.Builder addValuesBuilder(int index) { + return getValuesFieldBuilder() + .addBuilder(index, com.google.bigtable.v2.Value.getDefaultInstance()); + } + /** + * + * + *
+     * A proto rows message consists of a list of values. Every N complete values
+     * defines a row, where N is equal to the  number of entries in the
+     * `metadata.proto_schema.columns` value received in the first response.
+     * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + public java.util.List getValuesBuilderList() { + return getValuesFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder, + com.google.bigtable.v2.ValueOrBuilder> + getValuesFieldBuilder() { + if (valuesBuilder_ == null) { + valuesBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Value, + com.google.bigtable.v2.Value.Builder, + com.google.bigtable.v2.ValueOrBuilder>( + values_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + values_ = null; + } + return valuesBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ProtoRows) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ProtoRows) + private static final com.google.bigtable.v2.ProtoRows DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ProtoRows(); + } + + public static com.google.bigtable.v2.ProtoRows getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ProtoRows parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoRows getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsBatch.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsBatch.java new file mode 100644 index 0000000000..e2c981cb16 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsBatch.java @@ -0,0 +1,540 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * Batch of serialized ProtoRows.
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ProtoRowsBatch} + */ +public final class ProtoRowsBatch extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ProtoRowsBatch) + ProtoRowsBatchOrBuilder { + private static final long serialVersionUID = 0L; + // Use ProtoRowsBatch.newBuilder() to construct. + private ProtoRowsBatch(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ProtoRowsBatch() { + batchData_ = com.google.protobuf.ByteString.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ProtoRowsBatch(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRowsBatch_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRowsBatch_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ProtoRowsBatch.class, + com.google.bigtable.v2.ProtoRowsBatch.Builder.class); + } + + public static final int BATCH_DATA_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString batchData_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+   * Merge partial results by concatenating these bytes, then parsing the
+   * overall value as a `ProtoRows` message.
+   * 
+ * + * bytes batch_data = 1; + * + * @return The batchData. + */ + @java.lang.Override + public com.google.protobuf.ByteString getBatchData() { + return batchData_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!batchData_.isEmpty()) { + output.writeBytes(1, batchData_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!batchData_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream.computeBytesSize(1, batchData_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ProtoRowsBatch)) { + return super.equals(obj); + } + com.google.bigtable.v2.ProtoRowsBatch other = (com.google.bigtable.v2.ProtoRowsBatch) obj; + + if (!getBatchData().equals(other.getBatchData())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + BATCH_DATA_FIELD_NUMBER; + hash = (53 * hash) + getBatchData().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoRowsBatch parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ProtoRowsBatch prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Batch of serialized ProtoRows.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ProtoRowsBatch} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ProtoRowsBatch) + com.google.bigtable.v2.ProtoRowsBatchOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRowsBatch_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRowsBatch_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ProtoRowsBatch.class, + com.google.bigtable.v2.ProtoRowsBatch.Builder.class); + } + + // Construct using com.google.bigtable.v2.ProtoRowsBatch.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + batchData_ = com.google.protobuf.ByteString.EMPTY; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoRowsBatch_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoRowsBatch getDefaultInstanceForType() { + return com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoRowsBatch build() { + com.google.bigtable.v2.ProtoRowsBatch result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoRowsBatch buildPartial() { + com.google.bigtable.v2.ProtoRowsBatch result = + new com.google.bigtable.v2.ProtoRowsBatch(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.ProtoRowsBatch result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.batchData_ = batchData_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ProtoRowsBatch) { + return mergeFrom((com.google.bigtable.v2.ProtoRowsBatch) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ProtoRowsBatch other) { + if (other == com.google.bigtable.v2.ProtoRowsBatch.getDefaultInstance()) return this; + if (other.getBatchData() != com.google.protobuf.ByteString.EMPTY) { + setBatchData(other.getBatchData()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + batchData_ = input.readBytes(); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.protobuf.ByteString batchData_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+     * Merge partial results by concatenating these bytes, then parsing the
+     * overall value as a `ProtoRows` message.
+     * 
+ * + * bytes batch_data = 1; + * + * @return The batchData. + */ + @java.lang.Override + public com.google.protobuf.ByteString getBatchData() { + return batchData_; + } + /** + * + * + *
+     * Merge partial results by concatenating these bytes, then parsing the
+     * overall value as a `ProtoRows` message.
+     * 
+ * + * bytes batch_data = 1; + * + * @param value The batchData to set. + * @return This builder for chaining. + */ + public Builder setBatchData(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + batchData_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Merge partial results by concatenating these bytes, then parsing the
+     * overall value as a `ProtoRows` message.
+     * 
+ * + * bytes batch_data = 1; + * + * @return This builder for chaining. + */ + public Builder clearBatchData() { + bitField0_ = (bitField0_ & ~0x00000001); + batchData_ = getDefaultInstance().getBatchData(); + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ProtoRowsBatch) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ProtoRowsBatch) + private static final com.google.bigtable.v2.ProtoRowsBatch DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ProtoRowsBatch(); + } + + public static com.google.bigtable.v2.ProtoRowsBatch getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ProtoRowsBatch parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoRowsBatch getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsBatchOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsBatchOrBuilder.java new file mode 100644 index 0000000000..e7ef6df0d9 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsBatchOrBuilder.java @@ -0,0 +1,40 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ProtoRowsBatchOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ProtoRowsBatch) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Merge partial results by concatenating these bytes, then parsing the
+   * overall value as a `ProtoRows` message.
+   * 
+ * + * bytes batch_data = 1; + * + * @return The batchData. + */ + com.google.protobuf.ByteString getBatchData(); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsOrBuilder.java new file mode 100644 index 0000000000..27c74177bc --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoRowsOrBuilder.java @@ -0,0 +1,87 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ProtoRowsOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ProtoRows) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + java.util.List getValuesList(); + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + com.google.bigtable.v2.Value getValues(int index); + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + int getValuesCount(); + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + java.util.List getValuesOrBuilderList(); + /** + * + * + *
+   * A proto rows message consists of a list of values. Every N complete values
+   * defines a row, where N is equal to the  number of entries in the
+   * `metadata.proto_schema.columns` value received in the first response.
+   * 
+ * + * repeated .google.bigtable.v2.Value values = 2; + */ + com.google.bigtable.v2.ValueOrBuilder getValuesOrBuilder(int index); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoSchema.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoSchema.java new file mode 100644 index 0000000000..980f3b7cbb --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoSchema.java @@ -0,0 +1,930 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * ResultSet schema in proto format
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ProtoSchema} + */ +public final class ProtoSchema extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ProtoSchema) + ProtoSchemaOrBuilder { + private static final long serialVersionUID = 0L; + // Use ProtoSchema.newBuilder() to construct. + private ProtoSchema(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ProtoSchema() { + columns_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ProtoSchema(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoSchema_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoSchema_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ProtoSchema.class, + com.google.bigtable.v2.ProtoSchema.Builder.class); + } + + public static final int COLUMNS_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private java.util.List columns_; + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + @java.lang.Override + public java.util.List getColumnsList() { + return columns_; + } + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + @java.lang.Override + public java.util.List + getColumnsOrBuilderList() { + return columns_; + } + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + @java.lang.Override + public int getColumnsCount() { + return columns_.size(); + } + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.ColumnMetadata getColumns(int index) { + return columns_.get(index); + } + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.ColumnMetadataOrBuilder getColumnsOrBuilder(int index) { + return columns_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < columns_.size(); i++) { + output.writeMessage(1, columns_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < columns_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, columns_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ProtoSchema)) { + return super.equals(obj); + } + com.google.bigtable.v2.ProtoSchema other = (com.google.bigtable.v2.ProtoSchema) obj; + + if (!getColumnsList().equals(other.getColumnsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getColumnsCount() > 0) { + hash = (37 * hash) + COLUMNS_FIELD_NUMBER; + hash = (53 * hash) + getColumnsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoSchema parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoSchema parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ProtoSchema parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ProtoSchema prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * ResultSet schema in proto format
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ProtoSchema} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ProtoSchema) + com.google.bigtable.v2.ProtoSchemaOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoSchema_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoSchema_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ProtoSchema.class, + com.google.bigtable.v2.ProtoSchema.Builder.class); + } + + // Construct using com.google.bigtable.v2.ProtoSchema.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (columnsBuilder_ == null) { + columns_ = java.util.Collections.emptyList(); + } else { + columns_ = null; + columnsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ProtoSchema_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoSchema getDefaultInstanceForType() { + return com.google.bigtable.v2.ProtoSchema.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoSchema build() { + com.google.bigtable.v2.ProtoSchema result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoSchema buildPartial() { + com.google.bigtable.v2.ProtoSchema result = new com.google.bigtable.v2.ProtoSchema(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(com.google.bigtable.v2.ProtoSchema result) { + if (columnsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + columns_ = java.util.Collections.unmodifiableList(columns_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.columns_ = columns_; + } else { + result.columns_ = columnsBuilder_.build(); + } + } + + private void buildPartial0(com.google.bigtable.v2.ProtoSchema result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ProtoSchema) { + return mergeFrom((com.google.bigtable.v2.ProtoSchema) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ProtoSchema other) { + if (other == com.google.bigtable.v2.ProtoSchema.getDefaultInstance()) return this; + if (columnsBuilder_ == null) { + if (!other.columns_.isEmpty()) { + if (columns_.isEmpty()) { + columns_ = other.columns_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureColumnsIsMutable(); + columns_.addAll(other.columns_); + } + onChanged(); + } + } else { + if (!other.columns_.isEmpty()) { + if (columnsBuilder_.isEmpty()) { + columnsBuilder_.dispose(); + columnsBuilder_ = null; + columns_ = other.columns_; + bitField0_ = (bitField0_ & ~0x00000001); + columnsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getColumnsFieldBuilder() + : null; + } else { + columnsBuilder_.addAllMessages(other.columns_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.bigtable.v2.ColumnMetadata m = + input.readMessage( + com.google.bigtable.v2.ColumnMetadata.parser(), extensionRegistry); + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.add(m); + } else { + columnsBuilder_.addMessage(m); + } + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.util.List columns_ = + java.util.Collections.emptyList(); + + private void ensureColumnsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + columns_ = new java.util.ArrayList(columns_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.ColumnMetadata, + com.google.bigtable.v2.ColumnMetadata.Builder, + com.google.bigtable.v2.ColumnMetadataOrBuilder> + columnsBuilder_; + + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public java.util.List getColumnsList() { + if (columnsBuilder_ == null) { + return java.util.Collections.unmodifiableList(columns_); + } else { + return columnsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public int getColumnsCount() { + if (columnsBuilder_ == null) { + return columns_.size(); + } else { + return columnsBuilder_.getCount(); + } + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public com.google.bigtable.v2.ColumnMetadata getColumns(int index) { + if (columnsBuilder_ == null) { + return columns_.get(index); + } else { + return columnsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder setColumns(int index, com.google.bigtable.v2.ColumnMetadata value) { + if (columnsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnsIsMutable(); + columns_.set(index, value); + onChanged(); + } else { + columnsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder setColumns( + int index, com.google.bigtable.v2.ColumnMetadata.Builder builderForValue) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.set(index, builderForValue.build()); + onChanged(); + } else { + columnsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder addColumns(com.google.bigtable.v2.ColumnMetadata value) { + if (columnsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnsIsMutable(); + columns_.add(value); + onChanged(); + } else { + columnsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder addColumns(int index, com.google.bigtable.v2.ColumnMetadata value) { + if (columnsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnsIsMutable(); + columns_.add(index, value); + onChanged(); + } else { + columnsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder addColumns(com.google.bigtable.v2.ColumnMetadata.Builder builderForValue) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.add(builderForValue.build()); + onChanged(); + } else { + columnsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder addColumns( + int index, com.google.bigtable.v2.ColumnMetadata.Builder builderForValue) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.add(index, builderForValue.build()); + onChanged(); + } else { + columnsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder addAllColumns( + java.lang.Iterable values) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, columns_); + onChanged(); + } else { + columnsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder clearColumns() { + if (columnsBuilder_ == null) { + columns_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + columnsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public Builder removeColumns(int index) { + if (columnsBuilder_ == null) { + ensureColumnsIsMutable(); + columns_.remove(index); + onChanged(); + } else { + columnsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public com.google.bigtable.v2.ColumnMetadata.Builder getColumnsBuilder(int index) { + return getColumnsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public com.google.bigtable.v2.ColumnMetadataOrBuilder getColumnsOrBuilder(int index) { + if (columnsBuilder_ == null) { + return columns_.get(index); + } else { + return columnsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public java.util.List + getColumnsOrBuilderList() { + if (columnsBuilder_ != null) { + return columnsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(columns_); + } + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public com.google.bigtable.v2.ColumnMetadata.Builder addColumnsBuilder() { + return getColumnsFieldBuilder() + .addBuilder(com.google.bigtable.v2.ColumnMetadata.getDefaultInstance()); + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public com.google.bigtable.v2.ColumnMetadata.Builder addColumnsBuilder(int index) { + return getColumnsFieldBuilder() + .addBuilder(index, com.google.bigtable.v2.ColumnMetadata.getDefaultInstance()); + } + /** + * + * + *
+     * The columns in the result set.
+     * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + public java.util.List getColumnsBuilderList() { + return getColumnsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.ColumnMetadata, + com.google.bigtable.v2.ColumnMetadata.Builder, + com.google.bigtable.v2.ColumnMetadataOrBuilder> + getColumnsFieldBuilder() { + if (columnsBuilder_ == null) { + columnsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.ColumnMetadata, + com.google.bigtable.v2.ColumnMetadata.Builder, + com.google.bigtable.v2.ColumnMetadataOrBuilder>( + columns_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + columns_ = null; + } + return columnsBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ProtoSchema) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ProtoSchema) + private static final com.google.bigtable.v2.ProtoSchema DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ProtoSchema(); + } + + public static com.google.bigtable.v2.ProtoSchema getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ProtoSchema parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ProtoSchema getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoSchemaOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoSchemaOrBuilder.java new file mode 100644 index 0000000000..24cc5d0146 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ProtoSchemaOrBuilder.java @@ -0,0 +1,78 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ProtoSchemaOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ProtoSchema) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + java.util.List getColumnsList(); + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + com.google.bigtable.v2.ColumnMetadata getColumns(int index); + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + int getColumnsCount(); + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + java.util.List + getColumnsOrBuilderList(); + /** + * + * + *
+   * The columns in the result set.
+   * 
+ * + * repeated .google.bigtable.v2.ColumnMetadata columns = 1; + */ + com.google.bigtable.v2.ColumnMetadataOrBuilder getColumnsOrBuilder(int index); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ResultSetMetadata.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ResultSetMetadata.java new file mode 100644 index 0000000000..13c2ba93ba --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ResultSetMetadata.java @@ -0,0 +1,812 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * Describes the structure of a Bigtable result set.
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ResultSetMetadata} + */ +public final class ResultSetMetadata extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ResultSetMetadata) + ResultSetMetadataOrBuilder { + private static final long serialVersionUID = 0L; + // Use ResultSetMetadata.newBuilder() to construct. + private ResultSetMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ResultSetMetadata() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ResultSetMetadata(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ResultSetMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ResultSetMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ResultSetMetadata.class, + com.google.bigtable.v2.ResultSetMetadata.Builder.class); + } + + private int schemaCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object schema_; + + public enum SchemaCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + PROTO_SCHEMA(1), + SCHEMA_NOT_SET(0); + private final int value; + + private SchemaCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static SchemaCase valueOf(int value) { + return forNumber(value); + } + + public static SchemaCase forNumber(int value) { + switch (value) { + case 1: + return PROTO_SCHEMA; + case 0: + return SCHEMA_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public SchemaCase getSchemaCase() { + return SchemaCase.forNumber(schemaCase_); + } + + public static final int PROTO_SCHEMA_FIELD_NUMBER = 1; + /** + * + * + *
+   * Schema in proto format
+   * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + * + * @return Whether the protoSchema field is set. + */ + @java.lang.Override + public boolean hasProtoSchema() { + return schemaCase_ == 1; + } + /** + * + * + *
+   * Schema in proto format
+   * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + * + * @return The protoSchema. + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoSchema getProtoSchema() { + if (schemaCase_ == 1) { + return (com.google.bigtable.v2.ProtoSchema) schema_; + } + return com.google.bigtable.v2.ProtoSchema.getDefaultInstance(); + } + /** + * + * + *
+   * Schema in proto format
+   * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoSchemaOrBuilder getProtoSchemaOrBuilder() { + if (schemaCase_ == 1) { + return (com.google.bigtable.v2.ProtoSchema) schema_; + } + return com.google.bigtable.v2.ProtoSchema.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (schemaCase_ == 1) { + output.writeMessage(1, (com.google.bigtable.v2.ProtoSchema) schema_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (schemaCase_ == 1) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 1, (com.google.bigtable.v2.ProtoSchema) schema_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.ResultSetMetadata)) { + return super.equals(obj); + } + com.google.bigtable.v2.ResultSetMetadata other = (com.google.bigtable.v2.ResultSetMetadata) obj; + + if (!getSchemaCase().equals(other.getSchemaCase())) return false; + switch (schemaCase_) { + case 1: + if (!getProtoSchema().equals(other.getProtoSchema())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (schemaCase_) { + case 1: + hash = (37 * hash) + PROTO_SCHEMA_FIELD_NUMBER; + hash = (53 * hash) + getProtoSchema().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ResultSetMetadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.ResultSetMetadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Describes the structure of a Bigtable result set.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ResultSetMetadata} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ResultSetMetadata) + com.google.bigtable.v2.ResultSetMetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ResultSetMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ResultSetMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ResultSetMetadata.class, + com.google.bigtable.v2.ResultSetMetadata.Builder.class); + } + + // Construct using com.google.bigtable.v2.ResultSetMetadata.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (protoSchemaBuilder_ != null) { + protoSchemaBuilder_.clear(); + } + schemaCase_ = 0; + schema_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ResultSetMetadata_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ResultSetMetadata getDefaultInstanceForType() { + return com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ResultSetMetadata build() { + com.google.bigtable.v2.ResultSetMetadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ResultSetMetadata buildPartial() { + com.google.bigtable.v2.ResultSetMetadata result = + new com.google.bigtable.v2.ResultSetMetadata(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.ResultSetMetadata result) { + int from_bitField0_ = bitField0_; + } + + private void buildPartialOneofs(com.google.bigtable.v2.ResultSetMetadata result) { + result.schemaCase_ = schemaCase_; + result.schema_ = this.schema_; + if (schemaCase_ == 1 && protoSchemaBuilder_ != null) { + result.schema_ = protoSchemaBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ResultSetMetadata) { + return mergeFrom((com.google.bigtable.v2.ResultSetMetadata) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ResultSetMetadata other) { + if (other == com.google.bigtable.v2.ResultSetMetadata.getDefaultInstance()) return this; + switch (other.getSchemaCase()) { + case PROTO_SCHEMA: + { + mergeProtoSchema(other.getProtoSchema()); + break; + } + case SCHEMA_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getProtoSchemaFieldBuilder().getBuilder(), extensionRegistry); + schemaCase_ = 1; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int schemaCase_ = 0; + private java.lang.Object schema_; + + public SchemaCase getSchemaCase() { + return SchemaCase.forNumber(schemaCase_); + } + + public Builder clearSchema() { + schemaCase_ = 0; + schema_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoSchema, + com.google.bigtable.v2.ProtoSchema.Builder, + com.google.bigtable.v2.ProtoSchemaOrBuilder> + protoSchemaBuilder_; + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + * + * @return Whether the protoSchema field is set. + */ + @java.lang.Override + public boolean hasProtoSchema() { + return schemaCase_ == 1; + } + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + * + * @return The protoSchema. + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoSchema getProtoSchema() { + if (protoSchemaBuilder_ == null) { + if (schemaCase_ == 1) { + return (com.google.bigtable.v2.ProtoSchema) schema_; + } + return com.google.bigtable.v2.ProtoSchema.getDefaultInstance(); + } else { + if (schemaCase_ == 1) { + return protoSchemaBuilder_.getMessage(); + } + return com.google.bigtable.v2.ProtoSchema.getDefaultInstance(); + } + } + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + public Builder setProtoSchema(com.google.bigtable.v2.ProtoSchema value) { + if (protoSchemaBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + schema_ = value; + onChanged(); + } else { + protoSchemaBuilder_.setMessage(value); + } + schemaCase_ = 1; + return this; + } + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + public Builder setProtoSchema(com.google.bigtable.v2.ProtoSchema.Builder builderForValue) { + if (protoSchemaBuilder_ == null) { + schema_ = builderForValue.build(); + onChanged(); + } else { + protoSchemaBuilder_.setMessage(builderForValue.build()); + } + schemaCase_ = 1; + return this; + } + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + public Builder mergeProtoSchema(com.google.bigtable.v2.ProtoSchema value) { + if (protoSchemaBuilder_ == null) { + if (schemaCase_ == 1 + && schema_ != com.google.bigtable.v2.ProtoSchema.getDefaultInstance()) { + schema_ = + com.google.bigtable.v2.ProtoSchema.newBuilder( + (com.google.bigtable.v2.ProtoSchema) schema_) + .mergeFrom(value) + .buildPartial(); + } else { + schema_ = value; + } + onChanged(); + } else { + if (schemaCase_ == 1) { + protoSchemaBuilder_.mergeFrom(value); + } else { + protoSchemaBuilder_.setMessage(value); + } + } + schemaCase_ = 1; + return this; + } + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + public Builder clearProtoSchema() { + if (protoSchemaBuilder_ == null) { + if (schemaCase_ == 1) { + schemaCase_ = 0; + schema_ = null; + onChanged(); + } + } else { + if (schemaCase_ == 1) { + schemaCase_ = 0; + schema_ = null; + } + protoSchemaBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + public com.google.bigtable.v2.ProtoSchema.Builder getProtoSchemaBuilder() { + return getProtoSchemaFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.ProtoSchemaOrBuilder getProtoSchemaOrBuilder() { + if ((schemaCase_ == 1) && (protoSchemaBuilder_ != null)) { + return protoSchemaBuilder_.getMessageOrBuilder(); + } else { + if (schemaCase_ == 1) { + return (com.google.bigtable.v2.ProtoSchema) schema_; + } + return com.google.bigtable.v2.ProtoSchema.getDefaultInstance(); + } + } + /** + * + * + *
+     * Schema in proto format
+     * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoSchema, + com.google.bigtable.v2.ProtoSchema.Builder, + com.google.bigtable.v2.ProtoSchemaOrBuilder> + getProtoSchemaFieldBuilder() { + if (protoSchemaBuilder_ == null) { + if (!(schemaCase_ == 1)) { + schema_ = com.google.bigtable.v2.ProtoSchema.getDefaultInstance(); + } + protoSchemaBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ProtoSchema, + com.google.bigtable.v2.ProtoSchema.Builder, + com.google.bigtable.v2.ProtoSchemaOrBuilder>( + (com.google.bigtable.v2.ProtoSchema) schema_, getParentForChildren(), isClean()); + schema_ = null; + } + schemaCase_ = 1; + onChanged(); + return protoSchemaBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ResultSetMetadata) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ResultSetMetadata) + private static final com.google.bigtable.v2.ResultSetMetadata DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ResultSetMetadata(); + } + + public static com.google.bigtable.v2.ResultSetMetadata getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ResultSetMetadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.ResultSetMetadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ResultSetMetadataOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ResultSetMetadataOrBuilder.java new file mode 100644 index 0000000000..ac35e34694 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ResultSetMetadataOrBuilder.java @@ -0,0 +1,63 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/data.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface ResultSetMetadataOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ResultSetMetadata) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Schema in proto format
+   * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + * + * @return Whether the protoSchema field is set. + */ + boolean hasProtoSchema(); + /** + * + * + *
+   * Schema in proto format
+   * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + * + * @return The protoSchema. + */ + com.google.bigtable.v2.ProtoSchema getProtoSchema(); + /** + * + * + *
+   * Schema in proto format
+   * 
+ * + * .google.bigtable.v2.ProtoSchema proto_schema = 1; + */ + com.google.bigtable.v2.ProtoSchemaOrBuilder getProtoSchemaOrBuilder(); + + com.google.bigtable.v2.ResultSetMetadata.SchemaCase getSchemaCase(); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/Type.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/Type.java new file mode 100644 index 0000000000..1978c3ba9f --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/Type.java @@ -0,0 +1,20607 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/types.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +/** + * + * + *
+ * `Type` represents the type of data that is written to, read from, or stored
+ * in Bigtable. It is heavily based on the GoogleSQL standard to help maintain
+ * familiarity and consistency across products and features.
+ *
+ * For compatibility with Bigtable's existing untyped APIs, each `Type` includes
+ * an `Encoding` which describes how to convert to/from the underlying data.
+ *
+ * Each encoding also defines the following properties:
+ *
+ *  * Order-preserving: Does the encoded value sort consistently with the
+ *    original typed value? Note that Bigtable will always sort data based on
+ *    the raw encoded value, *not* the decoded type.
+ *     - Example: BYTES values sort in the same order as their raw encodings.
+ *     - Counterexample: Encoding INT64 as a fixed-width decimal string does
+ *       *not* preserve sort order when dealing with negative numbers.
+ *       `INT64(1) > INT64(-1)`, but `STRING("-00001") > STRING("00001)`.
+ *  * Self-delimiting: If we concatenate two encoded values, can we always tell
+ *    where the first one ends and the second one begins?
+ *     - Example: If we encode INT64s to fixed-width STRINGs, the first value
+ *       will always contain exactly N digits, possibly preceded by a sign.
+ *     - Counterexample: If we concatenate two UTF-8 encoded STRINGs, we have
+ *       no way to tell where the first one ends.
+ *  * Compatibility: Which other systems have matching encoding schemes? For
+ *    example, does this encoding have a GoogleSQL equivalent? HBase? Java?
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.Type} + */ +public final class Type extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type) + TypeOrBuilder { + private static final long serialVersionUID = 0L; + // Use Type.newBuilder() to construct. + private Type(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Type() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Type(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto.internal_static_google_bigtable_v2_Type_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.class, com.google.bigtable.v2.Type.Builder.class); + } + + public interface BytesOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Bytes) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + boolean hasEncoding(); + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + * + * @return The encoding. + */ + com.google.bigtable.v2.Type.Bytes.Encoding getEncoding(); + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + com.google.bigtable.v2.Type.Bytes.EncodingOrBuilder getEncodingOrBuilder(); + } + /** + * + * + *
+   * Bytes
+   * Values of type `Bytes` are stored in `Value.bytes_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Bytes} + */ + public static final class Bytes extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Bytes) + BytesOrBuilder { + private static final long serialVersionUID = 0L; + // Use Bytes.newBuilder() to construct. + private Bytes(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Bytes() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Bytes(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Bytes.class, + com.google.bigtable.v2.Type.Bytes.Builder.class); + } + + public interface EncodingOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Bytes.Encoding) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * Use `Raw` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + * + * @return Whether the raw field is set. + */ + boolean hasRaw(); + /** + * + * + *
+       * Use `Raw` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + * + * @return The raw. + */ + com.google.bigtable.v2.Type.Bytes.Encoding.Raw getRaw(); + /** + * + * + *
+       * Use `Raw` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + com.google.bigtable.v2.Type.Bytes.Encoding.RawOrBuilder getRawOrBuilder(); + + com.google.bigtable.v2.Type.Bytes.Encoding.EncodingCase getEncodingCase(); + } + /** + * + * + *
+     * Rules used to convert to/from lower level types.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Bytes.Encoding} + */ + public static final class Encoding extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Bytes.Encoding) + EncodingOrBuilder { + private static final long serialVersionUID = 0L; + // Use Encoding.newBuilder() to construct. + private Encoding(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Encoding() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Encoding(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Bytes.Encoding.class, + com.google.bigtable.v2.Type.Bytes.Encoding.Builder.class); + } + + public interface RawOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Bytes.Encoding.Raw) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+       * Leaves the value "as-is"
+       * * Order-preserving? Yes
+       * * Self-delimiting? No
+       * * Compatibility? N/A
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Bytes.Encoding.Raw} + */ + public static final class Raw extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Bytes.Encoding.Raw) + RawOrBuilder { + private static final long serialVersionUID = 0L; + // Use Raw.newBuilder() to construct. + private Raw(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Raw() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Raw(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.class, + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Bytes.Encoding.Raw)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Bytes.Encoding.Raw other = + (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Bytes.Encoding.Raw prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+         * Leaves the value "as-is"
+         * * Order-preserving? Yes
+         * * Self-delimiting? No
+         * * Compatibility? N/A
+         * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Bytes.Encoding.Raw} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Bytes.Encoding.Raw) + com.google.bigtable.v2.Type.Bytes.Encoding.RawOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.class, + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Bytes.Encoding.Raw.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding.Raw getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding.Raw build() { + com.google.bigtable.v2.Type.Bytes.Encoding.Raw result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding.Raw buildPartial() { + com.google.bigtable.v2.Type.Bytes.Encoding.Raw result = + new com.google.bigtable.v2.Type.Bytes.Encoding.Raw(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Bytes.Encoding.Raw) { + return mergeFrom((com.google.bigtable.v2.Type.Bytes.Encoding.Raw) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Bytes.Encoding.Raw other) { + if (other == com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance()) + return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Bytes.Encoding.Raw) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Bytes.Encoding.Raw) + private static final com.google.bigtable.v2.Type.Bytes.Encoding.Raw DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Bytes.Encoding.Raw(); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding.Raw getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Raw parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding.Raw getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int encodingCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object encoding_; + + public enum EncodingCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + RAW(1), + ENCODING_NOT_SET(0); + private final int value; + + private EncodingCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static EncodingCase valueOf(int value) { + return forNumber(value); + } + + public static EncodingCase forNumber(int value) { + switch (value) { + case 1: + return RAW; + case 0: + return ENCODING_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public EncodingCase getEncodingCase() { + return EncodingCase.forNumber(encodingCase_); + } + + public static final int RAW_FIELD_NUMBER = 1; + /** + * + * + *
+       * Use `Raw` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + * + * @return Whether the raw field is set. + */ + @java.lang.Override + public boolean hasRaw() { + return encodingCase_ == 1; + } + /** + * + * + *
+       * Use `Raw` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + * + * @return The raw. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding.Raw getRaw() { + if (encodingCase_ == 1) { + return (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) encoding_; + } + return com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance(); + } + /** + * + * + *
+       * Use `Raw` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding.RawOrBuilder getRawOrBuilder() { + if (encodingCase_ == 1) { + return (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) encoding_; + } + return com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (encodingCase_ == 1) { + output.writeMessage(1, (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) encoding_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (encodingCase_ == 1) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 1, (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) encoding_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Bytes.Encoding)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Bytes.Encoding other = + (com.google.bigtable.v2.Type.Bytes.Encoding) obj; + + if (!getEncodingCase().equals(other.getEncodingCase())) return false; + switch (encodingCase_) { + case 1: + if (!getRaw().equals(other.getRaw())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (encodingCase_) { + case 1: + hash = (37 * hash) + RAW_FIELD_NUMBER; + hash = (53 * hash) + getRaw().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Bytes.Encoding prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+       * Rules used to convert to/from lower level types.
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Bytes.Encoding} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Bytes.Encoding) + com.google.bigtable.v2.Type.Bytes.EncodingOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Bytes.Encoding.class, + com.google.bigtable.v2.Type.Bytes.Encoding.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Bytes.Encoding.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (rawBuilder_ != null) { + rawBuilder_.clear(); + } + encodingCase_ = 0; + encoding_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_Encoding_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Bytes.Encoding.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding build() { + com.google.bigtable.v2.Type.Bytes.Encoding result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding buildPartial() { + com.google.bigtable.v2.Type.Bytes.Encoding result = + new com.google.bigtable.v2.Type.Bytes.Encoding(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.Bytes.Encoding result) { + int from_bitField0_ = bitField0_; + } + + private void buildPartialOneofs(com.google.bigtable.v2.Type.Bytes.Encoding result) { + result.encodingCase_ = encodingCase_; + result.encoding_ = this.encoding_; + if (encodingCase_ == 1 && rawBuilder_ != null) { + result.encoding_ = rawBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Bytes.Encoding) { + return mergeFrom((com.google.bigtable.v2.Type.Bytes.Encoding) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Bytes.Encoding other) { + if (other == com.google.bigtable.v2.Type.Bytes.Encoding.getDefaultInstance()) return this; + switch (other.getEncodingCase()) { + case RAW: + { + mergeRaw(other.getRaw()); + break; + } + case ENCODING_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getRawFieldBuilder().getBuilder(), extensionRegistry); + encodingCase_ = 1; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int encodingCase_ = 0; + private java.lang.Object encoding_; + + public EncodingCase getEncodingCase() { + return EncodingCase.forNumber(encodingCase_); + } + + public Builder clearEncoding() { + encodingCase_ = 0; + encoding_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes.Encoding.Raw, + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.Builder, + com.google.bigtable.v2.Type.Bytes.Encoding.RawOrBuilder> + rawBuilder_; + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + * + * @return Whether the raw field is set. + */ + @java.lang.Override + public boolean hasRaw() { + return encodingCase_ == 1; + } + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + * + * @return The raw. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding.Raw getRaw() { + if (rawBuilder_ == null) { + if (encodingCase_ == 1) { + return (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) encoding_; + } + return com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance(); + } else { + if (encodingCase_ == 1) { + return rawBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance(); + } + } + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + public Builder setRaw(com.google.bigtable.v2.Type.Bytes.Encoding.Raw value) { + if (rawBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + encoding_ = value; + onChanged(); + } else { + rawBuilder_.setMessage(value); + } + encodingCase_ = 1; + return this; + } + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + public Builder setRaw( + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.Builder builderForValue) { + if (rawBuilder_ == null) { + encoding_ = builderForValue.build(); + onChanged(); + } else { + rawBuilder_.setMessage(builderForValue.build()); + } + encodingCase_ = 1; + return this; + } + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + public Builder mergeRaw(com.google.bigtable.v2.Type.Bytes.Encoding.Raw value) { + if (rawBuilder_ == null) { + if (encodingCase_ == 1 + && encoding_ + != com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance()) { + encoding_ = + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.newBuilder( + (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) encoding_) + .mergeFrom(value) + .buildPartial(); + } else { + encoding_ = value; + } + onChanged(); + } else { + if (encodingCase_ == 1) { + rawBuilder_.mergeFrom(value); + } else { + rawBuilder_.setMessage(value); + } + } + encodingCase_ = 1; + return this; + } + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + public Builder clearRaw() { + if (rawBuilder_ == null) { + if (encodingCase_ == 1) { + encodingCase_ = 0; + encoding_ = null; + onChanged(); + } + } else { + if (encodingCase_ == 1) { + encodingCase_ = 0; + encoding_ = null; + } + rawBuilder_.clear(); + } + return this; + } + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + public com.google.bigtable.v2.Type.Bytes.Encoding.Raw.Builder getRawBuilder() { + return getRawFieldBuilder().getBuilder(); + } + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding.RawOrBuilder getRawOrBuilder() { + if ((encodingCase_ == 1) && (rawBuilder_ != null)) { + return rawBuilder_.getMessageOrBuilder(); + } else { + if (encodingCase_ == 1) { + return (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) encoding_; + } + return com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance(); + } + } + /** + * + * + *
+         * Use `Raw` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding.Raw raw = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes.Encoding.Raw, + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.Builder, + com.google.bigtable.v2.Type.Bytes.Encoding.RawOrBuilder> + getRawFieldBuilder() { + if (rawBuilder_ == null) { + if (!(encodingCase_ == 1)) { + encoding_ = com.google.bigtable.v2.Type.Bytes.Encoding.Raw.getDefaultInstance(); + } + rawBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes.Encoding.Raw, + com.google.bigtable.v2.Type.Bytes.Encoding.Raw.Builder, + com.google.bigtable.v2.Type.Bytes.Encoding.RawOrBuilder>( + (com.google.bigtable.v2.Type.Bytes.Encoding.Raw) encoding_, + getParentForChildren(), + isClean()); + encoding_ = null; + } + encodingCase_ = 1; + onChanged(); + return rawBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Bytes.Encoding) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Bytes.Encoding) + private static final com.google.bigtable.v2.Type.Bytes.Encoding DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Bytes.Encoding(); + } + + public static com.google.bigtable.v2.Type.Bytes.Encoding getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Encoding parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int bitField0_; + public static final int ENCODING_FIELD_NUMBER = 1; + private com.google.bigtable.v2.Type.Bytes.Encoding encoding_; + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + @java.lang.Override + public boolean hasEncoding() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + * + * @return The encoding. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.Encoding getEncoding() { + return encoding_ == null + ? com.google.bigtable.v2.Type.Bytes.Encoding.getDefaultInstance() + : encoding_; + } + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes.EncodingOrBuilder getEncodingOrBuilder() { + return encoding_ == null + ? com.google.bigtable.v2.Type.Bytes.Encoding.getDefaultInstance() + : encoding_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getEncoding()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEncoding()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Bytes)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Bytes other = (com.google.bigtable.v2.Type.Bytes) obj; + + if (hasEncoding() != other.hasEncoding()) return false; + if (hasEncoding()) { + if (!getEncoding().equals(other.getEncoding())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasEncoding()) { + hash = (37 * hash) + ENCODING_FIELD_NUMBER; + hash = (53 * hash) + getEncoding().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bytes parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Bytes prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * Bytes
+     * Values of type `Bytes` are stored in `Value.bytes_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Bytes} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Bytes) + com.google.bigtable.v2.Type.BytesOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Bytes.class, + com.google.bigtable.v2.Type.Bytes.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Bytes.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getEncodingFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + encoding_ = null; + if (encodingBuilder_ != null) { + encodingBuilder_.dispose(); + encodingBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bytes_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Bytes.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes build() { + com.google.bigtable.v2.Type.Bytes result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes buildPartial() { + com.google.bigtable.v2.Type.Bytes result = new com.google.bigtable.v2.Type.Bytes(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.Bytes result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.encoding_ = encodingBuilder_ == null ? encoding_ : encodingBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Bytes) { + return mergeFrom((com.google.bigtable.v2.Type.Bytes) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Bytes other) { + if (other == com.google.bigtable.v2.Type.Bytes.getDefaultInstance()) return this; + if (other.hasEncoding()) { + mergeEncoding(other.getEncoding()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEncodingFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.bigtable.v2.Type.Bytes.Encoding encoding_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes.Encoding, + com.google.bigtable.v2.Type.Bytes.Encoding.Builder, + com.google.bigtable.v2.Type.Bytes.EncodingOrBuilder> + encodingBuilder_; + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + public boolean hasEncoding() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + * + * @return The encoding. + */ + public com.google.bigtable.v2.Type.Bytes.Encoding getEncoding() { + if (encodingBuilder_ == null) { + return encoding_ == null + ? com.google.bigtable.v2.Type.Bytes.Encoding.getDefaultInstance() + : encoding_; + } else { + return encodingBuilder_.getMessage(); + } + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + public Builder setEncoding(com.google.bigtable.v2.Type.Bytes.Encoding value) { + if (encodingBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + encoding_ = value; + } else { + encodingBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + public Builder setEncoding( + com.google.bigtable.v2.Type.Bytes.Encoding.Builder builderForValue) { + if (encodingBuilder_ == null) { + encoding_ = builderForValue.build(); + } else { + encodingBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + public Builder mergeEncoding(com.google.bigtable.v2.Type.Bytes.Encoding value) { + if (encodingBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && encoding_ != null + && encoding_ != com.google.bigtable.v2.Type.Bytes.Encoding.getDefaultInstance()) { + getEncodingBuilder().mergeFrom(value); + } else { + encoding_ = value; + } + } else { + encodingBuilder_.mergeFrom(value); + } + if (encoding_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + public Builder clearEncoding() { + bitField0_ = (bitField0_ & ~0x00000001); + encoding_ = null; + if (encodingBuilder_ != null) { + encodingBuilder_.dispose(); + encodingBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + public com.google.bigtable.v2.Type.Bytes.Encoding.Builder getEncodingBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getEncodingFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + public com.google.bigtable.v2.Type.Bytes.EncodingOrBuilder getEncodingOrBuilder() { + if (encodingBuilder_ != null) { + return encodingBuilder_.getMessageOrBuilder(); + } else { + return encoding_ == null + ? com.google.bigtable.v2.Type.Bytes.Encoding.getDefaultInstance() + : encoding_; + } + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Bytes.Encoding encoding = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes.Encoding, + com.google.bigtable.v2.Type.Bytes.Encoding.Builder, + com.google.bigtable.v2.Type.Bytes.EncodingOrBuilder> + getEncodingFieldBuilder() { + if (encodingBuilder_ == null) { + encodingBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes.Encoding, + com.google.bigtable.v2.Type.Bytes.Encoding.Builder, + com.google.bigtable.v2.Type.Bytes.EncodingOrBuilder>( + getEncoding(), getParentForChildren(), isClean()); + encoding_ = null; + } + return encodingBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Bytes) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Bytes) + private static final com.google.bigtable.v2.Type.Bytes DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Bytes(); + } + + public static com.google.bigtable.v2.Type.Bytes getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Bytes parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface StringOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.String) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + boolean hasEncoding(); + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + * + * @return The encoding. + */ + com.google.bigtable.v2.Type.String.Encoding getEncoding(); + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + com.google.bigtable.v2.Type.String.EncodingOrBuilder getEncodingOrBuilder(); + } + /** + * + * + *
+   * String
+   * Values of type `String` are stored in `Value.string_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.String} + */ + public static final class String extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.String) + StringOrBuilder { + private static final long serialVersionUID = 0L; + // Use String.newBuilder() to construct. + private String(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private String() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new String(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.String.class, + com.google.bigtable.v2.Type.String.Builder.class); + } + + public interface EncodingOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.String.Encoding) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * Use `Utf8Bytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + * + * @return Whether the utf8Bytes field is set. + */ + boolean hasUtf8Bytes(); + /** + * + * + *
+       * Use `Utf8Bytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + * + * @return The utf8Bytes. + */ + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes getUtf8Bytes(); + /** + * + * + *
+       * Use `Utf8Bytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + com.google.bigtable.v2.Type.String.Encoding.Utf8BytesOrBuilder getUtf8BytesOrBuilder(); + + com.google.bigtable.v2.Type.String.Encoding.EncodingCase getEncodingCase(); + } + /** + * + * + *
+     * Rules used to convert to/from lower level types.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.String.Encoding} + */ + public static final class Encoding extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.String.Encoding) + EncodingOrBuilder { + private static final long serialVersionUID = 0L; + // Use Encoding.newBuilder() to construct. + private Encoding(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Encoding() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Encoding(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.String.Encoding.class, + com.google.bigtable.v2.Type.String.Encoding.Builder.class); + } + + public interface Utf8BytesOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.String.Encoding.Utf8Bytes) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+       * UTF-8 encoding
+       * * Order-preserving? Yes (code point order)
+       * * Self-delimiting? No
+       * * Compatibility?
+       *    - BigQuery Federation `TEXT` encoding
+       *    - HBase `Bytes.toBytes`
+       *    - Java `String#getBytes(StandardCharsets.UTF_8)`
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.String.Encoding.Utf8Bytes} + */ + public static final class Utf8Bytes extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.String.Encoding.Utf8Bytes) + Utf8BytesOrBuilder { + private static final long serialVersionUID = 0L; + // Use Utf8Bytes.newBuilder() to construct. + private Utf8Bytes(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Utf8Bytes() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Utf8Bytes(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.class, + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes other = + (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+         * UTF-8 encoding
+         * * Order-preserving? Yes (code point order)
+         * * Self-delimiting? No
+         * * Compatibility?
+         *    - BigQuery Federation `TEXT` encoding
+         *    - HBase `Bytes.toBytes`
+         *    - Java `String#getBytes(StandardCharsets.UTF_8)`
+         * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.String.Encoding.Utf8Bytes} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.String.Encoding.Utf8Bytes) + com.google.bigtable.v2.Type.String.Encoding.Utf8BytesOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.class, + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes build() { + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes buildPartial() { + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes result = + new com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) { + return mergeFrom((com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes other) { + if (other == com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance()) + return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.String.Encoding.Utf8Bytes) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.String.Encoding.Utf8Bytes) + private static final com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes(); + } + + public static com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Utf8Bytes parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int encodingCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object encoding_; + + public enum EncodingCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + UTF8_BYTES(2), + ENCODING_NOT_SET(0); + private final int value; + + private EncodingCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static EncodingCase valueOf(int value) { + return forNumber(value); + } + + public static EncodingCase forNumber(int value) { + switch (value) { + case 2: + return UTF8_BYTES; + case 0: + return ENCODING_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public EncodingCase getEncodingCase() { + return EncodingCase.forNumber(encodingCase_); + } + + public static final int UTF8_BYTES_FIELD_NUMBER = 2; + /** + * + * + *
+       * Use `Utf8Bytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + * + * @return Whether the utf8Bytes field is set. + */ + @java.lang.Override + public boolean hasUtf8Bytes() { + return encodingCase_ == 2; + } + /** + * + * + *
+       * Use `Utf8Bytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + * + * @return The utf8Bytes. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes getUtf8Bytes() { + if (encodingCase_ == 2) { + return (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) encoding_; + } + return com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance(); + } + /** + * + * + *
+       * Use `Utf8Bytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding.Utf8BytesOrBuilder + getUtf8BytesOrBuilder() { + if (encodingCase_ == 2) { + return (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) encoding_; + } + return com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (encodingCase_ == 2) { + output.writeMessage(2, (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) encoding_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (encodingCase_ == 2) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 2, (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) encoding_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.String.Encoding)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.String.Encoding other = + (com.google.bigtable.v2.Type.String.Encoding) obj; + + if (!getEncodingCase().equals(other.getEncodingCase())) return false; + switch (encodingCase_) { + case 2: + if (!getUtf8Bytes().equals(other.getUtf8Bytes())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (encodingCase_) { + case 2: + hash = (37 * hash) + UTF8_BYTES_FIELD_NUMBER; + hash = (53 * hash) + getUtf8Bytes().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.String.Encoding parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.String.Encoding prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+       * Rules used to convert to/from lower level types.
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.String.Encoding} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.String.Encoding) + com.google.bigtable.v2.Type.String.EncodingOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.String.Encoding.class, + com.google.bigtable.v2.Type.String.Encoding.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.String.Encoding.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (utf8BytesBuilder_ != null) { + utf8BytesBuilder_.clear(); + } + encodingCase_ = 0; + encoding_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_Encoding_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.String.Encoding.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding build() { + com.google.bigtable.v2.Type.String.Encoding result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding buildPartial() { + com.google.bigtable.v2.Type.String.Encoding result = + new com.google.bigtable.v2.Type.String.Encoding(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.String.Encoding result) { + int from_bitField0_ = bitField0_; + } + + private void buildPartialOneofs(com.google.bigtable.v2.Type.String.Encoding result) { + result.encodingCase_ = encodingCase_; + result.encoding_ = this.encoding_; + if (encodingCase_ == 2 && utf8BytesBuilder_ != null) { + result.encoding_ = utf8BytesBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.String.Encoding) { + return mergeFrom((com.google.bigtable.v2.Type.String.Encoding) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.String.Encoding other) { + if (other == com.google.bigtable.v2.Type.String.Encoding.getDefaultInstance()) + return this; + switch (other.getEncodingCase()) { + case UTF8_BYTES: + { + mergeUtf8Bytes(other.getUtf8Bytes()); + break; + } + case ENCODING_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 18: + { + input.readMessage(getUtf8BytesFieldBuilder().getBuilder(), extensionRegistry); + encodingCase_ = 2; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int encodingCase_ = 0; + private java.lang.Object encoding_; + + public EncodingCase getEncodingCase() { + return EncodingCase.forNumber(encodingCase_); + } + + public Builder clearEncoding() { + encodingCase_ = 0; + encoding_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes, + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.Builder, + com.google.bigtable.v2.Type.String.Encoding.Utf8BytesOrBuilder> + utf8BytesBuilder_; + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + * + * @return Whether the utf8Bytes field is set. + */ + @java.lang.Override + public boolean hasUtf8Bytes() { + return encodingCase_ == 2; + } + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + * + * @return The utf8Bytes. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes getUtf8Bytes() { + if (utf8BytesBuilder_ == null) { + if (encodingCase_ == 2) { + return (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) encoding_; + } + return com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance(); + } else { + if (encodingCase_ == 2) { + return utf8BytesBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance(); + } + } + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + public Builder setUtf8Bytes(com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes value) { + if (utf8BytesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + encoding_ = value; + onChanged(); + } else { + utf8BytesBuilder_.setMessage(value); + } + encodingCase_ = 2; + return this; + } + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + public Builder setUtf8Bytes( + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.Builder builderForValue) { + if (utf8BytesBuilder_ == null) { + encoding_ = builderForValue.build(); + onChanged(); + } else { + utf8BytesBuilder_.setMessage(builderForValue.build()); + } + encodingCase_ = 2; + return this; + } + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + public Builder mergeUtf8Bytes(com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes value) { + if (utf8BytesBuilder_ == null) { + if (encodingCase_ == 2 + && encoding_ + != com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance()) { + encoding_ = + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.newBuilder( + (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) encoding_) + .mergeFrom(value) + .buildPartial(); + } else { + encoding_ = value; + } + onChanged(); + } else { + if (encodingCase_ == 2) { + utf8BytesBuilder_.mergeFrom(value); + } else { + utf8BytesBuilder_.setMessage(value); + } + } + encodingCase_ = 2; + return this; + } + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + public Builder clearUtf8Bytes() { + if (utf8BytesBuilder_ == null) { + if (encodingCase_ == 2) { + encodingCase_ = 0; + encoding_ = null; + onChanged(); + } + } else { + if (encodingCase_ == 2) { + encodingCase_ = 0; + encoding_ = null; + } + utf8BytesBuilder_.clear(); + } + return this; + } + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + public com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.Builder getUtf8BytesBuilder() { + return getUtf8BytesFieldBuilder().getBuilder(); + } + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding.Utf8BytesOrBuilder + getUtf8BytesOrBuilder() { + if ((encodingCase_ == 2) && (utf8BytesBuilder_ != null)) { + return utf8BytesBuilder_.getMessageOrBuilder(); + } else { + if (encodingCase_ == 2) { + return (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) encoding_; + } + return com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance(); + } + } + /** + * + * + *
+         * Use `Utf8Bytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.String.Encoding.Utf8Bytes utf8_bytes = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes, + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.Builder, + com.google.bigtable.v2.Type.String.Encoding.Utf8BytesOrBuilder> + getUtf8BytesFieldBuilder() { + if (utf8BytesBuilder_ == null) { + if (!(encodingCase_ == 2)) { + encoding_ = + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.getDefaultInstance(); + } + utf8BytesBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes, + com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes.Builder, + com.google.bigtable.v2.Type.String.Encoding.Utf8BytesOrBuilder>( + (com.google.bigtable.v2.Type.String.Encoding.Utf8Bytes) encoding_, + getParentForChildren(), + isClean()); + encoding_ = null; + } + encodingCase_ = 2; + onChanged(); + return utf8BytesBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.String.Encoding) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.String.Encoding) + private static final com.google.bigtable.v2.Type.String.Encoding DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.String.Encoding(); + } + + public static com.google.bigtable.v2.Type.String.Encoding getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Encoding parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int bitField0_; + public static final int ENCODING_FIELD_NUMBER = 1; + private com.google.bigtable.v2.Type.String.Encoding encoding_; + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + @java.lang.Override + public boolean hasEncoding() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + * + * @return The encoding. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.String.Encoding getEncoding() { + return encoding_ == null + ? com.google.bigtable.v2.Type.String.Encoding.getDefaultInstance() + : encoding_; + } + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.String.EncodingOrBuilder getEncodingOrBuilder() { + return encoding_ == null + ? com.google.bigtable.v2.Type.String.Encoding.getDefaultInstance() + : encoding_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getEncoding()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEncoding()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.String)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.String other = (com.google.bigtable.v2.Type.String) obj; + + if (hasEncoding() != other.hasEncoding()) return false; + if (hasEncoding()) { + if (!getEncoding().equals(other.getEncoding())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasEncoding()) { + hash = (37 * hash) + ENCODING_FIELD_NUMBER; + hash = (53 * hash) + getEncoding().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.String parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.String parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.String parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.String parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.String parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.String parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.String prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * String
+     * Values of type `String` are stored in `Value.string_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.String} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.String) + com.google.bigtable.v2.Type.StringOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.String.class, + com.google.bigtable.v2.Type.String.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.String.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getEncodingFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + encoding_ = null; + if (encodingBuilder_ != null) { + encodingBuilder_.dispose(); + encodingBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_String_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.String.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String build() { + com.google.bigtable.v2.Type.String result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String buildPartial() { + com.google.bigtable.v2.Type.String result = new com.google.bigtable.v2.Type.String(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.String result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.encoding_ = encodingBuilder_ == null ? encoding_ : encodingBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.String) { + return mergeFrom((com.google.bigtable.v2.Type.String) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.String other) { + if (other == com.google.bigtable.v2.Type.String.getDefaultInstance()) return this; + if (other.hasEncoding()) { + mergeEncoding(other.getEncoding()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEncodingFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.bigtable.v2.Type.String.Encoding encoding_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String.Encoding, + com.google.bigtable.v2.Type.String.Encoding.Builder, + com.google.bigtable.v2.Type.String.EncodingOrBuilder> + encodingBuilder_; + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + public boolean hasEncoding() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + * + * @return The encoding. + */ + public com.google.bigtable.v2.Type.String.Encoding getEncoding() { + if (encodingBuilder_ == null) { + return encoding_ == null + ? com.google.bigtable.v2.Type.String.Encoding.getDefaultInstance() + : encoding_; + } else { + return encodingBuilder_.getMessage(); + } + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + public Builder setEncoding(com.google.bigtable.v2.Type.String.Encoding value) { + if (encodingBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + encoding_ = value; + } else { + encodingBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + public Builder setEncoding( + com.google.bigtable.v2.Type.String.Encoding.Builder builderForValue) { + if (encodingBuilder_ == null) { + encoding_ = builderForValue.build(); + } else { + encodingBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + public Builder mergeEncoding(com.google.bigtable.v2.Type.String.Encoding value) { + if (encodingBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && encoding_ != null + && encoding_ != com.google.bigtable.v2.Type.String.Encoding.getDefaultInstance()) { + getEncodingBuilder().mergeFrom(value); + } else { + encoding_ = value; + } + } else { + encodingBuilder_.mergeFrom(value); + } + if (encoding_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + public Builder clearEncoding() { + bitField0_ = (bitField0_ & ~0x00000001); + encoding_ = null; + if (encodingBuilder_ != null) { + encodingBuilder_.dispose(); + encodingBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + public com.google.bigtable.v2.Type.String.Encoding.Builder getEncodingBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getEncodingFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + public com.google.bigtable.v2.Type.String.EncodingOrBuilder getEncodingOrBuilder() { + if (encodingBuilder_ != null) { + return encodingBuilder_.getMessageOrBuilder(); + } else { + return encoding_ == null + ? com.google.bigtable.v2.Type.String.Encoding.getDefaultInstance() + : encoding_; + } + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.String.Encoding encoding = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String.Encoding, + com.google.bigtable.v2.Type.String.Encoding.Builder, + com.google.bigtable.v2.Type.String.EncodingOrBuilder> + getEncodingFieldBuilder() { + if (encodingBuilder_ == null) { + encodingBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String.Encoding, + com.google.bigtable.v2.Type.String.Encoding.Builder, + com.google.bigtable.v2.Type.String.EncodingOrBuilder>( + getEncoding(), getParentForChildren(), isClean()); + encoding_ = null; + } + return encodingBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.String) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.String) + private static final com.google.bigtable.v2.Type.String DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.String(); + } + + public static com.google.bigtable.v2.Type.String getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public String parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.String getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface Int64OrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Int64) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + boolean hasEncoding(); + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + * + * @return The encoding. + */ + com.google.bigtable.v2.Type.Int64.Encoding getEncoding(); + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + com.google.bigtable.v2.Type.Int64.EncodingOrBuilder getEncodingOrBuilder(); + } + /** + * + * + *
+   * Int64
+   * Values of type `Int64` are stored in `Value.int_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Int64} + */ + public static final class Int64 extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Int64) + Int64OrBuilder { + private static final long serialVersionUID = 0L; + // Use Int64.newBuilder() to construct. + private Int64(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Int64() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Int64(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Int64.class, + com.google.bigtable.v2.Type.Int64.Builder.class); + } + + public interface EncodingOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Int64.Encoding) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * Use `BigEndianBytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + * + * @return Whether the bigEndianBytes field is set. + */ + boolean hasBigEndianBytes(); + /** + * + * + *
+       * Use `BigEndianBytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + * + * @return The bigEndianBytes. + */ + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes getBigEndianBytes(); + /** + * + * + *
+       * Use `BigEndianBytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytesOrBuilder + getBigEndianBytesOrBuilder(); + + com.google.bigtable.v2.Type.Int64.Encoding.EncodingCase getEncodingCase(); + } + /** + * + * + *
+     * Rules used to convert to/from lower level types.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Int64.Encoding} + */ + public static final class Encoding extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Int64.Encoding) + EncodingOrBuilder { + private static final long serialVersionUID = 0L; + // Use Encoding.newBuilder() to construct. + private Encoding(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Encoding() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Encoding(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Int64.Encoding.class, + com.google.bigtable.v2.Type.Int64.Encoding.Builder.class); + } + + public interface BigEndianBytesOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+         * Deprecated: ignored if set.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return Whether the bytesType field is set. + */ + boolean hasBytesType(); + /** + * + * + *
+         * Deprecated: ignored if set.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return The bytesType. + */ + com.google.bigtable.v2.Type.Bytes getBytesType(); + /** + * + * + *
+         * Deprecated: ignored if set.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + com.google.bigtable.v2.Type.BytesOrBuilder getBytesTypeOrBuilder(); + } + /** + * + * + *
+       * Encodes the value as an 8-byte big endian twos complement `Bytes`
+       * value.
+       * * Order-preserving? No (positive values only)
+       * * Self-delimiting? Yes
+       * * Compatibility?
+       *    - BigQuery Federation `BINARY` encoding
+       *    - HBase `Bytes.toBytes`
+       *    - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN`
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes} + */ + public static final class BigEndianBytes extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) + BigEndianBytesOrBuilder { + private static final long serialVersionUID = 0L; + // Use BigEndianBytes.newBuilder() to construct. + private BigEndianBytes(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private BigEndianBytes() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new BigEndianBytes(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.class, + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.Builder.class); + } + + private int bitField0_; + public static final int BYTES_TYPE_FIELD_NUMBER = 1; + private com.google.bigtable.v2.Type.Bytes bytesType_; + /** + * + * + *
+         * Deprecated: ignored if set.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return Whether the bytesType field is set. + */ + @java.lang.Override + public boolean hasBytesType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+         * Deprecated: ignored if set.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return The bytesType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes getBytesType() { + return bytesType_ == null + ? com.google.bigtable.v2.Type.Bytes.getDefaultInstance() + : bytesType_; + } + /** + * + * + *
+         * Deprecated: ignored if set.
+         * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.BytesOrBuilder getBytesTypeOrBuilder() { + return bytesType_ == null + ? com.google.bigtable.v2.Type.Bytes.getDefaultInstance() + : bytesType_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getBytesType()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getBytesType()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes other = + (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) obj; + + if (hasBytesType() != other.hasBytesType()) return false; + if (hasBytesType()) { + if (!getBytesType().equals(other.getBytesType())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasBytesType()) { + hash = (37 * hash) + BYTES_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getBytesType().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+         * Encodes the value as an 8-byte big endian twos complement `Bytes`
+         * value.
+         * * Order-preserving? No (positive values only)
+         * * Self-delimiting? Yes
+         * * Compatibility?
+         *    - BigQuery Federation `BINARY` encoding
+         *    - HBase `Bytes.toBytes`
+         *    - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN`
+         * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytesOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.class, + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getBytesTypeFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + bytesType_ = null; + if (bytesTypeBuilder_ != null) { + bytesTypeBuilder_.dispose(); + bytesTypeBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes + getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes build() { + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes buildPartial() { + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes result = + new com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.bytesType_ = + bytesTypeBuilder_ == null ? bytesType_ : bytesTypeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) { + return mergeFrom((com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes other) { + if (other + == com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.getDefaultInstance()) + return this; + if (other.hasBytesType()) { + mergeBytesType(other.getBytesType()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getBytesTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.bigtable.v2.Type.Bytes bytesType_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes, + com.google.bigtable.v2.Type.Bytes.Builder, + com.google.bigtable.v2.Type.BytesOrBuilder> + bytesTypeBuilder_; + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return Whether the bytesType field is set. + */ + public boolean hasBytesType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return The bytesType. + */ + public com.google.bigtable.v2.Type.Bytes getBytesType() { + if (bytesTypeBuilder_ == null) { + return bytesType_ == null + ? com.google.bigtable.v2.Type.Bytes.getDefaultInstance() + : bytesType_; + } else { + return bytesTypeBuilder_.getMessage(); + } + } + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public Builder setBytesType(com.google.bigtable.v2.Type.Bytes value) { + if (bytesTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + bytesType_ = value; + } else { + bytesTypeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public Builder setBytesType(com.google.bigtable.v2.Type.Bytes.Builder builderForValue) { + if (bytesTypeBuilder_ == null) { + bytesType_ = builderForValue.build(); + } else { + bytesTypeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public Builder mergeBytesType(com.google.bigtable.v2.Type.Bytes value) { + if (bytesTypeBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && bytesType_ != null + && bytesType_ != com.google.bigtable.v2.Type.Bytes.getDefaultInstance()) { + getBytesTypeBuilder().mergeFrom(value); + } else { + bytesType_ = value; + } + } else { + bytesTypeBuilder_.mergeFrom(value); + } + if (bytesType_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public Builder clearBytesType() { + bitField0_ = (bitField0_ & ~0x00000001); + bytesType_ = null; + if (bytesTypeBuilder_ != null) { + bytesTypeBuilder_.dispose(); + bytesTypeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public com.google.bigtable.v2.Type.Bytes.Builder getBytesTypeBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getBytesTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public com.google.bigtable.v2.Type.BytesOrBuilder getBytesTypeOrBuilder() { + if (bytesTypeBuilder_ != null) { + return bytesTypeBuilder_.getMessageOrBuilder(); + } else { + return bytesType_ == null + ? com.google.bigtable.v2.Type.Bytes.getDefaultInstance() + : bytesType_; + } + } + /** + * + * + *
+           * Deprecated: ignored if set.
+           * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes, + com.google.bigtable.v2.Type.Bytes.Builder, + com.google.bigtable.v2.Type.BytesOrBuilder> + getBytesTypeFieldBuilder() { + if (bytesTypeBuilder_ == null) { + bytesTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes, + com.google.bigtable.v2.Type.Bytes.Builder, + com.google.bigtable.v2.Type.BytesOrBuilder>( + getBytesType(), getParentForChildren(), isClean()); + bytesType_ = null; + } + return bytesTypeBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) + private static final com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes(); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public BigEndianBytes parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int encodingCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object encoding_; + + public enum EncodingCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + BIG_ENDIAN_BYTES(1), + ENCODING_NOT_SET(0); + private final int value; + + private EncodingCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static EncodingCase valueOf(int value) { + return forNumber(value); + } + + public static EncodingCase forNumber(int value) { + switch (value) { + case 1: + return BIG_ENDIAN_BYTES; + case 0: + return ENCODING_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public EncodingCase getEncodingCase() { + return EncodingCase.forNumber(encodingCase_); + } + + public static final int BIG_ENDIAN_BYTES_FIELD_NUMBER = 1; + /** + * + * + *
+       * Use `BigEndianBytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + * + * @return Whether the bigEndianBytes field is set. + */ + @java.lang.Override + public boolean hasBigEndianBytes() { + return encodingCase_ == 1; + } + /** + * + * + *
+       * Use `BigEndianBytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + * + * @return The bigEndianBytes. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes getBigEndianBytes() { + if (encodingCase_ == 1) { + return (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) encoding_; + } + return com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.getDefaultInstance(); + } + /** + * + * + *
+       * Use `BigEndianBytes` encoding.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytesOrBuilder + getBigEndianBytesOrBuilder() { + if (encodingCase_ == 1) { + return (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) encoding_; + } + return com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (encodingCase_ == 1) { + output.writeMessage( + 1, (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) encoding_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (encodingCase_ == 1) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 1, (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) encoding_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Int64.Encoding)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Int64.Encoding other = + (com.google.bigtable.v2.Type.Int64.Encoding) obj; + + if (!getEncodingCase().equals(other.getEncodingCase())) return false; + switch (encodingCase_) { + case 1: + if (!getBigEndianBytes().equals(other.getBigEndianBytes())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (encodingCase_) { + case 1: + hash = (37 * hash) + BIG_ENDIAN_BYTES_FIELD_NUMBER; + hash = (53 * hash) + getBigEndianBytes().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Int64.Encoding prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+       * Rules used to convert to/from lower level types.
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Int64.Encoding} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Int64.Encoding) + com.google.bigtable.v2.Type.Int64.EncodingOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Int64.Encoding.class, + com.google.bigtable.v2.Type.Int64.Encoding.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Int64.Encoding.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (bigEndianBytesBuilder_ != null) { + bigEndianBytesBuilder_.clear(); + } + encodingCase_ = 0; + encoding_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_Encoding_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Int64.Encoding.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding build() { + com.google.bigtable.v2.Type.Int64.Encoding result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding buildPartial() { + com.google.bigtable.v2.Type.Int64.Encoding result = + new com.google.bigtable.v2.Type.Int64.Encoding(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.Int64.Encoding result) { + int from_bitField0_ = bitField0_; + } + + private void buildPartialOneofs(com.google.bigtable.v2.Type.Int64.Encoding result) { + result.encodingCase_ = encodingCase_; + result.encoding_ = this.encoding_; + if (encodingCase_ == 1 && bigEndianBytesBuilder_ != null) { + result.encoding_ = bigEndianBytesBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Int64.Encoding) { + return mergeFrom((com.google.bigtable.v2.Type.Int64.Encoding) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Int64.Encoding other) { + if (other == com.google.bigtable.v2.Type.Int64.Encoding.getDefaultInstance()) return this; + switch (other.getEncodingCase()) { + case BIG_ENDIAN_BYTES: + { + mergeBigEndianBytes(other.getBigEndianBytes()); + break; + } + case ENCODING_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage( + getBigEndianBytesFieldBuilder().getBuilder(), extensionRegistry); + encodingCase_ = 1; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int encodingCase_ = 0; + private java.lang.Object encoding_; + + public EncodingCase getEncodingCase() { + return EncodingCase.forNumber(encodingCase_); + } + + public Builder clearEncoding() { + encodingCase_ = 0; + encoding_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes, + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.Builder, + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytesOrBuilder> + bigEndianBytesBuilder_; + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + * + * @return Whether the bigEndianBytes field is set. + */ + @java.lang.Override + public boolean hasBigEndianBytes() { + return encodingCase_ == 1; + } + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + * + * @return The bigEndianBytes. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes getBigEndianBytes() { + if (bigEndianBytesBuilder_ == null) { + if (encodingCase_ == 1) { + return (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) encoding_; + } + return com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.getDefaultInstance(); + } else { + if (encodingCase_ == 1) { + return bigEndianBytesBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.getDefaultInstance(); + } + } + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + public Builder setBigEndianBytes( + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes value) { + if (bigEndianBytesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + encoding_ = value; + onChanged(); + } else { + bigEndianBytesBuilder_.setMessage(value); + } + encodingCase_ = 1; + return this; + } + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + public Builder setBigEndianBytes( + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.Builder builderForValue) { + if (bigEndianBytesBuilder_ == null) { + encoding_ = builderForValue.build(); + onChanged(); + } else { + bigEndianBytesBuilder_.setMessage(builderForValue.build()); + } + encodingCase_ = 1; + return this; + } + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + public Builder mergeBigEndianBytes( + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes value) { + if (bigEndianBytesBuilder_ == null) { + if (encodingCase_ == 1 + && encoding_ + != com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes + .getDefaultInstance()) { + encoding_ = + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.newBuilder( + (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) encoding_) + .mergeFrom(value) + .buildPartial(); + } else { + encoding_ = value; + } + onChanged(); + } else { + if (encodingCase_ == 1) { + bigEndianBytesBuilder_.mergeFrom(value); + } else { + bigEndianBytesBuilder_.setMessage(value); + } + } + encodingCase_ = 1; + return this; + } + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + public Builder clearBigEndianBytes() { + if (bigEndianBytesBuilder_ == null) { + if (encodingCase_ == 1) { + encodingCase_ = 0; + encoding_ = null; + onChanged(); + } + } else { + if (encodingCase_ == 1) { + encodingCase_ = 0; + encoding_ = null; + } + bigEndianBytesBuilder_.clear(); + } + return this; + } + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.Builder + getBigEndianBytesBuilder() { + return getBigEndianBytesFieldBuilder().getBuilder(); + } + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytesOrBuilder + getBigEndianBytesOrBuilder() { + if ((encodingCase_ == 1) && (bigEndianBytesBuilder_ != null)) { + return bigEndianBytesBuilder_.getMessageOrBuilder(); + } else { + if (encodingCase_ == 1) { + return (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) encoding_; + } + return com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.getDefaultInstance(); + } + } + /** + * + * + *
+         * Use `BigEndianBytes` encoding.
+         * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes big_endian_bytes = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes, + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.Builder, + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytesOrBuilder> + getBigEndianBytesFieldBuilder() { + if (bigEndianBytesBuilder_ == null) { + if (!(encodingCase_ == 1)) { + encoding_ = + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.getDefaultInstance(); + } + bigEndianBytesBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes, + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes.Builder, + com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytesOrBuilder>( + (com.google.bigtable.v2.Type.Int64.Encoding.BigEndianBytes) encoding_, + getParentForChildren(), + isClean()); + encoding_ = null; + } + encodingCase_ = 1; + onChanged(); + return bigEndianBytesBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Int64.Encoding) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Int64.Encoding) + private static final com.google.bigtable.v2.Type.Int64.Encoding DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Int64.Encoding(); + } + + public static com.google.bigtable.v2.Type.Int64.Encoding getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Encoding parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int bitField0_; + public static final int ENCODING_FIELD_NUMBER = 1; + private com.google.bigtable.v2.Type.Int64.Encoding encoding_; + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + @java.lang.Override + public boolean hasEncoding() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + * + * @return The encoding. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.Encoding getEncoding() { + return encoding_ == null + ? com.google.bigtable.v2.Type.Int64.Encoding.getDefaultInstance() + : encoding_; + } + /** + * + * + *
+     * The encoding to use when converting to/from lower level types.
+     * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64.EncodingOrBuilder getEncodingOrBuilder() { + return encoding_ == null + ? com.google.bigtable.v2.Type.Int64.Encoding.getDefaultInstance() + : encoding_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getEncoding()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEncoding()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Int64)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Int64 other = (com.google.bigtable.v2.Type.Int64) obj; + + if (hasEncoding() != other.hasEncoding()) return false; + if (hasEncoding()) { + if (!getEncoding().equals(other.getEncoding())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasEncoding()) { + hash = (37 * hash) + ENCODING_FIELD_NUMBER; + hash = (53 * hash) + getEncoding().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64 parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64 parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Int64 parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Int64 prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * Int64
+     * Values of type `Int64` are stored in `Value.int_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Int64} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Int64) + com.google.bigtable.v2.Type.Int64OrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Int64.class, + com.google.bigtable.v2.Type.Int64.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Int64.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getEncodingFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + encoding_ = null; + if (encodingBuilder_ != null) { + encodingBuilder_.dispose(); + encodingBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Int64_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64 getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Int64.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64 build() { + com.google.bigtable.v2.Type.Int64 result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64 buildPartial() { + com.google.bigtable.v2.Type.Int64 result = new com.google.bigtable.v2.Type.Int64(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.Int64 result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.encoding_ = encodingBuilder_ == null ? encoding_ : encodingBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Int64) { + return mergeFrom((com.google.bigtable.v2.Type.Int64) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Int64 other) { + if (other == com.google.bigtable.v2.Type.Int64.getDefaultInstance()) return this; + if (other.hasEncoding()) { + mergeEncoding(other.getEncoding()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEncodingFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.bigtable.v2.Type.Int64.Encoding encoding_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64.Encoding, + com.google.bigtable.v2.Type.Int64.Encoding.Builder, + com.google.bigtable.v2.Type.Int64.EncodingOrBuilder> + encodingBuilder_; + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + * + * @return Whether the encoding field is set. + */ + public boolean hasEncoding() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + * + * @return The encoding. + */ + public com.google.bigtable.v2.Type.Int64.Encoding getEncoding() { + if (encodingBuilder_ == null) { + return encoding_ == null + ? com.google.bigtable.v2.Type.Int64.Encoding.getDefaultInstance() + : encoding_; + } else { + return encodingBuilder_.getMessage(); + } + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + public Builder setEncoding(com.google.bigtable.v2.Type.Int64.Encoding value) { + if (encodingBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + encoding_ = value; + } else { + encodingBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + public Builder setEncoding( + com.google.bigtable.v2.Type.Int64.Encoding.Builder builderForValue) { + if (encodingBuilder_ == null) { + encoding_ = builderForValue.build(); + } else { + encodingBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + public Builder mergeEncoding(com.google.bigtable.v2.Type.Int64.Encoding value) { + if (encodingBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && encoding_ != null + && encoding_ != com.google.bigtable.v2.Type.Int64.Encoding.getDefaultInstance()) { + getEncodingBuilder().mergeFrom(value); + } else { + encoding_ = value; + } + } else { + encodingBuilder_.mergeFrom(value); + } + if (encoding_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + public Builder clearEncoding() { + bitField0_ = (bitField0_ & ~0x00000001); + encoding_ = null; + if (encodingBuilder_ != null) { + encodingBuilder_.dispose(); + encodingBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + public com.google.bigtable.v2.Type.Int64.Encoding.Builder getEncodingBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getEncodingFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + public com.google.bigtable.v2.Type.Int64.EncodingOrBuilder getEncodingOrBuilder() { + if (encodingBuilder_ != null) { + return encodingBuilder_.getMessageOrBuilder(); + } else { + return encoding_ == null + ? com.google.bigtable.v2.Type.Int64.Encoding.getDefaultInstance() + : encoding_; + } + } + /** + * + * + *
+       * The encoding to use when converting to/from lower level types.
+       * 
+ * + * .google.bigtable.v2.Type.Int64.Encoding encoding = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64.Encoding, + com.google.bigtable.v2.Type.Int64.Encoding.Builder, + com.google.bigtable.v2.Type.Int64.EncodingOrBuilder> + getEncodingFieldBuilder() { + if (encodingBuilder_ == null) { + encodingBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64.Encoding, + com.google.bigtable.v2.Type.Int64.Encoding.Builder, + com.google.bigtable.v2.Type.Int64.EncodingOrBuilder>( + getEncoding(), getParentForChildren(), isClean()); + encoding_ = null; + } + return encodingBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Int64) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Int64) + private static final com.google.bigtable.v2.Type.Int64 DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Int64(); + } + + public static com.google.bigtable.v2.Type.Int64 getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Int64 parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Int64 getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface BoolOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Bool) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+   * bool
+   * Values of type `Bool` are stored in `Value.bool_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Bool} + */ + public static final class Bool extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Bool) + BoolOrBuilder { + private static final long serialVersionUID = 0L; + // Use Bool.newBuilder() to construct. + private Bool(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Bool() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Bool(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bool_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bool_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Bool.class, + com.google.bigtable.v2.Type.Bool.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Bool)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Bool other = (com.google.bigtable.v2.Type.Bool) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Bool parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bool parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bool parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Bool parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Bool prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * bool
+     * Values of type `Bool` are stored in `Value.bool_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Bool} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Bool) + com.google.bigtable.v2.Type.BoolOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bool_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bool_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Bool.class, + com.google.bigtable.v2.Type.Bool.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Bool.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Bool_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bool getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Bool.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bool build() { + com.google.bigtable.v2.Type.Bool result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bool buildPartial() { + com.google.bigtable.v2.Type.Bool result = new com.google.bigtable.v2.Type.Bool(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Bool) { + return mergeFrom((com.google.bigtable.v2.Type.Bool) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Bool other) { + if (other == com.google.bigtable.v2.Type.Bool.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Bool) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Bool) + private static final com.google.bigtable.v2.Type.Bool DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Bool(); + } + + public static com.google.bigtable.v2.Type.Bool getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Bool parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Bool getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface Float32OrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Float32) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+   * Float32
+   * Values of type `Float32` are stored in `Value.float_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Float32} + */ + public static final class Float32 extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Float32) + Float32OrBuilder { + private static final long serialVersionUID = 0L; + // Use Float32.newBuilder() to construct. + private Float32(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Float32() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Float32(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float32_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float32_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Float32.class, + com.google.bigtable.v2.Type.Float32.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Float32)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Float32 other = (com.google.bigtable.v2.Type.Float32) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float32 parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Float32 parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Float32 parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Float32 prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * Float32
+     * Values of type `Float32` are stored in `Value.float_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Float32} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Float32) + com.google.bigtable.v2.Type.Float32OrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float32_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float32_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Float32.class, + com.google.bigtable.v2.Type.Float32.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Float32.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float32_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Float32 getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Float32.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Float32 build() { + com.google.bigtable.v2.Type.Float32 result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Float32 buildPartial() { + com.google.bigtable.v2.Type.Float32 result = new com.google.bigtable.v2.Type.Float32(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Float32) { + return mergeFrom((com.google.bigtable.v2.Type.Float32) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Float32 other) { + if (other == com.google.bigtable.v2.Type.Float32.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Float32) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Float32) + private static final com.google.bigtable.v2.Type.Float32 DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Float32(); + } + + public static com.google.bigtable.v2.Type.Float32 getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Float32 parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Float32 getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface Float64OrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Float64) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+   * Float64
+   * Values of type `Float64` are stored in `Value.float_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Float64} + */ + public static final class Float64 extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Float64) + Float64OrBuilder { + private static final long serialVersionUID = 0L; + // Use Float64.newBuilder() to construct. + private Float64(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Float64() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Float64(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float64_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float64_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Float64.class, + com.google.bigtable.v2.Type.Float64.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Float64)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Float64 other = (com.google.bigtable.v2.Type.Float64) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float64 parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Float64 parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Float64 parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Float64 prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * Float64
+     * Values of type `Float64` are stored in `Value.float_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Float64} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Float64) + com.google.bigtable.v2.Type.Float64OrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float64_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float64_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Float64.class, + com.google.bigtable.v2.Type.Float64.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Float64.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Float64_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Float64 getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Float64.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Float64 build() { + com.google.bigtable.v2.Type.Float64 result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Float64 buildPartial() { + com.google.bigtable.v2.Type.Float64 result = new com.google.bigtable.v2.Type.Float64(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Float64) { + return mergeFrom((com.google.bigtable.v2.Type.Float64) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Float64 other) { + if (other == com.google.bigtable.v2.Type.Float64.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Float64) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Float64) + private static final com.google.bigtable.v2.Type.Float64 DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Float64(); + } + + public static com.google.bigtable.v2.Type.Float64 getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Float64 parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Float64 getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface TimestampOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Timestamp) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+   * Timestamp
+   * Values of type `Timestamp` are stored in `Value.timestamp_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Timestamp} + */ + public static final class Timestamp extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Timestamp) + TimestampOrBuilder { + private static final long serialVersionUID = 0L; + // Use Timestamp.newBuilder() to construct. + private Timestamp(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Timestamp() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Timestamp(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Timestamp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Timestamp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Timestamp.class, + com.google.bigtable.v2.Type.Timestamp.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Timestamp)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Timestamp other = (com.google.bigtable.v2.Type.Timestamp) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Timestamp parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Timestamp parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Timestamp parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Timestamp prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * Timestamp
+     * Values of type `Timestamp` are stored in `Value.timestamp_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Timestamp} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Timestamp) + com.google.bigtable.v2.Type.TimestampOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Timestamp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Timestamp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Timestamp.class, + com.google.bigtable.v2.Type.Timestamp.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Timestamp.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Timestamp_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Timestamp getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Timestamp.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Timestamp build() { + com.google.bigtable.v2.Type.Timestamp result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Timestamp buildPartial() { + com.google.bigtable.v2.Type.Timestamp result = + new com.google.bigtable.v2.Type.Timestamp(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Timestamp) { + return mergeFrom((com.google.bigtable.v2.Type.Timestamp) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Timestamp other) { + if (other == com.google.bigtable.v2.Type.Timestamp.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Timestamp) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Timestamp) + private static final com.google.bigtable.v2.Type.Timestamp DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Timestamp(); + } + + public static com.google.bigtable.v2.Type.Timestamp getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Timestamp parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Timestamp getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface DateOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Date) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+   * Date
+   * Values of type `Date` are stored in `Value.date_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Date} + */ + public static final class Date extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Date) + DateOrBuilder { + private static final long serialVersionUID = 0L; + // Use Date.newBuilder() to construct. + private Date(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Date() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Date(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Date_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Date_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Date.class, + com.google.bigtable.v2.Type.Date.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Date)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Date other = (com.google.bigtable.v2.Type.Date) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Date parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Date parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Date parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Date parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Date parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Date parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Date parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Date parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Date parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Date parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Date parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Date parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Date prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * Date
+     * Values of type `Date` are stored in `Value.date_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Date} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Date) + com.google.bigtable.v2.Type.DateOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Date_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Date_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Date.class, + com.google.bigtable.v2.Type.Date.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Date.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Date_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Date getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Date.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Date build() { + com.google.bigtable.v2.Type.Date result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Date buildPartial() { + com.google.bigtable.v2.Type.Date result = new com.google.bigtable.v2.Type.Date(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Date) { + return mergeFrom((com.google.bigtable.v2.Type.Date) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Date other) { + if (other == com.google.bigtable.v2.Type.Date.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Date) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Date) + private static final com.google.bigtable.v2.Type.Date DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Date(); + } + + public static com.google.bigtable.v2.Type.Date getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Date parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Date getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface StructOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Struct) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + java.util.List getFieldsList(); + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + com.google.bigtable.v2.Type.Struct.Field getFields(int index); + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + int getFieldsCount(); + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + java.util.List + getFieldsOrBuilderList(); + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + com.google.bigtable.v2.Type.Struct.FieldOrBuilder getFieldsOrBuilder(int index); + } + /** + * + * + *
+   * A structured data value, consisting of fields which map to dynamically
+   * typed values.
+   * Values of type `Struct` are stored in `Value.array_value` where entries are
+   * in the same order and number as `field_types`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Struct} + */ + public static final class Struct extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Struct) + StructOrBuilder { + private static final long serialVersionUID = 0L; + // Use Struct.newBuilder() to construct. + private Struct(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Struct() { + fields_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Struct(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Struct.class, + com.google.bigtable.v2.Type.Struct.Builder.class); + } + + public interface FieldOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Struct.Field) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * The field name (optional). Fields without a `field_name` are considered
+       * anonymous and cannot be referenced by name.
+       * 
+ * + * string field_name = 1; + * + * @return The fieldName. + */ + java.lang.String getFieldName(); + /** + * + * + *
+       * The field name (optional). Fields without a `field_name` are considered
+       * anonymous and cannot be referenced by name.
+       * 
+ * + * string field_name = 1; + * + * @return The bytes for fieldName. + */ + com.google.protobuf.ByteString getFieldNameBytes(); + + /** + * + * + *
+       * The type of values in this field.
+       * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return Whether the type field is set. + */ + boolean hasType(); + /** + * + * + *
+       * The type of values in this field.
+       * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return The type. + */ + com.google.bigtable.v2.Type getType(); + /** + * + * + *
+       * The type of values in this field.
+       * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder(); + } + /** + * + * + *
+     * A struct field and its type.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Struct.Field} + */ + public static final class Field extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Struct.Field) + FieldOrBuilder { + private static final long serialVersionUID = 0L; + // Use Field.newBuilder() to construct. + private Field(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Field() { + fieldName_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Field(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_Field_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_Field_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Struct.Field.class, + com.google.bigtable.v2.Type.Struct.Field.Builder.class); + } + + private int bitField0_; + public static final int FIELD_NAME_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object fieldName_ = ""; + /** + * + * + *
+       * The field name (optional). Fields without a `field_name` are considered
+       * anonymous and cannot be referenced by name.
+       * 
+ * + * string field_name = 1; + * + * @return The fieldName. + */ + @java.lang.Override + public java.lang.String getFieldName() { + java.lang.Object ref = fieldName_; + 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(); + fieldName_ = s; + return s; + } + } + /** + * + * + *
+       * The field name (optional). Fields without a `field_name` are considered
+       * anonymous and cannot be referenced by name.
+       * 
+ * + * string field_name = 1; + * + * @return The bytes for fieldName. + */ + @java.lang.Override + public com.google.protobuf.ByteString getFieldNameBytes() { + java.lang.Object ref = fieldName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + fieldName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TYPE_FIELD_NUMBER = 2; + private com.google.bigtable.v2.Type type_; + /** + * + * + *
+       * The type of values in this field.
+       * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return Whether the type field is set. + */ + @java.lang.Override + public boolean hasType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+       * The type of values in this field.
+       * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return The type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type getType() { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + /** + * + * + *
+       * The type of values in this field.
+       * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder() { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fieldName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, fieldName_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(2, getType()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fieldName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, fieldName_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getType()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Struct.Field)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Struct.Field other = + (com.google.bigtable.v2.Type.Struct.Field) obj; + + if (!getFieldName().equals(other.getFieldName())) return false; + if (hasType() != other.hasType()) return false; + if (hasType()) { + if (!getType().equals(other.getType())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + FIELD_NAME_FIELD_NUMBER; + hash = (53 * hash) + getFieldName().hashCode(); + if (hasType()) { + hash = (37 * hash) + TYPE_FIELD_NUMBER; + hash = (53 * hash) + getType().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Struct.Field parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Struct.Field prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+       * A struct field and its type.
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Struct.Field} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Struct.Field) + com.google.bigtable.v2.Type.Struct.FieldOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_Field_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_Field_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Struct.Field.class, + com.google.bigtable.v2.Type.Struct.Field.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Struct.Field.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getTypeFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + fieldName_ = ""; + type_ = null; + if (typeBuilder_ != null) { + typeBuilder_.dispose(); + typeBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_Field_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Struct.Field getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Struct.Field.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Struct.Field build() { + com.google.bigtable.v2.Type.Struct.Field result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Struct.Field buildPartial() { + com.google.bigtable.v2.Type.Struct.Field result = + new com.google.bigtable.v2.Type.Struct.Field(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.Struct.Field result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.fieldName_ = fieldName_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.type_ = typeBuilder_ == null ? type_ : typeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Struct.Field) { + return mergeFrom((com.google.bigtable.v2.Type.Struct.Field) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Struct.Field other) { + if (other == com.google.bigtable.v2.Type.Struct.Field.getDefaultInstance()) return this; + if (!other.getFieldName().isEmpty()) { + fieldName_ = other.fieldName_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.hasType()) { + mergeType(other.getType()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + fieldName_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + input.readMessage(getTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.lang.Object fieldName_ = ""; + /** + * + * + *
+         * The field name (optional). Fields without a `field_name` are considered
+         * anonymous and cannot be referenced by name.
+         * 
+ * + * string field_name = 1; + * + * @return The fieldName. + */ + public java.lang.String getFieldName() { + java.lang.Object ref = fieldName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + fieldName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+         * The field name (optional). Fields without a `field_name` are considered
+         * anonymous and cannot be referenced by name.
+         * 
+ * + * string field_name = 1; + * + * @return The bytes for fieldName. + */ + public com.google.protobuf.ByteString getFieldNameBytes() { + java.lang.Object ref = fieldName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + fieldName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+         * The field name (optional). Fields without a `field_name` are considered
+         * anonymous and cannot be referenced by name.
+         * 
+ * + * string field_name = 1; + * + * @param value The fieldName to set. + * @return This builder for chaining. + */ + public Builder setFieldName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + fieldName_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+         * The field name (optional). Fields without a `field_name` are considered
+         * anonymous and cannot be referenced by name.
+         * 
+ * + * string field_name = 1; + * + * @return This builder for chaining. + */ + public Builder clearFieldName() { + fieldName_ = getDefaultInstance().getFieldName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
+         * The field name (optional). Fields without a `field_name` are considered
+         * anonymous and cannot be referenced by name.
+         * 
+ * + * string field_name = 1; + * + * @param value The bytes for fieldName to set. + * @return This builder for chaining. + */ + public Builder setFieldNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + fieldName_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private com.google.bigtable.v2.Type type_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + typeBuilder_; + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return Whether the type field is set. + */ + public boolean hasType() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + * + * @return The type. + */ + public com.google.bigtable.v2.Type getType() { + if (typeBuilder_ == null) { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } else { + return typeBuilder_.getMessage(); + } + } + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public Builder setType(com.google.bigtable.v2.Type value) { + if (typeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + type_ = value; + } else { + typeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public Builder setType(com.google.bigtable.v2.Type.Builder builderForValue) { + if (typeBuilder_ == null) { + type_ = builderForValue.build(); + } else { + typeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public Builder mergeType(com.google.bigtable.v2.Type value) { + if (typeBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) + && type_ != null + && type_ != com.google.bigtable.v2.Type.getDefaultInstance()) { + getTypeBuilder().mergeFrom(value); + } else { + type_ = value; + } + } else { + typeBuilder_.mergeFrom(value); + } + if (type_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public Builder clearType() { + bitField0_ = (bitField0_ & ~0x00000002); + type_ = null; + if (typeBuilder_ != null) { + typeBuilder_.dispose(); + typeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public com.google.bigtable.v2.Type.Builder getTypeBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + public com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder() { + if (typeBuilder_ != null) { + return typeBuilder_.getMessageOrBuilder(); + } else { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + } + /** + * + * + *
+         * The type of values in this field.
+         * 
+ * + * .google.bigtable.v2.Type type = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + getTypeFieldBuilder() { + if (typeBuilder_ == null) { + typeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder>( + getType(), getParentForChildren(), isClean()); + type_ = null; + } + return typeBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Struct.Field) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Struct.Field) + private static final com.google.bigtable.v2.Type.Struct.Field DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Struct.Field(); + } + + public static com.google.bigtable.v2.Type.Struct.Field getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Field parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Struct.Field getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public static final int FIELDS_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private java.util.List fields_; + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + @java.lang.Override + public java.util.List getFieldsList() { + return fields_; + } + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + @java.lang.Override + public java.util.List + getFieldsOrBuilderList() { + return fields_; + } + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + @java.lang.Override + public int getFieldsCount() { + return fields_.size(); + } + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Struct.Field getFields(int index) { + return fields_.get(index); + } + /** + * + * + *
+     * The names and types of the fields in this struct.
+     * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Struct.FieldOrBuilder getFieldsOrBuilder(int index) { + return fields_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < fields_.size(); i++) { + output.writeMessage(1, fields_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < fields_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, fields_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Struct)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Struct other = (com.google.bigtable.v2.Type.Struct) obj; + + if (!getFieldsList().equals(other.getFieldsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getFieldsCount() > 0) { + hash = (37 * hash) + FIELDS_FIELD_NUMBER; + hash = (53 * hash) + getFieldsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Struct parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Struct parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Struct parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Struct prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * A structured data value, consisting of fields which map to dynamically
+     * typed values.
+     * Values of type `Struct` are stored in `Value.array_value` where entries are
+     * in the same order and number as `field_types`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Struct} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Struct) + com.google.bigtable.v2.Type.StructOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Struct.class, + com.google.bigtable.v2.Type.Struct.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Struct.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (fieldsBuilder_ == null) { + fields_ = java.util.Collections.emptyList(); + } else { + fields_ = null; + fieldsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Struct_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Struct getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Struct.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Struct build() { + com.google.bigtable.v2.Type.Struct result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Struct buildPartial() { + com.google.bigtable.v2.Type.Struct result = new com.google.bigtable.v2.Type.Struct(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(com.google.bigtable.v2.Type.Struct result) { + if (fieldsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + fields_ = java.util.Collections.unmodifiableList(fields_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.fields_ = fields_; + } else { + result.fields_ = fieldsBuilder_.build(); + } + } + + private void buildPartial0(com.google.bigtable.v2.Type.Struct result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Struct) { + return mergeFrom((com.google.bigtable.v2.Type.Struct) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Struct other) { + if (other == com.google.bigtable.v2.Type.Struct.getDefaultInstance()) return this; + if (fieldsBuilder_ == null) { + if (!other.fields_.isEmpty()) { + if (fields_.isEmpty()) { + fields_ = other.fields_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureFieldsIsMutable(); + fields_.addAll(other.fields_); + } + onChanged(); + } + } else { + if (!other.fields_.isEmpty()) { + if (fieldsBuilder_.isEmpty()) { + fieldsBuilder_.dispose(); + fieldsBuilder_ = null; + fields_ = other.fields_; + bitField0_ = (bitField0_ & ~0x00000001); + fieldsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getFieldsFieldBuilder() + : null; + } else { + fieldsBuilder_.addAllMessages(other.fields_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.bigtable.v2.Type.Struct.Field m = + input.readMessage( + com.google.bigtable.v2.Type.Struct.Field.parser(), extensionRegistry); + if (fieldsBuilder_ == null) { + ensureFieldsIsMutable(); + fields_.add(m); + } else { + fieldsBuilder_.addMessage(m); + } + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.util.List fields_ = + java.util.Collections.emptyList(); + + private void ensureFieldsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + fields_ = new java.util.ArrayList(fields_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Type.Struct.Field, + com.google.bigtable.v2.Type.Struct.Field.Builder, + com.google.bigtable.v2.Type.Struct.FieldOrBuilder> + fieldsBuilder_; + + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public java.util.List getFieldsList() { + if (fieldsBuilder_ == null) { + return java.util.Collections.unmodifiableList(fields_); + } else { + return fieldsBuilder_.getMessageList(); + } + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public int getFieldsCount() { + if (fieldsBuilder_ == null) { + return fields_.size(); + } else { + return fieldsBuilder_.getCount(); + } + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public com.google.bigtable.v2.Type.Struct.Field getFields(int index) { + if (fieldsBuilder_ == null) { + return fields_.get(index); + } else { + return fieldsBuilder_.getMessage(index); + } + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder setFields(int index, com.google.bigtable.v2.Type.Struct.Field value) { + if (fieldsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFieldsIsMutable(); + fields_.set(index, value); + onChanged(); + } else { + fieldsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder setFields( + int index, com.google.bigtable.v2.Type.Struct.Field.Builder builderForValue) { + if (fieldsBuilder_ == null) { + ensureFieldsIsMutable(); + fields_.set(index, builderForValue.build()); + onChanged(); + } else { + fieldsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder addFields(com.google.bigtable.v2.Type.Struct.Field value) { + if (fieldsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFieldsIsMutable(); + fields_.add(value); + onChanged(); + } else { + fieldsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder addFields(int index, com.google.bigtable.v2.Type.Struct.Field value) { + if (fieldsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFieldsIsMutable(); + fields_.add(index, value); + onChanged(); + } else { + fieldsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder addFields(com.google.bigtable.v2.Type.Struct.Field.Builder builderForValue) { + if (fieldsBuilder_ == null) { + ensureFieldsIsMutable(); + fields_.add(builderForValue.build()); + onChanged(); + } else { + fieldsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder addFields( + int index, com.google.bigtable.v2.Type.Struct.Field.Builder builderForValue) { + if (fieldsBuilder_ == null) { + ensureFieldsIsMutable(); + fields_.add(index, builderForValue.build()); + onChanged(); + } else { + fieldsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder addAllFields( + java.lang.Iterable values) { + if (fieldsBuilder_ == null) { + ensureFieldsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, fields_); + onChanged(); + } else { + fieldsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder clearFields() { + if (fieldsBuilder_ == null) { + fields_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + fieldsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public Builder removeFields(int index) { + if (fieldsBuilder_ == null) { + ensureFieldsIsMutable(); + fields_.remove(index); + onChanged(); + } else { + fieldsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public com.google.bigtable.v2.Type.Struct.Field.Builder getFieldsBuilder(int index) { + return getFieldsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public com.google.bigtable.v2.Type.Struct.FieldOrBuilder getFieldsOrBuilder(int index) { + if (fieldsBuilder_ == null) { + return fields_.get(index); + } else { + return fieldsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public java.util.List + getFieldsOrBuilderList() { + if (fieldsBuilder_ != null) { + return fieldsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(fields_); + } + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public com.google.bigtable.v2.Type.Struct.Field.Builder addFieldsBuilder() { + return getFieldsFieldBuilder() + .addBuilder(com.google.bigtable.v2.Type.Struct.Field.getDefaultInstance()); + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public com.google.bigtable.v2.Type.Struct.Field.Builder addFieldsBuilder(int index) { + return getFieldsFieldBuilder() + .addBuilder(index, com.google.bigtable.v2.Type.Struct.Field.getDefaultInstance()); + } + /** + * + * + *
+       * The names and types of the fields in this struct.
+       * 
+ * + * repeated .google.bigtable.v2.Type.Struct.Field fields = 1; + */ + public java.util.List + getFieldsBuilderList() { + return getFieldsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Type.Struct.Field, + com.google.bigtable.v2.Type.Struct.Field.Builder, + com.google.bigtable.v2.Type.Struct.FieldOrBuilder> + getFieldsFieldBuilder() { + if (fieldsBuilder_ == null) { + fieldsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.bigtable.v2.Type.Struct.Field, + com.google.bigtable.v2.Type.Struct.Field.Builder, + com.google.bigtable.v2.Type.Struct.FieldOrBuilder>( + fields_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + fields_ = null; + } + return fieldsBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Struct) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Struct) + private static final com.google.bigtable.v2.Type.Struct DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Struct(); + } + + public static com.google.bigtable.v2.Type.Struct getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Struct parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Struct getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface ArrayOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Array) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The type of the elements in the array. This must not be `Array`.
+     * 
+ * + * .google.bigtable.v2.Type element_type = 1; + * + * @return Whether the elementType field is set. + */ + boolean hasElementType(); + /** + * + * + *
+     * The type of the elements in the array. This must not be `Array`.
+     * 
+ * + * .google.bigtable.v2.Type element_type = 1; + * + * @return The elementType. + */ + com.google.bigtable.v2.Type getElementType(); + /** + * + * + *
+     * The type of the elements in the array. This must not be `Array`.
+     * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + com.google.bigtable.v2.TypeOrBuilder getElementTypeOrBuilder(); + } + /** + * + * + *
+   * An ordered list of elements of a given type.
+   * Values of type `Array` are stored in `Value.array_value`.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Array} + */ + public static final class Array extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Array) + ArrayOrBuilder { + private static final long serialVersionUID = 0L; + // Use Array.newBuilder() to construct. + private Array(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Array() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Array(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Array_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Array_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Array.class, + com.google.bigtable.v2.Type.Array.Builder.class); + } + + private int bitField0_; + public static final int ELEMENT_TYPE_FIELD_NUMBER = 1; + private com.google.bigtable.v2.Type elementType_; + /** + * + * + *
+     * The type of the elements in the array. This must not be `Array`.
+     * 
+ * + * .google.bigtable.v2.Type element_type = 1; + * + * @return Whether the elementType field is set. + */ + @java.lang.Override + public boolean hasElementType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * The type of the elements in the array. This must not be `Array`.
+     * 
+ * + * .google.bigtable.v2.Type element_type = 1; + * + * @return The elementType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type getElementType() { + return elementType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : elementType_; + } + /** + * + * + *
+     * The type of the elements in the array. This must not be `Array`.
+     * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.TypeOrBuilder getElementTypeOrBuilder() { + return elementType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : elementType_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getElementType()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getElementType()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Array)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Array other = (com.google.bigtable.v2.Type.Array) obj; + + if (hasElementType() != other.hasElementType()) return false; + if (hasElementType()) { + if (!getElementType().equals(other.getElementType())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasElementType()) { + hash = (37 * hash) + ELEMENT_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getElementType().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Array parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Array parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Array parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Array parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Array parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Array parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Array parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Array parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Array parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Array parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Array parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Array parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Array prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * An ordered list of elements of a given type.
+     * Values of type `Array` are stored in `Value.array_value`.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Array} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Array) + com.google.bigtable.v2.Type.ArrayOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Array_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Array_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Array.class, + com.google.bigtable.v2.Type.Array.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Array.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getElementTypeFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + elementType_ = null; + if (elementTypeBuilder_ != null) { + elementTypeBuilder_.dispose(); + elementTypeBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Array_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Array getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Array.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Array build() { + com.google.bigtable.v2.Type.Array result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Array buildPartial() { + com.google.bigtable.v2.Type.Array result = new com.google.bigtable.v2.Type.Array(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.Array result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.elementType_ = + elementTypeBuilder_ == null ? elementType_ : elementTypeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Array) { + return mergeFrom((com.google.bigtable.v2.Type.Array) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Array other) { + if (other == com.google.bigtable.v2.Type.Array.getDefaultInstance()) return this; + if (other.hasElementType()) { + mergeElementType(other.getElementType()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getElementTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.bigtable.v2.Type elementType_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + elementTypeBuilder_; + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + * + * @return Whether the elementType field is set. + */ + public boolean hasElementType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + * + * @return The elementType. + */ + public com.google.bigtable.v2.Type getElementType() { + if (elementTypeBuilder_ == null) { + return elementType_ == null + ? com.google.bigtable.v2.Type.getDefaultInstance() + : elementType_; + } else { + return elementTypeBuilder_.getMessage(); + } + } + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + public Builder setElementType(com.google.bigtable.v2.Type value) { + if (elementTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + elementType_ = value; + } else { + elementTypeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + public Builder setElementType(com.google.bigtable.v2.Type.Builder builderForValue) { + if (elementTypeBuilder_ == null) { + elementType_ = builderForValue.build(); + } else { + elementTypeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + public Builder mergeElementType(com.google.bigtable.v2.Type value) { + if (elementTypeBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && elementType_ != null + && elementType_ != com.google.bigtable.v2.Type.getDefaultInstance()) { + getElementTypeBuilder().mergeFrom(value); + } else { + elementType_ = value; + } + } else { + elementTypeBuilder_.mergeFrom(value); + } + if (elementType_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + public Builder clearElementType() { + bitField0_ = (bitField0_ & ~0x00000001); + elementType_ = null; + if (elementTypeBuilder_ != null) { + elementTypeBuilder_.dispose(); + elementTypeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + public com.google.bigtable.v2.Type.Builder getElementTypeBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getElementTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + public com.google.bigtable.v2.TypeOrBuilder getElementTypeOrBuilder() { + if (elementTypeBuilder_ != null) { + return elementTypeBuilder_.getMessageOrBuilder(); + } else { + return elementType_ == null + ? com.google.bigtable.v2.Type.getDefaultInstance() + : elementType_; + } + } + /** + * + * + *
+       * The type of the elements in the array. This must not be `Array`.
+       * 
+ * + * .google.bigtable.v2.Type element_type = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + getElementTypeFieldBuilder() { + if (elementTypeBuilder_ == null) { + elementTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder>( + getElementType(), getParentForChildren(), isClean()); + elementType_ = null; + } + return elementTypeBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Array) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Array) + private static final com.google.bigtable.v2.Type.Array DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Array(); + } + + public static com.google.bigtable.v2.Type.Array getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Array parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Array getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface MapOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Map) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The type of a map key.
+     * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+     * 
+ * + * .google.bigtable.v2.Type key_type = 1; + * + * @return Whether the keyType field is set. + */ + boolean hasKeyType(); + /** + * + * + *
+     * The type of a map key.
+     * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+     * 
+ * + * .google.bigtable.v2.Type key_type = 1; + * + * @return The keyType. + */ + com.google.bigtable.v2.Type getKeyType(); + /** + * + * + *
+     * The type of a map key.
+     * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+     * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + com.google.bigtable.v2.TypeOrBuilder getKeyTypeOrBuilder(); + + /** + * + * + *
+     * The type of the values in a map.
+     * 
+ * + * .google.bigtable.v2.Type value_type = 2; + * + * @return Whether the valueType field is set. + */ + boolean hasValueType(); + /** + * + * + *
+     * The type of the values in a map.
+     * 
+ * + * .google.bigtable.v2.Type value_type = 2; + * + * @return The valueType. + */ + com.google.bigtable.v2.Type getValueType(); + /** + * + * + *
+     * The type of the values in a map.
+     * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + com.google.bigtable.v2.TypeOrBuilder getValueTypeOrBuilder(); + } + /** + * + * + *
+   * A mapping of keys to values of a given type.
+   * Values of type `Map` are stored in a `Value.array_value` where each entry
+   * is another `Value.array_value` with two elements (the key and the value,
+   * in that order).
+   * Normally encoded Map values won't have repeated keys, however, clients are
+   * expected to handle the case in which they do. If the same key appears
+   * multiple times, the _last_ value takes precedence.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Map} + */ + public static final class Map extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Map) + MapOrBuilder { + private static final long serialVersionUID = 0L; + // Use Map.newBuilder() to construct. + private Map(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Map() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Map(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Map_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Map_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Map.class, com.google.bigtable.v2.Type.Map.Builder.class); + } + + private int bitField0_; + public static final int KEY_TYPE_FIELD_NUMBER = 1; + private com.google.bigtable.v2.Type keyType_; + /** + * + * + *
+     * The type of a map key.
+     * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+     * 
+ * + * .google.bigtable.v2.Type key_type = 1; + * + * @return Whether the keyType field is set. + */ + @java.lang.Override + public boolean hasKeyType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * The type of a map key.
+     * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+     * 
+ * + * .google.bigtable.v2.Type key_type = 1; + * + * @return The keyType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type getKeyType() { + return keyType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : keyType_; + } + /** + * + * + *
+     * The type of a map key.
+     * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+     * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.TypeOrBuilder getKeyTypeOrBuilder() { + return keyType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : keyType_; + } + + public static final int VALUE_TYPE_FIELD_NUMBER = 2; + private com.google.bigtable.v2.Type valueType_; + /** + * + * + *
+     * The type of the values in a map.
+     * 
+ * + * .google.bigtable.v2.Type value_type = 2; + * + * @return Whether the valueType field is set. + */ + @java.lang.Override + public boolean hasValueType() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+     * The type of the values in a map.
+     * 
+ * + * .google.bigtable.v2.Type value_type = 2; + * + * @return The valueType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type getValueType() { + return valueType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : valueType_; + } + /** + * + * + *
+     * The type of the values in a map.
+     * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.TypeOrBuilder getValueTypeOrBuilder() { + return valueType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : valueType_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getKeyType()); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(2, getValueType()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKeyType()); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getValueType()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Map)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Map other = (com.google.bigtable.v2.Type.Map) obj; + + if (hasKeyType() != other.hasKeyType()) return false; + if (hasKeyType()) { + if (!getKeyType().equals(other.getKeyType())) return false; + } + if (hasValueType() != other.hasValueType()) return false; + if (hasValueType()) { + if (!getValueType().equals(other.getValueType())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasKeyType()) { + hash = (37 * hash) + KEY_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getKeyType().hashCode(); + } + if (hasValueType()) { + hash = (37 * hash) + VALUE_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getValueType().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Map parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Map parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Map parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Map parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Map parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Map parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Map parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Map parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Map parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Map parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Map parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Map parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Map prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * A mapping of keys to values of a given type.
+     * Values of type `Map` are stored in a `Value.array_value` where each entry
+     * is another `Value.array_value` with two elements (the key and the value,
+     * in that order).
+     * Normally encoded Map values won't have repeated keys, however, clients are
+     * expected to handle the case in which they do. If the same key appears
+     * multiple times, the _last_ value takes precedence.
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Map} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Map) + com.google.bigtable.v2.Type.MapOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Map_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Map_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Map.class, + com.google.bigtable.v2.Type.Map.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Map.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getKeyTypeFieldBuilder(); + getValueTypeFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + keyType_ = null; + if (keyTypeBuilder_ != null) { + keyTypeBuilder_.dispose(); + keyTypeBuilder_ = null; + } + valueType_ = null; + if (valueTypeBuilder_ != null) { + valueTypeBuilder_.dispose(); + valueTypeBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Map_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Map getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Map.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Map build() { + com.google.bigtable.v2.Type.Map result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Map buildPartial() { + com.google.bigtable.v2.Type.Map result = new com.google.bigtable.v2.Type.Map(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.Map result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.keyType_ = keyTypeBuilder_ == null ? keyType_ : keyTypeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.valueType_ = valueTypeBuilder_ == null ? valueType_ : valueTypeBuilder_.build(); + to_bitField0_ |= 0x00000002; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Map) { + return mergeFrom((com.google.bigtable.v2.Type.Map) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Map other) { + if (other == com.google.bigtable.v2.Type.Map.getDefaultInstance()) return this; + if (other.hasKeyType()) { + mergeKeyType(other.getKeyType()); + } + if (other.hasValueType()) { + mergeValueType(other.getValueType()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getKeyTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + input.readMessage(getValueTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.bigtable.v2.Type keyType_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + keyTypeBuilder_; + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + * + * @return Whether the keyType field is set. + */ + public boolean hasKeyType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + * + * @return The keyType. + */ + public com.google.bigtable.v2.Type getKeyType() { + if (keyTypeBuilder_ == null) { + return keyType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : keyType_; + } else { + return keyTypeBuilder_.getMessage(); + } + } + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + public Builder setKeyType(com.google.bigtable.v2.Type value) { + if (keyTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + keyType_ = value; + } else { + keyTypeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + public Builder setKeyType(com.google.bigtable.v2.Type.Builder builderForValue) { + if (keyTypeBuilder_ == null) { + keyType_ = builderForValue.build(); + } else { + keyTypeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + public Builder mergeKeyType(com.google.bigtable.v2.Type value) { + if (keyTypeBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && keyType_ != null + && keyType_ != com.google.bigtable.v2.Type.getDefaultInstance()) { + getKeyTypeBuilder().mergeFrom(value); + } else { + keyType_ = value; + } + } else { + keyTypeBuilder_.mergeFrom(value); + } + if (keyType_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + public Builder clearKeyType() { + bitField0_ = (bitField0_ & ~0x00000001); + keyType_ = null; + if (keyTypeBuilder_ != null) { + keyTypeBuilder_.dispose(); + keyTypeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + public com.google.bigtable.v2.Type.Builder getKeyTypeBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getKeyTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + public com.google.bigtable.v2.TypeOrBuilder getKeyTypeOrBuilder() { + if (keyTypeBuilder_ != null) { + return keyTypeBuilder_.getMessageOrBuilder(); + } else { + return keyType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : keyType_; + } + } + /** + * + * + *
+       * The type of a map key.
+       * Only `Bytes`, `String`, and `Int64` are allowed as key types.
+       * 
+ * + * .google.bigtable.v2.Type key_type = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + getKeyTypeFieldBuilder() { + if (keyTypeBuilder_ == null) { + keyTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder>( + getKeyType(), getParentForChildren(), isClean()); + keyType_ = null; + } + return keyTypeBuilder_; + } + + private com.google.bigtable.v2.Type valueType_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + valueTypeBuilder_; + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + * + * @return Whether the valueType field is set. + */ + public boolean hasValueType() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + * + * @return The valueType. + */ + public com.google.bigtable.v2.Type getValueType() { + if (valueTypeBuilder_ == null) { + return valueType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : valueType_; + } else { + return valueTypeBuilder_.getMessage(); + } + } + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + public Builder setValueType(com.google.bigtable.v2.Type value) { + if (valueTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + valueType_ = value; + } else { + valueTypeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + public Builder setValueType(com.google.bigtable.v2.Type.Builder builderForValue) { + if (valueTypeBuilder_ == null) { + valueType_ = builderForValue.build(); + } else { + valueTypeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + public Builder mergeValueType(com.google.bigtable.v2.Type value) { + if (valueTypeBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) + && valueType_ != null + && valueType_ != com.google.bigtable.v2.Type.getDefaultInstance()) { + getValueTypeBuilder().mergeFrom(value); + } else { + valueType_ = value; + } + } else { + valueTypeBuilder_.mergeFrom(value); + } + if (valueType_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + public Builder clearValueType() { + bitField0_ = (bitField0_ & ~0x00000002); + valueType_ = null; + if (valueTypeBuilder_ != null) { + valueTypeBuilder_.dispose(); + valueTypeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + public com.google.bigtable.v2.Type.Builder getValueTypeBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getValueTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + public com.google.bigtable.v2.TypeOrBuilder getValueTypeOrBuilder() { + if (valueTypeBuilder_ != null) { + return valueTypeBuilder_.getMessageOrBuilder(); + } else { + return valueType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : valueType_; + } + } + /** + * + * + *
+       * The type of the values in a map.
+       * 
+ * + * .google.bigtable.v2.Type value_type = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + getValueTypeFieldBuilder() { + if (valueTypeBuilder_ == null) { + valueTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder>( + getValueType(), getParentForChildren(), isClean()); + valueType_ = null; + } + return valueTypeBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Map) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Map) + private static final com.google.bigtable.v2.Type.Map DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Map(); + } + + public static com.google.bigtable.v2.Type.Map getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Map parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Map getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface AggregateOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Aggregate) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * Type of the inputs that are accumulated by this `Aggregate`, which must
+     * specify a full encoding.
+     * Use `AddInput` mutations to accumulate new inputs.
+     * 
+ * + * .google.bigtable.v2.Type input_type = 1; + * + * @return Whether the inputType field is set. + */ + boolean hasInputType(); + /** + * + * + *
+     * Type of the inputs that are accumulated by this `Aggregate`, which must
+     * specify a full encoding.
+     * Use `AddInput` mutations to accumulate new inputs.
+     * 
+ * + * .google.bigtable.v2.Type input_type = 1; + * + * @return The inputType. + */ + com.google.bigtable.v2.Type getInputType(); + /** + * + * + *
+     * Type of the inputs that are accumulated by this `Aggregate`, which must
+     * specify a full encoding.
+     * Use `AddInput` mutations to accumulate new inputs.
+     * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + com.google.bigtable.v2.TypeOrBuilder getInputTypeOrBuilder(); + + /** + * + * + *
+     * Output only. Type that holds the internal accumulator state for the
+     * `Aggregate`. This is a function of the `input_type` and `aggregator`
+     * chosen, and will always specify a full encoding.
+     * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the stateType field is set. + */ + boolean hasStateType(); + /** + * + * + *
+     * Output only. Type that holds the internal accumulator state for the
+     * `Aggregate`. This is a function of the `input_type` and `aggregator`
+     * chosen, and will always specify a full encoding.
+     * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The stateType. + */ + com.google.bigtable.v2.Type getStateType(); + /** + * + * + *
+     * Output only. Type that holds the internal accumulator state for the
+     * `Aggregate`. This is a function of the `input_type` and `aggregator`
+     * chosen, and will always specify a full encoding.
+     * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + com.google.bigtable.v2.TypeOrBuilder getStateTypeOrBuilder(); + + /** + * + * + *
+     * Sum aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + * + * @return Whether the sum field is set. + */ + boolean hasSum(); + /** + * + * + *
+     * Sum aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + * + * @return The sum. + */ + com.google.bigtable.v2.Type.Aggregate.Sum getSum(); + /** + * + * + *
+     * Sum aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + com.google.bigtable.v2.Type.Aggregate.SumOrBuilder getSumOrBuilder(); + + /** + * + * + *
+     * HyperLogLogPlusPlusUniqueCount aggregator.
+     * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + * + * @return Whether the hllppUniqueCount field is set. + */ + boolean hasHllppUniqueCount(); + /** + * + * + *
+     * HyperLogLogPlusPlusUniqueCount aggregator.
+     * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + * + * @return The hllppUniqueCount. + */ + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount getHllppUniqueCount(); + /** + * + * + *
+     * HyperLogLogPlusPlusUniqueCount aggregator.
+     * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCountOrBuilder + getHllppUniqueCountOrBuilder(); + + /** + * + * + *
+     * Max aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + * + * @return Whether the max field is set. + */ + boolean hasMax(); + /** + * + * + *
+     * Max aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + * + * @return The max. + */ + com.google.bigtable.v2.Type.Aggregate.Max getMax(); + /** + * + * + *
+     * Max aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + com.google.bigtable.v2.Type.Aggregate.MaxOrBuilder getMaxOrBuilder(); + + /** + * + * + *
+     * Min aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + * + * @return Whether the min field is set. + */ + boolean hasMin(); + /** + * + * + *
+     * Min aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + * + * @return The min. + */ + com.google.bigtable.v2.Type.Aggregate.Min getMin(); + /** + * + * + *
+     * Min aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + com.google.bigtable.v2.Type.Aggregate.MinOrBuilder getMinOrBuilder(); + + com.google.bigtable.v2.Type.Aggregate.AggregatorCase getAggregatorCase(); + } + /** + * + * + *
+   * A value that combines incremental updates into a summarized value.
+   *
+   * Data is never directly written or read using type `Aggregate`. Writes will
+   * provide either the `input_type` or `state_type`, and reads will always
+   * return the `state_type` .
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate} + */ + public static final class Aggregate extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Aggregate) + AggregateOrBuilder { + private static final long serialVersionUID = 0L; + // Use Aggregate.newBuilder() to construct. + private Aggregate(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Aggregate() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Aggregate(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.class, + com.google.bigtable.v2.Type.Aggregate.Builder.class); + } + + public interface SumOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Aggregate.Sum) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+     * Computes the sum of the input values.
+     * Allowed input: `Int64`
+     * State: same as input
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate.Sum} + */ + public static final class Sum extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Aggregate.Sum) + SumOrBuilder { + private static final long serialVersionUID = 0L; + // Use Sum.newBuilder() to construct. + private Sum(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Sum() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Sum(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Sum_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Sum_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.Sum.class, + com.google.bigtable.v2.Type.Aggregate.Sum.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Aggregate.Sum)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Aggregate.Sum other = + (com.google.bigtable.v2.Type.Aggregate.Sum) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Aggregate.Sum prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+       * Computes the sum of the input values.
+       * Allowed input: `Int64`
+       * State: same as input
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate.Sum} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Aggregate.Sum) + com.google.bigtable.v2.Type.Aggregate.SumOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Sum_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Sum_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.Sum.class, + com.google.bigtable.v2.Type.Aggregate.Sum.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Aggregate.Sum.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Sum_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Sum getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Sum build() { + com.google.bigtable.v2.Type.Aggregate.Sum result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Sum buildPartial() { + com.google.bigtable.v2.Type.Aggregate.Sum result = + new com.google.bigtable.v2.Type.Aggregate.Sum(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Aggregate.Sum) { + return mergeFrom((com.google.bigtable.v2.Type.Aggregate.Sum) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Aggregate.Sum other) { + if (other == com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Aggregate.Sum) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Aggregate.Sum) + private static final com.google.bigtable.v2.Type.Aggregate.Sum DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Aggregate.Sum(); + } + + public static com.google.bigtable.v2.Type.Aggregate.Sum getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Sum parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Sum getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface MaxOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Aggregate.Max) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+     * Computes the max of the input values.
+     * Allowed input: `Int64`
+     * State: same as input
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate.Max} + */ + public static final class Max extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Aggregate.Max) + MaxOrBuilder { + private static final long serialVersionUID = 0L; + // Use Max.newBuilder() to construct. + private Max(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Max() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Max(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Max_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Max_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.Max.class, + com.google.bigtable.v2.Type.Aggregate.Max.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Aggregate.Max)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Aggregate.Max other = + (com.google.bigtable.v2.Type.Aggregate.Max) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Aggregate.Max prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+       * Computes the max of the input values.
+       * Allowed input: `Int64`
+       * State: same as input
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate.Max} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Aggregate.Max) + com.google.bigtable.v2.Type.Aggregate.MaxOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Max_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Max_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.Max.class, + com.google.bigtable.v2.Type.Aggregate.Max.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Aggregate.Max.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Max_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Max getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Max build() { + com.google.bigtable.v2.Type.Aggregate.Max result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Max buildPartial() { + com.google.bigtable.v2.Type.Aggregate.Max result = + new com.google.bigtable.v2.Type.Aggregate.Max(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Aggregate.Max) { + return mergeFrom((com.google.bigtable.v2.Type.Aggregate.Max) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Aggregate.Max other) { + if (other == com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Aggregate.Max) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Aggregate.Max) + private static final com.google.bigtable.v2.Type.Aggregate.Max DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Aggregate.Max(); + } + + public static com.google.bigtable.v2.Type.Aggregate.Max getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Max parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Max getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface MinOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Aggregate.Min) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+     * Computes the min of the input values.
+     * Allowed input: `Int64`
+     * State: same as input
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate.Min} + */ + public static final class Min extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Aggregate.Min) + MinOrBuilder { + private static final long serialVersionUID = 0L; + // Use Min.newBuilder() to construct. + private Min(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Min() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Min(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Min_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Min_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.Min.class, + com.google.bigtable.v2.Type.Aggregate.Min.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Aggregate.Min)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Aggregate.Min other = + (com.google.bigtable.v2.Type.Aggregate.Min) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Aggregate.Min prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+       * Computes the min of the input values.
+       * Allowed input: `Int64`
+       * State: same as input
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate.Min} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Aggregate.Min) + com.google.bigtable.v2.Type.Aggregate.MinOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Min_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Min_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.Min.class, + com.google.bigtable.v2.Type.Aggregate.Min.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Aggregate.Min.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_Min_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Min getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Min build() { + com.google.bigtable.v2.Type.Aggregate.Min result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Min buildPartial() { + com.google.bigtable.v2.Type.Aggregate.Min result = + new com.google.bigtable.v2.Type.Aggregate.Min(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Aggregate.Min) { + return mergeFrom((com.google.bigtable.v2.Type.Aggregate.Min) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Aggregate.Min other) { + if (other == com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Aggregate.Min) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Aggregate.Min) + private static final com.google.bigtable.v2.Type.Aggregate.Min DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Aggregate.Min(); + } + + public static com.google.bigtable.v2.Type.Aggregate.Min getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Min parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Min getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface HyperLogLogPlusPlusUniqueCountOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + com.google.protobuf.MessageOrBuilder {} + /** + * + * + *
+     * Computes an approximate unique count over the input values. When using
+     * raw data as input, be careful to use a consistent encoding. Otherwise
+     * the same value encoded differently could count more than once, or two
+     * distinct values could count as identical.
+     * Input: Any, or omit for Raw
+     * State: TBD
+     * Special state conversions: `Int64` (the unique count estimate)
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount} + */ + public static final class HyperLogLogPlusPlusUniqueCount + extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + HyperLogLogPlusPlusUniqueCountOrBuilder { + private static final long serialVersionUID = 0L; + // Use HyperLogLogPlusPlusUniqueCount.newBuilder() to construct. + private HyperLogLogPlusPlusUniqueCount( + com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private HyperLogLogPlusPlusUniqueCount() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new HyperLogLogPlusPlusUniqueCount(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.class, + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.Builder.class); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj + instanceof com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount other = + (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+       * Computes an approximate unique count over the input values. When using
+       * raw data as input, be careful to use a consistent encoding. Otherwise
+       * the same value encoded differently could count more than once, or two
+       * distinct values could count as identical.
+       * Input: Any, or omit for Raw
+       * State: TBD
+       * Special state conversions: `Int64` (the unique count estimate)
+       * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCountOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.class, + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.Builder + .class); + } + + // Construct using + // com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount build() { + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount result = + buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount buildPartial() { + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount result = + new com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other + instanceof com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) { + return mergeFrom( + (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount other) { + if (other + == com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + private static final com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = + new com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount(); + } + + public static com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public HyperLogLogPlusPlusUniqueCount parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int bitField0_; + private int aggregatorCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object aggregator_; + + public enum AggregatorCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + SUM(4), + HLLPP_UNIQUE_COUNT(5), + MAX(6), + MIN(7), + AGGREGATOR_NOT_SET(0); + private final int value; + + private AggregatorCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static AggregatorCase valueOf(int value) { + return forNumber(value); + } + + public static AggregatorCase forNumber(int value) { + switch (value) { + case 4: + return SUM; + case 5: + return HLLPP_UNIQUE_COUNT; + case 6: + return MAX; + case 7: + return MIN; + case 0: + return AGGREGATOR_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public AggregatorCase getAggregatorCase() { + return AggregatorCase.forNumber(aggregatorCase_); + } + + public static final int INPUT_TYPE_FIELD_NUMBER = 1; + private com.google.bigtable.v2.Type inputType_; + /** + * + * + *
+     * Type of the inputs that are accumulated by this `Aggregate`, which must
+     * specify a full encoding.
+     * Use `AddInput` mutations to accumulate new inputs.
+     * 
+ * + * .google.bigtable.v2.Type input_type = 1; + * + * @return Whether the inputType field is set. + */ + @java.lang.Override + public boolean hasInputType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * Type of the inputs that are accumulated by this `Aggregate`, which must
+     * specify a full encoding.
+     * Use `AddInput` mutations to accumulate new inputs.
+     * 
+ * + * .google.bigtable.v2.Type input_type = 1; + * + * @return The inputType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type getInputType() { + return inputType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : inputType_; + } + /** + * + * + *
+     * Type of the inputs that are accumulated by this `Aggregate`, which must
+     * specify a full encoding.
+     * Use `AddInput` mutations to accumulate new inputs.
+     * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.TypeOrBuilder getInputTypeOrBuilder() { + return inputType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : inputType_; + } + + public static final int STATE_TYPE_FIELD_NUMBER = 2; + private com.google.bigtable.v2.Type stateType_; + /** + * + * + *
+     * Output only. Type that holds the internal accumulator state for the
+     * `Aggregate`. This is a function of the `input_type` and `aggregator`
+     * chosen, and will always specify a full encoding.
+     * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the stateType field is set. + */ + @java.lang.Override + public boolean hasStateType() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+     * Output only. Type that holds the internal accumulator state for the
+     * `Aggregate`. This is a function of the `input_type` and `aggregator`
+     * chosen, and will always specify a full encoding.
+     * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The stateType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type getStateType() { + return stateType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : stateType_; + } + /** + * + * + *
+     * Output only. Type that holds the internal accumulator state for the
+     * `Aggregate`. This is a function of the `input_type` and `aggregator`
+     * chosen, and will always specify a full encoding.
+     * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + @java.lang.Override + public com.google.bigtable.v2.TypeOrBuilder getStateTypeOrBuilder() { + return stateType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : stateType_; + } + + public static final int SUM_FIELD_NUMBER = 4; + /** + * + * + *
+     * Sum aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + * + * @return Whether the sum field is set. + */ + @java.lang.Override + public boolean hasSum() { + return aggregatorCase_ == 4; + } + /** + * + * + *
+     * Sum aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + * + * @return The sum. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Sum getSum() { + if (aggregatorCase_ == 4) { + return (com.google.bigtable.v2.Type.Aggregate.Sum) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance(); + } + /** + * + * + *
+     * Sum aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.SumOrBuilder getSumOrBuilder() { + if (aggregatorCase_ == 4) { + return (com.google.bigtable.v2.Type.Aggregate.Sum) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance(); + } + + public static final int HLLPP_UNIQUE_COUNT_FIELD_NUMBER = 5; + /** + * + * + *
+     * HyperLogLogPlusPlusUniqueCount aggregator.
+     * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + * + * @return Whether the hllppUniqueCount field is set. + */ + @java.lang.Override + public boolean hasHllppUniqueCount() { + return aggregatorCase_ == 5; + } + /** + * + * + *
+     * HyperLogLogPlusPlusUniqueCount aggregator.
+     * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + * + * @return The hllppUniqueCount. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + getHllppUniqueCount() { + if (aggregatorCase_ == 5) { + return (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance(); + } + /** + * + * + *
+     * HyperLogLogPlusPlusUniqueCount aggregator.
+     * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCountOrBuilder + getHllppUniqueCountOrBuilder() { + if (aggregatorCase_ == 5) { + return (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance(); + } + + public static final int MAX_FIELD_NUMBER = 6; + /** + * + * + *
+     * Max aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + * + * @return Whether the max field is set. + */ + @java.lang.Override + public boolean hasMax() { + return aggregatorCase_ == 6; + } + /** + * + * + *
+     * Max aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + * + * @return The max. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Max getMax() { + if (aggregatorCase_ == 6) { + return (com.google.bigtable.v2.Type.Aggregate.Max) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance(); + } + /** + * + * + *
+     * Max aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.MaxOrBuilder getMaxOrBuilder() { + if (aggregatorCase_ == 6) { + return (com.google.bigtable.v2.Type.Aggregate.Max) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance(); + } + + public static final int MIN_FIELD_NUMBER = 7; + /** + * + * + *
+     * Min aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + * + * @return Whether the min field is set. + */ + @java.lang.Override + public boolean hasMin() { + return aggregatorCase_ == 7; + } + /** + * + * + *
+     * Min aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + * + * @return The min. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Min getMin() { + if (aggregatorCase_ == 7) { + return (com.google.bigtable.v2.Type.Aggregate.Min) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance(); + } + /** + * + * + *
+     * Min aggregator.
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.MinOrBuilder getMinOrBuilder() { + if (aggregatorCase_ == 7) { + return (com.google.bigtable.v2.Type.Aggregate.Min) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getInputType()); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(2, getStateType()); + } + if (aggregatorCase_ == 4) { + output.writeMessage(4, (com.google.bigtable.v2.Type.Aggregate.Sum) aggregator_); + } + if (aggregatorCase_ == 5) { + output.writeMessage( + 5, (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) aggregator_); + } + if (aggregatorCase_ == 6) { + output.writeMessage(6, (com.google.bigtable.v2.Type.Aggregate.Max) aggregator_); + } + if (aggregatorCase_ == 7) { + output.writeMessage(7, (com.google.bigtable.v2.Type.Aggregate.Min) aggregator_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getInputType()); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getStateType()); + } + if (aggregatorCase_ == 4) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 4, (com.google.bigtable.v2.Type.Aggregate.Sum) aggregator_); + } + if (aggregatorCase_ == 5) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 5, + (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) aggregator_); + } + if (aggregatorCase_ == 6) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 6, (com.google.bigtable.v2.Type.Aggregate.Max) aggregator_); + } + if (aggregatorCase_ == 7) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 7, (com.google.bigtable.v2.Type.Aggregate.Min) aggregator_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type.Aggregate)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type.Aggregate other = (com.google.bigtable.v2.Type.Aggregate) obj; + + if (hasInputType() != other.hasInputType()) return false; + if (hasInputType()) { + if (!getInputType().equals(other.getInputType())) return false; + } + if (hasStateType() != other.hasStateType()) return false; + if (hasStateType()) { + if (!getStateType().equals(other.getStateType())) return false; + } + if (!getAggregatorCase().equals(other.getAggregatorCase())) return false; + switch (aggregatorCase_) { + case 4: + if (!getSum().equals(other.getSum())) return false; + break; + case 5: + if (!getHllppUniqueCount().equals(other.getHllppUniqueCount())) return false; + break; + case 6: + if (!getMax().equals(other.getMax())) return false; + break; + case 7: + if (!getMin().equals(other.getMin())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasInputType()) { + hash = (37 * hash) + INPUT_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getInputType().hashCode(); + } + if (hasStateType()) { + hash = (37 * hash) + STATE_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getStateType().hashCode(); + } + switch (aggregatorCase_) { + case 4: + hash = (37 * hash) + SUM_FIELD_NUMBER; + hash = (53 * hash) + getSum().hashCode(); + break; + case 5: + hash = (37 * hash) + HLLPP_UNIQUE_COUNT_FIELD_NUMBER; + hash = (53 * hash) + getHllppUniqueCount().hashCode(); + break; + case 6: + hash = (37 * hash) + MAX_FIELD_NUMBER; + hash = (53 * hash) + getMax().hashCode(); + break; + case 7: + hash = (37 * hash) + MIN_FIELD_NUMBER; + hash = (53 * hash) + getMin().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type.Aggregate parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type.Aggregate prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * A value that combines incremental updates into a summarized value.
+     *
+     * Data is never directly written or read using type `Aggregate`. Writes will
+     * provide either the `input_type` or `state_type`, and reads will always
+     * return the `state_type` .
+     * 
+ * + * Protobuf type {@code google.bigtable.v2.Type.Aggregate} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type.Aggregate) + com.google.bigtable.v2.Type.AggregateOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.Aggregate.class, + com.google.bigtable.v2.Type.Aggregate.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.Aggregate.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getInputTypeFieldBuilder(); + getStateTypeFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + inputType_ = null; + if (inputTypeBuilder_ != null) { + inputTypeBuilder_.dispose(); + inputTypeBuilder_ = null; + } + stateType_ = null; + if (stateTypeBuilder_ != null) { + stateTypeBuilder_.dispose(); + stateTypeBuilder_ = null; + } + if (sumBuilder_ != null) { + sumBuilder_.clear(); + } + if (hllppUniqueCountBuilder_ != null) { + hllppUniqueCountBuilder_.clear(); + } + if (maxBuilder_ != null) { + maxBuilder_.clear(); + } + if (minBuilder_ != null) { + minBuilder_.clear(); + } + aggregatorCase_ = 0; + aggregator_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_Aggregate_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.Aggregate.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate build() { + com.google.bigtable.v2.Type.Aggregate result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate buildPartial() { + com.google.bigtable.v2.Type.Aggregate result = + new com.google.bigtable.v2.Type.Aggregate(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type.Aggregate result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.inputType_ = inputTypeBuilder_ == null ? inputType_ : inputTypeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.stateType_ = stateTypeBuilder_ == null ? stateType_ : stateTypeBuilder_.build(); + to_bitField0_ |= 0x00000002; + } + result.bitField0_ |= to_bitField0_; + } + + private void buildPartialOneofs(com.google.bigtable.v2.Type.Aggregate result) { + result.aggregatorCase_ = aggregatorCase_; + result.aggregator_ = this.aggregator_; + if (aggregatorCase_ == 4 && sumBuilder_ != null) { + result.aggregator_ = sumBuilder_.build(); + } + if (aggregatorCase_ == 5 && hllppUniqueCountBuilder_ != null) { + result.aggregator_ = hllppUniqueCountBuilder_.build(); + } + if (aggregatorCase_ == 6 && maxBuilder_ != null) { + result.aggregator_ = maxBuilder_.build(); + } + if (aggregatorCase_ == 7 && minBuilder_ != null) { + result.aggregator_ = minBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type.Aggregate) { + return mergeFrom((com.google.bigtable.v2.Type.Aggregate) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type.Aggregate other) { + if (other == com.google.bigtable.v2.Type.Aggregate.getDefaultInstance()) return this; + if (other.hasInputType()) { + mergeInputType(other.getInputType()); + } + if (other.hasStateType()) { + mergeStateType(other.getStateType()); + } + switch (other.getAggregatorCase()) { + case SUM: + { + mergeSum(other.getSum()); + break; + } + case HLLPP_UNIQUE_COUNT: + { + mergeHllppUniqueCount(other.getHllppUniqueCount()); + break; + } + case MAX: + { + mergeMax(other.getMax()); + break; + } + case MIN: + { + mergeMin(other.getMin()); + break; + } + case AGGREGATOR_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getInputTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + input.readMessage(getStateTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 34: + { + input.readMessage(getSumFieldBuilder().getBuilder(), extensionRegistry); + aggregatorCase_ = 4; + break; + } // case 34 + case 42: + { + input.readMessage( + getHllppUniqueCountFieldBuilder().getBuilder(), extensionRegistry); + aggregatorCase_ = 5; + break; + } // case 42 + case 50: + { + input.readMessage(getMaxFieldBuilder().getBuilder(), extensionRegistry); + aggregatorCase_ = 6; + break; + } // case 50 + case 58: + { + input.readMessage(getMinFieldBuilder().getBuilder(), extensionRegistry); + aggregatorCase_ = 7; + break; + } // case 58 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int aggregatorCase_ = 0; + private java.lang.Object aggregator_; + + public AggregatorCase getAggregatorCase() { + return AggregatorCase.forNumber(aggregatorCase_); + } + + public Builder clearAggregator() { + aggregatorCase_ = 0; + aggregator_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.bigtable.v2.Type inputType_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + inputTypeBuilder_; + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + * + * @return Whether the inputType field is set. + */ + public boolean hasInputType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + * + * @return The inputType. + */ + public com.google.bigtable.v2.Type getInputType() { + if (inputTypeBuilder_ == null) { + return inputType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : inputType_; + } else { + return inputTypeBuilder_.getMessage(); + } + } + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + public Builder setInputType(com.google.bigtable.v2.Type value) { + if (inputTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + inputType_ = value; + } else { + inputTypeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + public Builder setInputType(com.google.bigtable.v2.Type.Builder builderForValue) { + if (inputTypeBuilder_ == null) { + inputType_ = builderForValue.build(); + } else { + inputTypeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + public Builder mergeInputType(com.google.bigtable.v2.Type value) { + if (inputTypeBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && inputType_ != null + && inputType_ != com.google.bigtable.v2.Type.getDefaultInstance()) { + getInputTypeBuilder().mergeFrom(value); + } else { + inputType_ = value; + } + } else { + inputTypeBuilder_.mergeFrom(value); + } + if (inputType_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + public Builder clearInputType() { + bitField0_ = (bitField0_ & ~0x00000001); + inputType_ = null; + if (inputTypeBuilder_ != null) { + inputTypeBuilder_.dispose(); + inputTypeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + public com.google.bigtable.v2.Type.Builder getInputTypeBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getInputTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + public com.google.bigtable.v2.TypeOrBuilder getInputTypeOrBuilder() { + if (inputTypeBuilder_ != null) { + return inputTypeBuilder_.getMessageOrBuilder(); + } else { + return inputType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : inputType_; + } + } + /** + * + * + *
+       * Type of the inputs that are accumulated by this `Aggregate`, which must
+       * specify a full encoding.
+       * Use `AddInput` mutations to accumulate new inputs.
+       * 
+ * + * .google.bigtable.v2.Type input_type = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + getInputTypeFieldBuilder() { + if (inputTypeBuilder_ == null) { + inputTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder>( + getInputType(), getParentForChildren(), isClean()); + inputType_ = null; + } + return inputTypeBuilder_; + } + + private com.google.bigtable.v2.Type stateType_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + stateTypeBuilder_; + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the stateType field is set. + */ + public boolean hasStateType() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The stateType. + */ + public com.google.bigtable.v2.Type getStateType() { + if (stateTypeBuilder_ == null) { + return stateType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : stateType_; + } else { + return stateTypeBuilder_.getMessage(); + } + } + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder setStateType(com.google.bigtable.v2.Type value) { + if (stateTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + stateType_ = value; + } else { + stateTypeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder setStateType(com.google.bigtable.v2.Type.Builder builderForValue) { + if (stateTypeBuilder_ == null) { + stateType_ = builderForValue.build(); + } else { + stateTypeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder mergeStateType(com.google.bigtable.v2.Type value) { + if (stateTypeBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) + && stateType_ != null + && stateType_ != com.google.bigtable.v2.Type.getDefaultInstance()) { + getStateTypeBuilder().mergeFrom(value); + } else { + stateType_ = value; + } + } else { + stateTypeBuilder_.mergeFrom(value); + } + if (stateType_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder clearStateType() { + bitField0_ = (bitField0_ & ~0x00000002); + stateType_ = null; + if (stateTypeBuilder_ != null) { + stateTypeBuilder_.dispose(); + stateTypeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.bigtable.v2.Type.Builder getStateTypeBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getStateTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.bigtable.v2.TypeOrBuilder getStateTypeOrBuilder() { + if (stateTypeBuilder_ != null) { + return stateTypeBuilder_.getMessageOrBuilder(); + } else { + return stateType_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : stateType_; + } + } + /** + * + * + *
+       * Output only. Type that holds the internal accumulator state for the
+       * `Aggregate`. This is a function of the `input_type` and `aggregator`
+       * chosen, and will always specify a full encoding.
+       * 
+ * + * .google.bigtable.v2.Type state_type = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + getStateTypeFieldBuilder() { + if (stateTypeBuilder_ == null) { + stateTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder>( + getStateType(), getParentForChildren(), isClean()); + stateType_ = null; + } + return stateTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Sum, + com.google.bigtable.v2.Type.Aggregate.Sum.Builder, + com.google.bigtable.v2.Type.Aggregate.SumOrBuilder> + sumBuilder_; + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + * + * @return Whether the sum field is set. + */ + @java.lang.Override + public boolean hasSum() { + return aggregatorCase_ == 4; + } + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + * + * @return The sum. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Sum getSum() { + if (sumBuilder_ == null) { + if (aggregatorCase_ == 4) { + return (com.google.bigtable.v2.Type.Aggregate.Sum) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance(); + } else { + if (aggregatorCase_ == 4) { + return sumBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance(); + } + } + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + public Builder setSum(com.google.bigtable.v2.Type.Aggregate.Sum value) { + if (sumBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + aggregator_ = value; + onChanged(); + } else { + sumBuilder_.setMessage(value); + } + aggregatorCase_ = 4; + return this; + } + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + public Builder setSum(com.google.bigtable.v2.Type.Aggregate.Sum.Builder builderForValue) { + if (sumBuilder_ == null) { + aggregator_ = builderForValue.build(); + onChanged(); + } else { + sumBuilder_.setMessage(builderForValue.build()); + } + aggregatorCase_ = 4; + return this; + } + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + public Builder mergeSum(com.google.bigtable.v2.Type.Aggregate.Sum value) { + if (sumBuilder_ == null) { + if (aggregatorCase_ == 4 + && aggregator_ != com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance()) { + aggregator_ = + com.google.bigtable.v2.Type.Aggregate.Sum.newBuilder( + (com.google.bigtable.v2.Type.Aggregate.Sum) aggregator_) + .mergeFrom(value) + .buildPartial(); + } else { + aggregator_ = value; + } + onChanged(); + } else { + if (aggregatorCase_ == 4) { + sumBuilder_.mergeFrom(value); + } else { + sumBuilder_.setMessage(value); + } + } + aggregatorCase_ = 4; + return this; + } + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + public Builder clearSum() { + if (sumBuilder_ == null) { + if (aggregatorCase_ == 4) { + aggregatorCase_ = 0; + aggregator_ = null; + onChanged(); + } + } else { + if (aggregatorCase_ == 4) { + aggregatorCase_ = 0; + aggregator_ = null; + } + sumBuilder_.clear(); + } + return this; + } + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + public com.google.bigtable.v2.Type.Aggregate.Sum.Builder getSumBuilder() { + return getSumFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.SumOrBuilder getSumOrBuilder() { + if ((aggregatorCase_ == 4) && (sumBuilder_ != null)) { + return sumBuilder_.getMessageOrBuilder(); + } else { + if (aggregatorCase_ == 4) { + return (com.google.bigtable.v2.Type.Aggregate.Sum) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance(); + } + } + /** + * + * + *
+       * Sum aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Sum sum = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Sum, + com.google.bigtable.v2.Type.Aggregate.Sum.Builder, + com.google.bigtable.v2.Type.Aggregate.SumOrBuilder> + getSumFieldBuilder() { + if (sumBuilder_ == null) { + if (!(aggregatorCase_ == 4)) { + aggregator_ = com.google.bigtable.v2.Type.Aggregate.Sum.getDefaultInstance(); + } + sumBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Sum, + com.google.bigtable.v2.Type.Aggregate.Sum.Builder, + com.google.bigtable.v2.Type.Aggregate.SumOrBuilder>( + (com.google.bigtable.v2.Type.Aggregate.Sum) aggregator_, + getParentForChildren(), + isClean()); + aggregator_ = null; + } + aggregatorCase_ = 4; + onChanged(); + return sumBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount, + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.Builder, + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCountOrBuilder> + hllppUniqueCountBuilder_; + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + * + * @return Whether the hllppUniqueCount field is set. + */ + @java.lang.Override + public boolean hasHllppUniqueCount() { + return aggregatorCase_ == 5; + } + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + * + * @return The hllppUniqueCount. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + getHllppUniqueCount() { + if (hllppUniqueCountBuilder_ == null) { + if (aggregatorCase_ == 5) { + return (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance(); + } else { + if (aggregatorCase_ == 5) { + return hllppUniqueCountBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance(); + } + } + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + public Builder setHllppUniqueCount( + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount value) { + if (hllppUniqueCountBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + aggregator_ = value; + onChanged(); + } else { + hllppUniqueCountBuilder_.setMessage(value); + } + aggregatorCase_ = 5; + return this; + } + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + public Builder setHllppUniqueCount( + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.Builder + builderForValue) { + if (hllppUniqueCountBuilder_ == null) { + aggregator_ = builderForValue.build(); + onChanged(); + } else { + hllppUniqueCountBuilder_.setMessage(builderForValue.build()); + } + aggregatorCase_ = 5; + return this; + } + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + public Builder mergeHllppUniqueCount( + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount value) { + if (hllppUniqueCountBuilder_ == null) { + if (aggregatorCase_ == 5 + && aggregator_ + != com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance()) { + aggregator_ = + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.newBuilder( + (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + aggregator_) + .mergeFrom(value) + .buildPartial(); + } else { + aggregator_ = value; + } + onChanged(); + } else { + if (aggregatorCase_ == 5) { + hllppUniqueCountBuilder_.mergeFrom(value); + } else { + hllppUniqueCountBuilder_.setMessage(value); + } + } + aggregatorCase_ = 5; + return this; + } + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + public Builder clearHllppUniqueCount() { + if (hllppUniqueCountBuilder_ == null) { + if (aggregatorCase_ == 5) { + aggregatorCase_ = 0; + aggregator_ = null; + onChanged(); + } + } else { + if (aggregatorCase_ == 5) { + aggregatorCase_ = 0; + aggregator_ = null; + } + hllppUniqueCountBuilder_.clear(); + } + return this; + } + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.Builder + getHllppUniqueCountBuilder() { + return getHllppUniqueCountFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCountOrBuilder + getHllppUniqueCountOrBuilder() { + if ((aggregatorCase_ == 5) && (hllppUniqueCountBuilder_ != null)) { + return hllppUniqueCountBuilder_.getMessageOrBuilder(); + } else { + if (aggregatorCase_ == 5) { + return (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance(); + } + } + /** + * + * + *
+       * HyperLogLogPlusPlusUniqueCount aggregator.
+       * 
+ * + * + * .google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount, + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.Builder, + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCountOrBuilder> + getHllppUniqueCountFieldBuilder() { + if (hllppUniqueCountBuilder_ == null) { + if (!(aggregatorCase_ == 5)) { + aggregator_ = + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount + .getDefaultInstance(); + } + hllppUniqueCountBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount, + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount.Builder, + com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCountOrBuilder>( + (com.google.bigtable.v2.Type.Aggregate.HyperLogLogPlusPlusUniqueCount) + aggregator_, + getParentForChildren(), + isClean()); + aggregator_ = null; + } + aggregatorCase_ = 5; + onChanged(); + return hllppUniqueCountBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Max, + com.google.bigtable.v2.Type.Aggregate.Max.Builder, + com.google.bigtable.v2.Type.Aggregate.MaxOrBuilder> + maxBuilder_; + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + * + * @return Whether the max field is set. + */ + @java.lang.Override + public boolean hasMax() { + return aggregatorCase_ == 6; + } + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + * + * @return The max. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Max getMax() { + if (maxBuilder_ == null) { + if (aggregatorCase_ == 6) { + return (com.google.bigtable.v2.Type.Aggregate.Max) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance(); + } else { + if (aggregatorCase_ == 6) { + return maxBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance(); + } + } + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + public Builder setMax(com.google.bigtable.v2.Type.Aggregate.Max value) { + if (maxBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + aggregator_ = value; + onChanged(); + } else { + maxBuilder_.setMessage(value); + } + aggregatorCase_ = 6; + return this; + } + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + public Builder setMax(com.google.bigtable.v2.Type.Aggregate.Max.Builder builderForValue) { + if (maxBuilder_ == null) { + aggregator_ = builderForValue.build(); + onChanged(); + } else { + maxBuilder_.setMessage(builderForValue.build()); + } + aggregatorCase_ = 6; + return this; + } + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + public Builder mergeMax(com.google.bigtable.v2.Type.Aggregate.Max value) { + if (maxBuilder_ == null) { + if (aggregatorCase_ == 6 + && aggregator_ != com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance()) { + aggregator_ = + com.google.bigtable.v2.Type.Aggregate.Max.newBuilder( + (com.google.bigtable.v2.Type.Aggregate.Max) aggregator_) + .mergeFrom(value) + .buildPartial(); + } else { + aggregator_ = value; + } + onChanged(); + } else { + if (aggregatorCase_ == 6) { + maxBuilder_.mergeFrom(value); + } else { + maxBuilder_.setMessage(value); + } + } + aggregatorCase_ = 6; + return this; + } + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + public Builder clearMax() { + if (maxBuilder_ == null) { + if (aggregatorCase_ == 6) { + aggregatorCase_ = 0; + aggregator_ = null; + onChanged(); + } + } else { + if (aggregatorCase_ == 6) { + aggregatorCase_ = 0; + aggregator_ = null; + } + maxBuilder_.clear(); + } + return this; + } + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + public com.google.bigtable.v2.Type.Aggregate.Max.Builder getMaxBuilder() { + return getMaxFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.MaxOrBuilder getMaxOrBuilder() { + if ((aggregatorCase_ == 6) && (maxBuilder_ != null)) { + return maxBuilder_.getMessageOrBuilder(); + } else { + if (aggregatorCase_ == 6) { + return (com.google.bigtable.v2.Type.Aggregate.Max) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance(); + } + } + /** + * + * + *
+       * Max aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Max max = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Max, + com.google.bigtable.v2.Type.Aggregate.Max.Builder, + com.google.bigtable.v2.Type.Aggregate.MaxOrBuilder> + getMaxFieldBuilder() { + if (maxBuilder_ == null) { + if (!(aggregatorCase_ == 6)) { + aggregator_ = com.google.bigtable.v2.Type.Aggregate.Max.getDefaultInstance(); + } + maxBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Max, + com.google.bigtable.v2.Type.Aggregate.Max.Builder, + com.google.bigtable.v2.Type.Aggregate.MaxOrBuilder>( + (com.google.bigtable.v2.Type.Aggregate.Max) aggregator_, + getParentForChildren(), + isClean()); + aggregator_ = null; + } + aggregatorCase_ = 6; + onChanged(); + return maxBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Min, + com.google.bigtable.v2.Type.Aggregate.Min.Builder, + com.google.bigtable.v2.Type.Aggregate.MinOrBuilder> + minBuilder_; + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + * + * @return Whether the min field is set. + */ + @java.lang.Override + public boolean hasMin() { + return aggregatorCase_ == 7; + } + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + * + * @return The min. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.Min getMin() { + if (minBuilder_ == null) { + if (aggregatorCase_ == 7) { + return (com.google.bigtable.v2.Type.Aggregate.Min) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance(); + } else { + if (aggregatorCase_ == 7) { + return minBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance(); + } + } + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + public Builder setMin(com.google.bigtable.v2.Type.Aggregate.Min value) { + if (minBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + aggregator_ = value; + onChanged(); + } else { + minBuilder_.setMessage(value); + } + aggregatorCase_ = 7; + return this; + } + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + public Builder setMin(com.google.bigtable.v2.Type.Aggregate.Min.Builder builderForValue) { + if (minBuilder_ == null) { + aggregator_ = builderForValue.build(); + onChanged(); + } else { + minBuilder_.setMessage(builderForValue.build()); + } + aggregatorCase_ = 7; + return this; + } + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + public Builder mergeMin(com.google.bigtable.v2.Type.Aggregate.Min value) { + if (minBuilder_ == null) { + if (aggregatorCase_ == 7 + && aggregator_ != com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance()) { + aggregator_ = + com.google.bigtable.v2.Type.Aggregate.Min.newBuilder( + (com.google.bigtable.v2.Type.Aggregate.Min) aggregator_) + .mergeFrom(value) + .buildPartial(); + } else { + aggregator_ = value; + } + onChanged(); + } else { + if (aggregatorCase_ == 7) { + minBuilder_.mergeFrom(value); + } else { + minBuilder_.setMessage(value); + } + } + aggregatorCase_ = 7; + return this; + } + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + public Builder clearMin() { + if (minBuilder_ == null) { + if (aggregatorCase_ == 7) { + aggregatorCase_ = 0; + aggregator_ = null; + onChanged(); + } + } else { + if (aggregatorCase_ == 7) { + aggregatorCase_ = 0; + aggregator_ = null; + } + minBuilder_.clear(); + } + return this; + } + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + public com.google.bigtable.v2.Type.Aggregate.Min.Builder getMinBuilder() { + return getMinFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate.MinOrBuilder getMinOrBuilder() { + if ((aggregatorCase_ == 7) && (minBuilder_ != null)) { + return minBuilder_.getMessageOrBuilder(); + } else { + if (aggregatorCase_ == 7) { + return (com.google.bigtable.v2.Type.Aggregate.Min) aggregator_; + } + return com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance(); + } + } + /** + * + * + *
+       * Min aggregator.
+       * 
+ * + * .google.bigtable.v2.Type.Aggregate.Min min = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Min, + com.google.bigtable.v2.Type.Aggregate.Min.Builder, + com.google.bigtable.v2.Type.Aggregate.MinOrBuilder> + getMinFieldBuilder() { + if (minBuilder_ == null) { + if (!(aggregatorCase_ == 7)) { + aggregator_ = com.google.bigtable.v2.Type.Aggregate.Min.getDefaultInstance(); + } + minBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate.Min, + com.google.bigtable.v2.Type.Aggregate.Min.Builder, + com.google.bigtable.v2.Type.Aggregate.MinOrBuilder>( + (com.google.bigtable.v2.Type.Aggregate.Min) aggregator_, + getParentForChildren(), + isClean()); + aggregator_ = null; + } + aggregatorCase_ = 7; + onChanged(); + return minBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type.Aggregate) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type.Aggregate) + private static final com.google.bigtable.v2.Type.Aggregate DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type.Aggregate(); + } + + public static com.google.bigtable.v2.Type.Aggregate getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Aggregate parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int kindCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object kind_; + + public enum KindCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + BYTES_TYPE(1), + STRING_TYPE(2), + INT64_TYPE(5), + FLOAT32_TYPE(12), + FLOAT64_TYPE(9), + BOOL_TYPE(8), + TIMESTAMP_TYPE(10), + DATE_TYPE(11), + AGGREGATE_TYPE(6), + STRUCT_TYPE(7), + ARRAY_TYPE(3), + MAP_TYPE(4), + KIND_NOT_SET(0); + private final int value; + + private KindCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static KindCase valueOf(int value) { + return forNumber(value); + } + + public static KindCase forNumber(int value) { + switch (value) { + case 1: + return BYTES_TYPE; + case 2: + return STRING_TYPE; + case 5: + return INT64_TYPE; + case 12: + return FLOAT32_TYPE; + case 9: + return FLOAT64_TYPE; + case 8: + return BOOL_TYPE; + case 10: + return TIMESTAMP_TYPE; + case 11: + return DATE_TYPE; + case 6: + return AGGREGATE_TYPE; + case 7: + return STRUCT_TYPE; + case 3: + return ARRAY_TYPE; + case 4: + return MAP_TYPE; + case 0: + return KIND_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public KindCase getKindCase() { + return KindCase.forNumber(kindCase_); + } + + public static final int BYTES_TYPE_FIELD_NUMBER = 1; + /** + * + * + *
+   * Bytes
+   * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return Whether the bytesType field is set. + */ + @java.lang.Override + public boolean hasBytesType() { + return kindCase_ == 1; + } + /** + * + * + *
+   * Bytes
+   * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return The bytesType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes getBytesType() { + if (kindCase_ == 1) { + return (com.google.bigtable.v2.Type.Bytes) kind_; + } + return com.google.bigtable.v2.Type.Bytes.getDefaultInstance(); + } + /** + * + * + *
+   * Bytes
+   * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.BytesOrBuilder getBytesTypeOrBuilder() { + if (kindCase_ == 1) { + return (com.google.bigtable.v2.Type.Bytes) kind_; + } + return com.google.bigtable.v2.Type.Bytes.getDefaultInstance(); + } + + public static final int STRING_TYPE_FIELD_NUMBER = 2; + /** + * + * + *
+   * String
+   * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + * + * @return Whether the stringType field is set. + */ + @java.lang.Override + public boolean hasStringType() { + return kindCase_ == 2; + } + /** + * + * + *
+   * String
+   * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + * + * @return The stringType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.String getStringType() { + if (kindCase_ == 2) { + return (com.google.bigtable.v2.Type.String) kind_; + } + return com.google.bigtable.v2.Type.String.getDefaultInstance(); + } + /** + * + * + *
+   * String
+   * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.StringOrBuilder getStringTypeOrBuilder() { + if (kindCase_ == 2) { + return (com.google.bigtable.v2.Type.String) kind_; + } + return com.google.bigtable.v2.Type.String.getDefaultInstance(); + } + + public static final int INT64_TYPE_FIELD_NUMBER = 5; + /** + * + * + *
+   * Int64
+   * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + * + * @return Whether the int64Type field is set. + */ + @java.lang.Override + public boolean hasInt64Type() { + return kindCase_ == 5; + } + /** + * + * + *
+   * Int64
+   * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + * + * @return The int64Type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64 getInt64Type() { + if (kindCase_ == 5) { + return (com.google.bigtable.v2.Type.Int64) kind_; + } + return com.google.bigtable.v2.Type.Int64.getDefaultInstance(); + } + /** + * + * + *
+   * Int64
+   * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64OrBuilder getInt64TypeOrBuilder() { + if (kindCase_ == 5) { + return (com.google.bigtable.v2.Type.Int64) kind_; + } + return com.google.bigtable.v2.Type.Int64.getDefaultInstance(); + } + + public static final int FLOAT32_TYPE_FIELD_NUMBER = 12; + /** + * + * + *
+   * Float32
+   * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + * + * @return Whether the float32Type field is set. + */ + @java.lang.Override + public boolean hasFloat32Type() { + return kindCase_ == 12; + } + /** + * + * + *
+   * Float32
+   * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + * + * @return The float32Type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Float32 getFloat32Type() { + if (kindCase_ == 12) { + return (com.google.bigtable.v2.Type.Float32) kind_; + } + return com.google.bigtable.v2.Type.Float32.getDefaultInstance(); + } + /** + * + * + *
+   * Float32
+   * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Float32OrBuilder getFloat32TypeOrBuilder() { + if (kindCase_ == 12) { + return (com.google.bigtable.v2.Type.Float32) kind_; + } + return com.google.bigtable.v2.Type.Float32.getDefaultInstance(); + } + + public static final int FLOAT64_TYPE_FIELD_NUMBER = 9; + /** + * + * + *
+   * Float64
+   * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + * + * @return Whether the float64Type field is set. + */ + @java.lang.Override + public boolean hasFloat64Type() { + return kindCase_ == 9; + } + /** + * + * + *
+   * Float64
+   * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + * + * @return The float64Type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Float64 getFloat64Type() { + if (kindCase_ == 9) { + return (com.google.bigtable.v2.Type.Float64) kind_; + } + return com.google.bigtable.v2.Type.Float64.getDefaultInstance(); + } + /** + * + * + *
+   * Float64
+   * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Float64OrBuilder getFloat64TypeOrBuilder() { + if (kindCase_ == 9) { + return (com.google.bigtable.v2.Type.Float64) kind_; + } + return com.google.bigtable.v2.Type.Float64.getDefaultInstance(); + } + + public static final int BOOL_TYPE_FIELD_NUMBER = 8; + /** + * + * + *
+   * Bool
+   * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + * + * @return Whether the boolType field is set. + */ + @java.lang.Override + public boolean hasBoolType() { + return kindCase_ == 8; + } + /** + * + * + *
+   * Bool
+   * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + * + * @return The boolType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bool getBoolType() { + if (kindCase_ == 8) { + return (com.google.bigtable.v2.Type.Bool) kind_; + } + return com.google.bigtable.v2.Type.Bool.getDefaultInstance(); + } + /** + * + * + *
+   * Bool
+   * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.BoolOrBuilder getBoolTypeOrBuilder() { + if (kindCase_ == 8) { + return (com.google.bigtable.v2.Type.Bool) kind_; + } + return com.google.bigtable.v2.Type.Bool.getDefaultInstance(); + } + + public static final int TIMESTAMP_TYPE_FIELD_NUMBER = 10; + /** + * + * + *
+   * Timestamp
+   * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + * + * @return Whether the timestampType field is set. + */ + @java.lang.Override + public boolean hasTimestampType() { + return kindCase_ == 10; + } + /** + * + * + *
+   * Timestamp
+   * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + * + * @return The timestampType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Timestamp getTimestampType() { + if (kindCase_ == 10) { + return (com.google.bigtable.v2.Type.Timestamp) kind_; + } + return com.google.bigtable.v2.Type.Timestamp.getDefaultInstance(); + } + /** + * + * + *
+   * Timestamp
+   * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.TimestampOrBuilder getTimestampTypeOrBuilder() { + if (kindCase_ == 10) { + return (com.google.bigtable.v2.Type.Timestamp) kind_; + } + return com.google.bigtable.v2.Type.Timestamp.getDefaultInstance(); + } + + public static final int DATE_TYPE_FIELD_NUMBER = 11; + /** + * + * + *
+   * Date
+   * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + * + * @return Whether the dateType field is set. + */ + @java.lang.Override + public boolean hasDateType() { + return kindCase_ == 11; + } + /** + * + * + *
+   * Date
+   * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + * + * @return The dateType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Date getDateType() { + if (kindCase_ == 11) { + return (com.google.bigtable.v2.Type.Date) kind_; + } + return com.google.bigtable.v2.Type.Date.getDefaultInstance(); + } + /** + * + * + *
+   * Date
+   * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.DateOrBuilder getDateTypeOrBuilder() { + if (kindCase_ == 11) { + return (com.google.bigtable.v2.Type.Date) kind_; + } + return com.google.bigtable.v2.Type.Date.getDefaultInstance(); + } + + public static final int AGGREGATE_TYPE_FIELD_NUMBER = 6; + /** + * + * + *
+   * Aggregate
+   * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + * + * @return Whether the aggregateType field is set. + */ + @java.lang.Override + public boolean hasAggregateType() { + return kindCase_ == 6; + } + /** + * + * + *
+   * Aggregate
+   * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + * + * @return The aggregateType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate getAggregateType() { + if (kindCase_ == 6) { + return (com.google.bigtable.v2.Type.Aggregate) kind_; + } + return com.google.bigtable.v2.Type.Aggregate.getDefaultInstance(); + } + /** + * + * + *
+   * Aggregate
+   * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.AggregateOrBuilder getAggregateTypeOrBuilder() { + if (kindCase_ == 6) { + return (com.google.bigtable.v2.Type.Aggregate) kind_; + } + return com.google.bigtable.v2.Type.Aggregate.getDefaultInstance(); + } + + public static final int STRUCT_TYPE_FIELD_NUMBER = 7; + /** + * + * + *
+   * Struct
+   * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + * + * @return Whether the structType field is set. + */ + @java.lang.Override + public boolean hasStructType() { + return kindCase_ == 7; + } + /** + * + * + *
+   * Struct
+   * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + * + * @return The structType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Struct getStructType() { + if (kindCase_ == 7) { + return (com.google.bigtable.v2.Type.Struct) kind_; + } + return com.google.bigtable.v2.Type.Struct.getDefaultInstance(); + } + /** + * + * + *
+   * Struct
+   * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.StructOrBuilder getStructTypeOrBuilder() { + if (kindCase_ == 7) { + return (com.google.bigtable.v2.Type.Struct) kind_; + } + return com.google.bigtable.v2.Type.Struct.getDefaultInstance(); + } + + public static final int ARRAY_TYPE_FIELD_NUMBER = 3; + /** + * + * + *
+   * Array
+   * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + * + * @return Whether the arrayType field is set. + */ + @java.lang.Override + public boolean hasArrayType() { + return kindCase_ == 3; + } + /** + * + * + *
+   * Array
+   * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + * + * @return The arrayType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Array getArrayType() { + if (kindCase_ == 3) { + return (com.google.bigtable.v2.Type.Array) kind_; + } + return com.google.bigtable.v2.Type.Array.getDefaultInstance(); + } + /** + * + * + *
+   * Array
+   * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.ArrayOrBuilder getArrayTypeOrBuilder() { + if (kindCase_ == 3) { + return (com.google.bigtable.v2.Type.Array) kind_; + } + return com.google.bigtable.v2.Type.Array.getDefaultInstance(); + } + + public static final int MAP_TYPE_FIELD_NUMBER = 4; + /** + * + * + *
+   * Map
+   * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + * + * @return Whether the mapType field is set. + */ + @java.lang.Override + public boolean hasMapType() { + return kindCase_ == 4; + } + /** + * + * + *
+   * Map
+   * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + * + * @return The mapType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Map getMapType() { + if (kindCase_ == 4) { + return (com.google.bigtable.v2.Type.Map) kind_; + } + return com.google.bigtable.v2.Type.Map.getDefaultInstance(); + } + /** + * + * + *
+   * Map
+   * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.MapOrBuilder getMapTypeOrBuilder() { + if (kindCase_ == 4) { + return (com.google.bigtable.v2.Type.Map) kind_; + } + return com.google.bigtable.v2.Type.Map.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (kindCase_ == 1) { + output.writeMessage(1, (com.google.bigtable.v2.Type.Bytes) kind_); + } + if (kindCase_ == 2) { + output.writeMessage(2, (com.google.bigtable.v2.Type.String) kind_); + } + if (kindCase_ == 3) { + output.writeMessage(3, (com.google.bigtable.v2.Type.Array) kind_); + } + if (kindCase_ == 4) { + output.writeMessage(4, (com.google.bigtable.v2.Type.Map) kind_); + } + if (kindCase_ == 5) { + output.writeMessage(5, (com.google.bigtable.v2.Type.Int64) kind_); + } + if (kindCase_ == 6) { + output.writeMessage(6, (com.google.bigtable.v2.Type.Aggregate) kind_); + } + if (kindCase_ == 7) { + output.writeMessage(7, (com.google.bigtable.v2.Type.Struct) kind_); + } + if (kindCase_ == 8) { + output.writeMessage(8, (com.google.bigtable.v2.Type.Bool) kind_); + } + if (kindCase_ == 9) { + output.writeMessage(9, (com.google.bigtable.v2.Type.Float64) kind_); + } + if (kindCase_ == 10) { + output.writeMessage(10, (com.google.bigtable.v2.Type.Timestamp) kind_); + } + if (kindCase_ == 11) { + output.writeMessage(11, (com.google.bigtable.v2.Type.Date) kind_); + } + if (kindCase_ == 12) { + output.writeMessage(12, (com.google.bigtable.v2.Type.Float32) kind_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (kindCase_ == 1) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 1, (com.google.bigtable.v2.Type.Bytes) kind_); + } + if (kindCase_ == 2) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 2, (com.google.bigtable.v2.Type.String) kind_); + } + if (kindCase_ == 3) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 3, (com.google.bigtable.v2.Type.Array) kind_); + } + if (kindCase_ == 4) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 4, (com.google.bigtable.v2.Type.Map) kind_); + } + if (kindCase_ == 5) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 5, (com.google.bigtable.v2.Type.Int64) kind_); + } + if (kindCase_ == 6) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 6, (com.google.bigtable.v2.Type.Aggregate) kind_); + } + if (kindCase_ == 7) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 7, (com.google.bigtable.v2.Type.Struct) kind_); + } + if (kindCase_ == 8) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 8, (com.google.bigtable.v2.Type.Bool) kind_); + } + if (kindCase_ == 9) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 9, (com.google.bigtable.v2.Type.Float64) kind_); + } + if (kindCase_ == 10) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 10, (com.google.bigtable.v2.Type.Timestamp) kind_); + } + if (kindCase_ == 11) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 11, (com.google.bigtable.v2.Type.Date) kind_); + } + if (kindCase_ == 12) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 12, (com.google.bigtable.v2.Type.Float32) kind_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.bigtable.v2.Type)) { + return super.equals(obj); + } + com.google.bigtable.v2.Type other = (com.google.bigtable.v2.Type) obj; + + if (!getKindCase().equals(other.getKindCase())) return false; + switch (kindCase_) { + case 1: + if (!getBytesType().equals(other.getBytesType())) return false; + break; + case 2: + if (!getStringType().equals(other.getStringType())) return false; + break; + case 5: + if (!getInt64Type().equals(other.getInt64Type())) return false; + break; + case 12: + if (!getFloat32Type().equals(other.getFloat32Type())) return false; + break; + case 9: + if (!getFloat64Type().equals(other.getFloat64Type())) return false; + break; + case 8: + if (!getBoolType().equals(other.getBoolType())) return false; + break; + case 10: + if (!getTimestampType().equals(other.getTimestampType())) return false; + break; + case 11: + if (!getDateType().equals(other.getDateType())) return false; + break; + case 6: + if (!getAggregateType().equals(other.getAggregateType())) return false; + break; + case 7: + if (!getStructType().equals(other.getStructType())) return false; + break; + case 3: + if (!getArrayType().equals(other.getArrayType())) return false; + break; + case 4: + if (!getMapType().equals(other.getMapType())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (kindCase_) { + case 1: + hash = (37 * hash) + BYTES_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getBytesType().hashCode(); + break; + case 2: + hash = (37 * hash) + STRING_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getStringType().hashCode(); + break; + case 5: + hash = (37 * hash) + INT64_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getInt64Type().hashCode(); + break; + case 12: + hash = (37 * hash) + FLOAT32_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getFloat32Type().hashCode(); + break; + case 9: + hash = (37 * hash) + FLOAT64_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getFloat64Type().hashCode(); + break; + case 8: + hash = (37 * hash) + BOOL_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getBoolType().hashCode(); + break; + case 10: + hash = (37 * hash) + TIMESTAMP_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getTimestampType().hashCode(); + break; + case 11: + hash = (37 * hash) + DATE_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getDateType().hashCode(); + break; + case 6: + hash = (37 * hash) + AGGREGATE_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getAggregateType().hashCode(); + break; + case 7: + hash = (37 * hash) + STRUCT_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getStructType().hashCode(); + break; + case 3: + hash = (37 * hash) + ARRAY_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getArrayType().hashCode(); + break; + case 4: + hash = (37 * hash) + MAP_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getMapType().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.Type parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.Type parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.Type parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.Type parseFrom(com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.Type parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.bigtable.v2.Type prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * `Type` represents the type of data that is written to, read from, or stored
+   * in Bigtable. It is heavily based on the GoogleSQL standard to help maintain
+   * familiarity and consistency across products and features.
+   *
+   * For compatibility with Bigtable's existing untyped APIs, each `Type` includes
+   * an `Encoding` which describes how to convert to/from the underlying data.
+   *
+   * Each encoding also defines the following properties:
+   *
+   *  * Order-preserving: Does the encoded value sort consistently with the
+   *    original typed value? Note that Bigtable will always sort data based on
+   *    the raw encoded value, *not* the decoded type.
+   *     - Example: BYTES values sort in the same order as their raw encodings.
+   *     - Counterexample: Encoding INT64 as a fixed-width decimal string does
+   *       *not* preserve sort order when dealing with negative numbers.
+   *       `INT64(1) > INT64(-1)`, but `STRING("-00001") > STRING("00001)`.
+   *  * Self-delimiting: If we concatenate two encoded values, can we always tell
+   *    where the first one ends and the second one begins?
+   *     - Example: If we encode INT64s to fixed-width STRINGs, the first value
+   *       will always contain exactly N digits, possibly preceded by a sign.
+   *     - Counterexample: If we concatenate two UTF-8 encoded STRINGs, we have
+   *       no way to tell where the first one ends.
+   *  * Compatibility: Which other systems have matching encoding schemes? For
+   *    example, does this encoding have a GoogleSQL equivalent? HBase? Java?
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.Type} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.Type) + com.google.bigtable.v2.TypeOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.TypesProto.internal_static_google_bigtable_v2_Type_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.TypesProto + .internal_static_google_bigtable_v2_Type_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.Type.class, com.google.bigtable.v2.Type.Builder.class); + } + + // Construct using com.google.bigtable.v2.Type.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (bytesTypeBuilder_ != null) { + bytesTypeBuilder_.clear(); + } + if (stringTypeBuilder_ != null) { + stringTypeBuilder_.clear(); + } + if (int64TypeBuilder_ != null) { + int64TypeBuilder_.clear(); + } + if (float32TypeBuilder_ != null) { + float32TypeBuilder_.clear(); + } + if (float64TypeBuilder_ != null) { + float64TypeBuilder_.clear(); + } + if (boolTypeBuilder_ != null) { + boolTypeBuilder_.clear(); + } + if (timestampTypeBuilder_ != null) { + timestampTypeBuilder_.clear(); + } + if (dateTypeBuilder_ != null) { + dateTypeBuilder_.clear(); + } + if (aggregateTypeBuilder_ != null) { + aggregateTypeBuilder_.clear(); + } + if (structTypeBuilder_ != null) { + structTypeBuilder_.clear(); + } + if (arrayTypeBuilder_ != null) { + arrayTypeBuilder_.clear(); + } + if (mapTypeBuilder_ != null) { + mapTypeBuilder_.clear(); + } + kindCase_ = 0; + kind_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.bigtable.v2.TypesProto.internal_static_google_bigtable_v2_Type_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.Type getDefaultInstanceForType() { + return com.google.bigtable.v2.Type.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.Type build() { + com.google.bigtable.v2.Type result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.Type buildPartial() { + com.google.bigtable.v2.Type result = new com.google.bigtable.v2.Type(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.Type result) { + int from_bitField0_ = bitField0_; + } + + private void buildPartialOneofs(com.google.bigtable.v2.Type result) { + result.kindCase_ = kindCase_; + result.kind_ = this.kind_; + if (kindCase_ == 1 && bytesTypeBuilder_ != null) { + result.kind_ = bytesTypeBuilder_.build(); + } + if (kindCase_ == 2 && stringTypeBuilder_ != null) { + result.kind_ = stringTypeBuilder_.build(); + } + if (kindCase_ == 5 && int64TypeBuilder_ != null) { + result.kind_ = int64TypeBuilder_.build(); + } + if (kindCase_ == 12 && float32TypeBuilder_ != null) { + result.kind_ = float32TypeBuilder_.build(); + } + if (kindCase_ == 9 && float64TypeBuilder_ != null) { + result.kind_ = float64TypeBuilder_.build(); + } + if (kindCase_ == 8 && boolTypeBuilder_ != null) { + result.kind_ = boolTypeBuilder_.build(); + } + if (kindCase_ == 10 && timestampTypeBuilder_ != null) { + result.kind_ = timestampTypeBuilder_.build(); + } + if (kindCase_ == 11 && dateTypeBuilder_ != null) { + result.kind_ = dateTypeBuilder_.build(); + } + if (kindCase_ == 6 && aggregateTypeBuilder_ != null) { + result.kind_ = aggregateTypeBuilder_.build(); + } + if (kindCase_ == 7 && structTypeBuilder_ != null) { + result.kind_ = structTypeBuilder_.build(); + } + if (kindCase_ == 3 && arrayTypeBuilder_ != null) { + result.kind_ = arrayTypeBuilder_.build(); + } + if (kindCase_ == 4 && mapTypeBuilder_ != null) { + result.kind_ = mapTypeBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.Type) { + return mergeFrom((com.google.bigtable.v2.Type) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.Type other) { + if (other == com.google.bigtable.v2.Type.getDefaultInstance()) return this; + switch (other.getKindCase()) { + case BYTES_TYPE: + { + mergeBytesType(other.getBytesType()); + break; + } + case STRING_TYPE: + { + mergeStringType(other.getStringType()); + break; + } + case INT64_TYPE: + { + mergeInt64Type(other.getInt64Type()); + break; + } + case FLOAT32_TYPE: + { + mergeFloat32Type(other.getFloat32Type()); + break; + } + case FLOAT64_TYPE: + { + mergeFloat64Type(other.getFloat64Type()); + break; + } + case BOOL_TYPE: + { + mergeBoolType(other.getBoolType()); + break; + } + case TIMESTAMP_TYPE: + { + mergeTimestampType(other.getTimestampType()); + break; + } + case DATE_TYPE: + { + mergeDateType(other.getDateType()); + break; + } + case AGGREGATE_TYPE: + { + mergeAggregateType(other.getAggregateType()); + break; + } + case STRUCT_TYPE: + { + mergeStructType(other.getStructType()); + break; + } + case ARRAY_TYPE: + { + mergeArrayType(other.getArrayType()); + break; + } + case MAP_TYPE: + { + mergeMapType(other.getMapType()); + break; + } + case KIND_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getBytesTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 1; + break; + } // case 10 + case 18: + { + input.readMessage(getStringTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 2; + break; + } // case 18 + case 26: + { + input.readMessage(getArrayTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 3; + break; + } // case 26 + case 34: + { + input.readMessage(getMapTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 4; + break; + } // case 34 + case 42: + { + input.readMessage(getInt64TypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 5; + break; + } // case 42 + case 50: + { + input.readMessage(getAggregateTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 6; + break; + } // case 50 + case 58: + { + input.readMessage(getStructTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 7; + break; + } // case 58 + case 66: + { + input.readMessage(getBoolTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 8; + break; + } // case 66 + case 74: + { + input.readMessage(getFloat64TypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 9; + break; + } // case 74 + case 82: + { + input.readMessage(getTimestampTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 10; + break; + } // case 82 + case 90: + { + input.readMessage(getDateTypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 11; + break; + } // case 90 + case 98: + { + input.readMessage(getFloat32TypeFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 12; + break; + } // case 98 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int kindCase_ = 0; + private java.lang.Object kind_; + + public KindCase getKindCase() { + return KindCase.forNumber(kindCase_); + } + + public Builder clearKind() { + kindCase_ = 0; + kind_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes, + com.google.bigtable.v2.Type.Bytes.Builder, + com.google.bigtable.v2.Type.BytesOrBuilder> + bytesTypeBuilder_; + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return Whether the bytesType field is set. + */ + @java.lang.Override + public boolean hasBytesType() { + return kindCase_ == 1; + } + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return The bytesType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bytes getBytesType() { + if (bytesTypeBuilder_ == null) { + if (kindCase_ == 1) { + return (com.google.bigtable.v2.Type.Bytes) kind_; + } + return com.google.bigtable.v2.Type.Bytes.getDefaultInstance(); + } else { + if (kindCase_ == 1) { + return bytesTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Bytes.getDefaultInstance(); + } + } + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public Builder setBytesType(com.google.bigtable.v2.Type.Bytes value) { + if (bytesTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + bytesTypeBuilder_.setMessage(value); + } + kindCase_ = 1; + return this; + } + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public Builder setBytesType(com.google.bigtable.v2.Type.Bytes.Builder builderForValue) { + if (bytesTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + bytesTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 1; + return this; + } + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public Builder mergeBytesType(com.google.bigtable.v2.Type.Bytes value) { + if (bytesTypeBuilder_ == null) { + if (kindCase_ == 1 && kind_ != com.google.bigtable.v2.Type.Bytes.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Bytes.newBuilder( + (com.google.bigtable.v2.Type.Bytes) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 1) { + bytesTypeBuilder_.mergeFrom(value); + } else { + bytesTypeBuilder_.setMessage(value); + } + } + kindCase_ = 1; + return this; + } + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public Builder clearBytesType() { + if (bytesTypeBuilder_ == null) { + if (kindCase_ == 1) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 1) { + kindCase_ = 0; + kind_ = null; + } + bytesTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + public com.google.bigtable.v2.Type.Bytes.Builder getBytesTypeBuilder() { + return getBytesTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.BytesOrBuilder getBytesTypeOrBuilder() { + if ((kindCase_ == 1) && (bytesTypeBuilder_ != null)) { + return bytesTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 1) { + return (com.google.bigtable.v2.Type.Bytes) kind_; + } + return com.google.bigtable.v2.Type.Bytes.getDefaultInstance(); + } + } + /** + * + * + *
+     * Bytes
+     * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes, + com.google.bigtable.v2.Type.Bytes.Builder, + com.google.bigtable.v2.Type.BytesOrBuilder> + getBytesTypeFieldBuilder() { + if (bytesTypeBuilder_ == null) { + if (!(kindCase_ == 1)) { + kind_ = com.google.bigtable.v2.Type.Bytes.getDefaultInstance(); + } + bytesTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bytes, + com.google.bigtable.v2.Type.Bytes.Builder, + com.google.bigtable.v2.Type.BytesOrBuilder>( + (com.google.bigtable.v2.Type.Bytes) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 1; + onChanged(); + return bytesTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String, + com.google.bigtable.v2.Type.String.Builder, + com.google.bigtable.v2.Type.StringOrBuilder> + stringTypeBuilder_; + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + * + * @return Whether the stringType field is set. + */ + @java.lang.Override + public boolean hasStringType() { + return kindCase_ == 2; + } + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + * + * @return The stringType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.String getStringType() { + if (stringTypeBuilder_ == null) { + if (kindCase_ == 2) { + return (com.google.bigtable.v2.Type.String) kind_; + } + return com.google.bigtable.v2.Type.String.getDefaultInstance(); + } else { + if (kindCase_ == 2) { + return stringTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.String.getDefaultInstance(); + } + } + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + public Builder setStringType(com.google.bigtable.v2.Type.String value) { + if (stringTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + stringTypeBuilder_.setMessage(value); + } + kindCase_ = 2; + return this; + } + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + public Builder setStringType(com.google.bigtable.v2.Type.String.Builder builderForValue) { + if (stringTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + stringTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 2; + return this; + } + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + public Builder mergeStringType(com.google.bigtable.v2.Type.String value) { + if (stringTypeBuilder_ == null) { + if (kindCase_ == 2 && kind_ != com.google.bigtable.v2.Type.String.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.String.newBuilder( + (com.google.bigtable.v2.Type.String) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 2) { + stringTypeBuilder_.mergeFrom(value); + } else { + stringTypeBuilder_.setMessage(value); + } + } + kindCase_ = 2; + return this; + } + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + public Builder clearStringType() { + if (stringTypeBuilder_ == null) { + if (kindCase_ == 2) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 2) { + kindCase_ = 0; + kind_ = null; + } + stringTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + public com.google.bigtable.v2.Type.String.Builder getStringTypeBuilder() { + return getStringTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.StringOrBuilder getStringTypeOrBuilder() { + if ((kindCase_ == 2) && (stringTypeBuilder_ != null)) { + return stringTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 2) { + return (com.google.bigtable.v2.Type.String) kind_; + } + return com.google.bigtable.v2.Type.String.getDefaultInstance(); + } + } + /** + * + * + *
+     * String
+     * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String, + com.google.bigtable.v2.Type.String.Builder, + com.google.bigtable.v2.Type.StringOrBuilder> + getStringTypeFieldBuilder() { + if (stringTypeBuilder_ == null) { + if (!(kindCase_ == 2)) { + kind_ = com.google.bigtable.v2.Type.String.getDefaultInstance(); + } + stringTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.String, + com.google.bigtable.v2.Type.String.Builder, + com.google.bigtable.v2.Type.StringOrBuilder>( + (com.google.bigtable.v2.Type.String) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 2; + onChanged(); + return stringTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64, + com.google.bigtable.v2.Type.Int64.Builder, + com.google.bigtable.v2.Type.Int64OrBuilder> + int64TypeBuilder_; + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + * + * @return Whether the int64Type field is set. + */ + @java.lang.Override + public boolean hasInt64Type() { + return kindCase_ == 5; + } + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + * + * @return The int64Type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64 getInt64Type() { + if (int64TypeBuilder_ == null) { + if (kindCase_ == 5) { + return (com.google.bigtable.v2.Type.Int64) kind_; + } + return com.google.bigtable.v2.Type.Int64.getDefaultInstance(); + } else { + if (kindCase_ == 5) { + return int64TypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Int64.getDefaultInstance(); + } + } + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + public Builder setInt64Type(com.google.bigtable.v2.Type.Int64 value) { + if (int64TypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + int64TypeBuilder_.setMessage(value); + } + kindCase_ = 5; + return this; + } + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + public Builder setInt64Type(com.google.bigtable.v2.Type.Int64.Builder builderForValue) { + if (int64TypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + int64TypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 5; + return this; + } + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + public Builder mergeInt64Type(com.google.bigtable.v2.Type.Int64 value) { + if (int64TypeBuilder_ == null) { + if (kindCase_ == 5 && kind_ != com.google.bigtable.v2.Type.Int64.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Int64.newBuilder( + (com.google.bigtable.v2.Type.Int64) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 5) { + int64TypeBuilder_.mergeFrom(value); + } else { + int64TypeBuilder_.setMessage(value); + } + } + kindCase_ = 5; + return this; + } + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + public Builder clearInt64Type() { + if (int64TypeBuilder_ == null) { + if (kindCase_ == 5) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 5) { + kindCase_ = 0; + kind_ = null; + } + int64TypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + public com.google.bigtable.v2.Type.Int64.Builder getInt64TypeBuilder() { + return getInt64TypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Int64OrBuilder getInt64TypeOrBuilder() { + if ((kindCase_ == 5) && (int64TypeBuilder_ != null)) { + return int64TypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 5) { + return (com.google.bigtable.v2.Type.Int64) kind_; + } + return com.google.bigtable.v2.Type.Int64.getDefaultInstance(); + } + } + /** + * + * + *
+     * Int64
+     * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64, + com.google.bigtable.v2.Type.Int64.Builder, + com.google.bigtable.v2.Type.Int64OrBuilder> + getInt64TypeFieldBuilder() { + if (int64TypeBuilder_ == null) { + if (!(kindCase_ == 5)) { + kind_ = com.google.bigtable.v2.Type.Int64.getDefaultInstance(); + } + int64TypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Int64, + com.google.bigtable.v2.Type.Int64.Builder, + com.google.bigtable.v2.Type.Int64OrBuilder>( + (com.google.bigtable.v2.Type.Int64) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 5; + onChanged(); + return int64TypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Float32, + com.google.bigtable.v2.Type.Float32.Builder, + com.google.bigtable.v2.Type.Float32OrBuilder> + float32TypeBuilder_; + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + * + * @return Whether the float32Type field is set. + */ + @java.lang.Override + public boolean hasFloat32Type() { + return kindCase_ == 12; + } + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + * + * @return The float32Type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Float32 getFloat32Type() { + if (float32TypeBuilder_ == null) { + if (kindCase_ == 12) { + return (com.google.bigtable.v2.Type.Float32) kind_; + } + return com.google.bigtable.v2.Type.Float32.getDefaultInstance(); + } else { + if (kindCase_ == 12) { + return float32TypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Float32.getDefaultInstance(); + } + } + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + public Builder setFloat32Type(com.google.bigtable.v2.Type.Float32 value) { + if (float32TypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + float32TypeBuilder_.setMessage(value); + } + kindCase_ = 12; + return this; + } + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + public Builder setFloat32Type(com.google.bigtable.v2.Type.Float32.Builder builderForValue) { + if (float32TypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + float32TypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 12; + return this; + } + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + public Builder mergeFloat32Type(com.google.bigtable.v2.Type.Float32 value) { + if (float32TypeBuilder_ == null) { + if (kindCase_ == 12 && kind_ != com.google.bigtable.v2.Type.Float32.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Float32.newBuilder( + (com.google.bigtable.v2.Type.Float32) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 12) { + float32TypeBuilder_.mergeFrom(value); + } else { + float32TypeBuilder_.setMessage(value); + } + } + kindCase_ = 12; + return this; + } + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + public Builder clearFloat32Type() { + if (float32TypeBuilder_ == null) { + if (kindCase_ == 12) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 12) { + kindCase_ = 0; + kind_ = null; + } + float32TypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + public com.google.bigtable.v2.Type.Float32.Builder getFloat32TypeBuilder() { + return getFloat32TypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Float32OrBuilder getFloat32TypeOrBuilder() { + if ((kindCase_ == 12) && (float32TypeBuilder_ != null)) { + return float32TypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 12) { + return (com.google.bigtable.v2.Type.Float32) kind_; + } + return com.google.bigtable.v2.Type.Float32.getDefaultInstance(); + } + } + /** + * + * + *
+     * Float32
+     * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Float32, + com.google.bigtable.v2.Type.Float32.Builder, + com.google.bigtable.v2.Type.Float32OrBuilder> + getFloat32TypeFieldBuilder() { + if (float32TypeBuilder_ == null) { + if (!(kindCase_ == 12)) { + kind_ = com.google.bigtable.v2.Type.Float32.getDefaultInstance(); + } + float32TypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Float32, + com.google.bigtable.v2.Type.Float32.Builder, + com.google.bigtable.v2.Type.Float32OrBuilder>( + (com.google.bigtable.v2.Type.Float32) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 12; + onChanged(); + return float32TypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Float64, + com.google.bigtable.v2.Type.Float64.Builder, + com.google.bigtable.v2.Type.Float64OrBuilder> + float64TypeBuilder_; + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + * + * @return Whether the float64Type field is set. + */ + @java.lang.Override + public boolean hasFloat64Type() { + return kindCase_ == 9; + } + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + * + * @return The float64Type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Float64 getFloat64Type() { + if (float64TypeBuilder_ == null) { + if (kindCase_ == 9) { + return (com.google.bigtable.v2.Type.Float64) kind_; + } + return com.google.bigtable.v2.Type.Float64.getDefaultInstance(); + } else { + if (kindCase_ == 9) { + return float64TypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Float64.getDefaultInstance(); + } + } + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + public Builder setFloat64Type(com.google.bigtable.v2.Type.Float64 value) { + if (float64TypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + float64TypeBuilder_.setMessage(value); + } + kindCase_ = 9; + return this; + } + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + public Builder setFloat64Type(com.google.bigtable.v2.Type.Float64.Builder builderForValue) { + if (float64TypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + float64TypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 9; + return this; + } + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + public Builder mergeFloat64Type(com.google.bigtable.v2.Type.Float64 value) { + if (float64TypeBuilder_ == null) { + if (kindCase_ == 9 && kind_ != com.google.bigtable.v2.Type.Float64.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Float64.newBuilder( + (com.google.bigtable.v2.Type.Float64) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 9) { + float64TypeBuilder_.mergeFrom(value); + } else { + float64TypeBuilder_.setMessage(value); + } + } + kindCase_ = 9; + return this; + } + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + public Builder clearFloat64Type() { + if (float64TypeBuilder_ == null) { + if (kindCase_ == 9) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 9) { + kindCase_ = 0; + kind_ = null; + } + float64TypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + public com.google.bigtable.v2.Type.Float64.Builder getFloat64TypeBuilder() { + return getFloat64TypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Float64OrBuilder getFloat64TypeOrBuilder() { + if ((kindCase_ == 9) && (float64TypeBuilder_ != null)) { + return float64TypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 9) { + return (com.google.bigtable.v2.Type.Float64) kind_; + } + return com.google.bigtable.v2.Type.Float64.getDefaultInstance(); + } + } + /** + * + * + *
+     * Float64
+     * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Float64, + com.google.bigtable.v2.Type.Float64.Builder, + com.google.bigtable.v2.Type.Float64OrBuilder> + getFloat64TypeFieldBuilder() { + if (float64TypeBuilder_ == null) { + if (!(kindCase_ == 9)) { + kind_ = com.google.bigtable.v2.Type.Float64.getDefaultInstance(); + } + float64TypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Float64, + com.google.bigtable.v2.Type.Float64.Builder, + com.google.bigtable.v2.Type.Float64OrBuilder>( + (com.google.bigtable.v2.Type.Float64) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 9; + onChanged(); + return float64TypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bool, + com.google.bigtable.v2.Type.Bool.Builder, + com.google.bigtable.v2.Type.BoolOrBuilder> + boolTypeBuilder_; + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + * + * @return Whether the boolType field is set. + */ + @java.lang.Override + public boolean hasBoolType() { + return kindCase_ == 8; + } + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + * + * @return The boolType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Bool getBoolType() { + if (boolTypeBuilder_ == null) { + if (kindCase_ == 8) { + return (com.google.bigtable.v2.Type.Bool) kind_; + } + return com.google.bigtable.v2.Type.Bool.getDefaultInstance(); + } else { + if (kindCase_ == 8) { + return boolTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Bool.getDefaultInstance(); + } + } + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + public Builder setBoolType(com.google.bigtable.v2.Type.Bool value) { + if (boolTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + boolTypeBuilder_.setMessage(value); + } + kindCase_ = 8; + return this; + } + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + public Builder setBoolType(com.google.bigtable.v2.Type.Bool.Builder builderForValue) { + if (boolTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + boolTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 8; + return this; + } + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + public Builder mergeBoolType(com.google.bigtable.v2.Type.Bool value) { + if (boolTypeBuilder_ == null) { + if (kindCase_ == 8 && kind_ != com.google.bigtable.v2.Type.Bool.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Bool.newBuilder((com.google.bigtable.v2.Type.Bool) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 8) { + boolTypeBuilder_.mergeFrom(value); + } else { + boolTypeBuilder_.setMessage(value); + } + } + kindCase_ = 8; + return this; + } + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + public Builder clearBoolType() { + if (boolTypeBuilder_ == null) { + if (kindCase_ == 8) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 8) { + kindCase_ = 0; + kind_ = null; + } + boolTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + public com.google.bigtable.v2.Type.Bool.Builder getBoolTypeBuilder() { + return getBoolTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.BoolOrBuilder getBoolTypeOrBuilder() { + if ((kindCase_ == 8) && (boolTypeBuilder_ != null)) { + return boolTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 8) { + return (com.google.bigtable.v2.Type.Bool) kind_; + } + return com.google.bigtable.v2.Type.Bool.getDefaultInstance(); + } + } + /** + * + * + *
+     * Bool
+     * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bool, + com.google.bigtable.v2.Type.Bool.Builder, + com.google.bigtable.v2.Type.BoolOrBuilder> + getBoolTypeFieldBuilder() { + if (boolTypeBuilder_ == null) { + if (!(kindCase_ == 8)) { + kind_ = com.google.bigtable.v2.Type.Bool.getDefaultInstance(); + } + boolTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Bool, + com.google.bigtable.v2.Type.Bool.Builder, + com.google.bigtable.v2.Type.BoolOrBuilder>( + (com.google.bigtable.v2.Type.Bool) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 8; + onChanged(); + return boolTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Timestamp, + com.google.bigtable.v2.Type.Timestamp.Builder, + com.google.bigtable.v2.Type.TimestampOrBuilder> + timestampTypeBuilder_; + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + * + * @return Whether the timestampType field is set. + */ + @java.lang.Override + public boolean hasTimestampType() { + return kindCase_ == 10; + } + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + * + * @return The timestampType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Timestamp getTimestampType() { + if (timestampTypeBuilder_ == null) { + if (kindCase_ == 10) { + return (com.google.bigtable.v2.Type.Timestamp) kind_; + } + return com.google.bigtable.v2.Type.Timestamp.getDefaultInstance(); + } else { + if (kindCase_ == 10) { + return timestampTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Timestamp.getDefaultInstance(); + } + } + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + public Builder setTimestampType(com.google.bigtable.v2.Type.Timestamp value) { + if (timestampTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + timestampTypeBuilder_.setMessage(value); + } + kindCase_ = 10; + return this; + } + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + public Builder setTimestampType(com.google.bigtable.v2.Type.Timestamp.Builder builderForValue) { + if (timestampTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + timestampTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 10; + return this; + } + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + public Builder mergeTimestampType(com.google.bigtable.v2.Type.Timestamp value) { + if (timestampTypeBuilder_ == null) { + if (kindCase_ == 10 + && kind_ != com.google.bigtable.v2.Type.Timestamp.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Timestamp.newBuilder( + (com.google.bigtable.v2.Type.Timestamp) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 10) { + timestampTypeBuilder_.mergeFrom(value); + } else { + timestampTypeBuilder_.setMessage(value); + } + } + kindCase_ = 10; + return this; + } + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + public Builder clearTimestampType() { + if (timestampTypeBuilder_ == null) { + if (kindCase_ == 10) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 10) { + kindCase_ = 0; + kind_ = null; + } + timestampTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + public com.google.bigtable.v2.Type.Timestamp.Builder getTimestampTypeBuilder() { + return getTimestampTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.TimestampOrBuilder getTimestampTypeOrBuilder() { + if ((kindCase_ == 10) && (timestampTypeBuilder_ != null)) { + return timestampTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 10) { + return (com.google.bigtable.v2.Type.Timestamp) kind_; + } + return com.google.bigtable.v2.Type.Timestamp.getDefaultInstance(); + } + } + /** + * + * + *
+     * Timestamp
+     * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Timestamp, + com.google.bigtable.v2.Type.Timestamp.Builder, + com.google.bigtable.v2.Type.TimestampOrBuilder> + getTimestampTypeFieldBuilder() { + if (timestampTypeBuilder_ == null) { + if (!(kindCase_ == 10)) { + kind_ = com.google.bigtable.v2.Type.Timestamp.getDefaultInstance(); + } + timestampTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Timestamp, + com.google.bigtable.v2.Type.Timestamp.Builder, + com.google.bigtable.v2.Type.TimestampOrBuilder>( + (com.google.bigtable.v2.Type.Timestamp) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 10; + onChanged(); + return timestampTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Date, + com.google.bigtable.v2.Type.Date.Builder, + com.google.bigtable.v2.Type.DateOrBuilder> + dateTypeBuilder_; + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + * + * @return Whether the dateType field is set. + */ + @java.lang.Override + public boolean hasDateType() { + return kindCase_ == 11; + } + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + * + * @return The dateType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Date getDateType() { + if (dateTypeBuilder_ == null) { + if (kindCase_ == 11) { + return (com.google.bigtable.v2.Type.Date) kind_; + } + return com.google.bigtable.v2.Type.Date.getDefaultInstance(); + } else { + if (kindCase_ == 11) { + return dateTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Date.getDefaultInstance(); + } + } + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + public Builder setDateType(com.google.bigtable.v2.Type.Date value) { + if (dateTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + dateTypeBuilder_.setMessage(value); + } + kindCase_ = 11; + return this; + } + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + public Builder setDateType(com.google.bigtable.v2.Type.Date.Builder builderForValue) { + if (dateTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + dateTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 11; + return this; + } + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + public Builder mergeDateType(com.google.bigtable.v2.Type.Date value) { + if (dateTypeBuilder_ == null) { + if (kindCase_ == 11 && kind_ != com.google.bigtable.v2.Type.Date.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Date.newBuilder((com.google.bigtable.v2.Type.Date) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 11) { + dateTypeBuilder_.mergeFrom(value); + } else { + dateTypeBuilder_.setMessage(value); + } + } + kindCase_ = 11; + return this; + } + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + public Builder clearDateType() { + if (dateTypeBuilder_ == null) { + if (kindCase_ == 11) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 11) { + kindCase_ = 0; + kind_ = null; + } + dateTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + public com.google.bigtable.v2.Type.Date.Builder getDateTypeBuilder() { + return getDateTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.DateOrBuilder getDateTypeOrBuilder() { + if ((kindCase_ == 11) && (dateTypeBuilder_ != null)) { + return dateTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 11) { + return (com.google.bigtable.v2.Type.Date) kind_; + } + return com.google.bigtable.v2.Type.Date.getDefaultInstance(); + } + } + /** + * + * + *
+     * Date
+     * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Date, + com.google.bigtable.v2.Type.Date.Builder, + com.google.bigtable.v2.Type.DateOrBuilder> + getDateTypeFieldBuilder() { + if (dateTypeBuilder_ == null) { + if (!(kindCase_ == 11)) { + kind_ = com.google.bigtable.v2.Type.Date.getDefaultInstance(); + } + dateTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Date, + com.google.bigtable.v2.Type.Date.Builder, + com.google.bigtable.v2.Type.DateOrBuilder>( + (com.google.bigtable.v2.Type.Date) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 11; + onChanged(); + return dateTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate, + com.google.bigtable.v2.Type.Aggregate.Builder, + com.google.bigtable.v2.Type.AggregateOrBuilder> + aggregateTypeBuilder_; + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + * + * @return Whether the aggregateType field is set. + */ + @java.lang.Override + public boolean hasAggregateType() { + return kindCase_ == 6; + } + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + * + * @return The aggregateType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Aggregate getAggregateType() { + if (aggregateTypeBuilder_ == null) { + if (kindCase_ == 6) { + return (com.google.bigtable.v2.Type.Aggregate) kind_; + } + return com.google.bigtable.v2.Type.Aggregate.getDefaultInstance(); + } else { + if (kindCase_ == 6) { + return aggregateTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Aggregate.getDefaultInstance(); + } + } + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + public Builder setAggregateType(com.google.bigtable.v2.Type.Aggregate value) { + if (aggregateTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + aggregateTypeBuilder_.setMessage(value); + } + kindCase_ = 6; + return this; + } + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + public Builder setAggregateType(com.google.bigtable.v2.Type.Aggregate.Builder builderForValue) { + if (aggregateTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + aggregateTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 6; + return this; + } + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + public Builder mergeAggregateType(com.google.bigtable.v2.Type.Aggregate value) { + if (aggregateTypeBuilder_ == null) { + if (kindCase_ == 6 && kind_ != com.google.bigtable.v2.Type.Aggregate.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Aggregate.newBuilder( + (com.google.bigtable.v2.Type.Aggregate) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 6) { + aggregateTypeBuilder_.mergeFrom(value); + } else { + aggregateTypeBuilder_.setMessage(value); + } + } + kindCase_ = 6; + return this; + } + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + public Builder clearAggregateType() { + if (aggregateTypeBuilder_ == null) { + if (kindCase_ == 6) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 6) { + kindCase_ = 0; + kind_ = null; + } + aggregateTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + public com.google.bigtable.v2.Type.Aggregate.Builder getAggregateTypeBuilder() { + return getAggregateTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.AggregateOrBuilder getAggregateTypeOrBuilder() { + if ((kindCase_ == 6) && (aggregateTypeBuilder_ != null)) { + return aggregateTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 6) { + return (com.google.bigtable.v2.Type.Aggregate) kind_; + } + return com.google.bigtable.v2.Type.Aggregate.getDefaultInstance(); + } + } + /** + * + * + *
+     * Aggregate
+     * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate, + com.google.bigtable.v2.Type.Aggregate.Builder, + com.google.bigtable.v2.Type.AggregateOrBuilder> + getAggregateTypeFieldBuilder() { + if (aggregateTypeBuilder_ == null) { + if (!(kindCase_ == 6)) { + kind_ = com.google.bigtable.v2.Type.Aggregate.getDefaultInstance(); + } + aggregateTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Aggregate, + com.google.bigtable.v2.Type.Aggregate.Builder, + com.google.bigtable.v2.Type.AggregateOrBuilder>( + (com.google.bigtable.v2.Type.Aggregate) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 6; + onChanged(); + return aggregateTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Struct, + com.google.bigtable.v2.Type.Struct.Builder, + com.google.bigtable.v2.Type.StructOrBuilder> + structTypeBuilder_; + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + * + * @return Whether the structType field is set. + */ + @java.lang.Override + public boolean hasStructType() { + return kindCase_ == 7; + } + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + * + * @return The structType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Struct getStructType() { + if (structTypeBuilder_ == null) { + if (kindCase_ == 7) { + return (com.google.bigtable.v2.Type.Struct) kind_; + } + return com.google.bigtable.v2.Type.Struct.getDefaultInstance(); + } else { + if (kindCase_ == 7) { + return structTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Struct.getDefaultInstance(); + } + } + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + public Builder setStructType(com.google.bigtable.v2.Type.Struct value) { + if (structTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + structTypeBuilder_.setMessage(value); + } + kindCase_ = 7; + return this; + } + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + public Builder setStructType(com.google.bigtable.v2.Type.Struct.Builder builderForValue) { + if (structTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + structTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 7; + return this; + } + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + public Builder mergeStructType(com.google.bigtable.v2.Type.Struct value) { + if (structTypeBuilder_ == null) { + if (kindCase_ == 7 && kind_ != com.google.bigtable.v2.Type.Struct.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Struct.newBuilder( + (com.google.bigtable.v2.Type.Struct) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 7) { + structTypeBuilder_.mergeFrom(value); + } else { + structTypeBuilder_.setMessage(value); + } + } + kindCase_ = 7; + return this; + } + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + public Builder clearStructType() { + if (structTypeBuilder_ == null) { + if (kindCase_ == 7) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 7) { + kindCase_ = 0; + kind_ = null; + } + structTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + public com.google.bigtable.v2.Type.Struct.Builder getStructTypeBuilder() { + return getStructTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.StructOrBuilder getStructTypeOrBuilder() { + if ((kindCase_ == 7) && (structTypeBuilder_ != null)) { + return structTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 7) { + return (com.google.bigtable.v2.Type.Struct) kind_; + } + return com.google.bigtable.v2.Type.Struct.getDefaultInstance(); + } + } + /** + * + * + *
+     * Struct
+     * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Struct, + com.google.bigtable.v2.Type.Struct.Builder, + com.google.bigtable.v2.Type.StructOrBuilder> + getStructTypeFieldBuilder() { + if (structTypeBuilder_ == null) { + if (!(kindCase_ == 7)) { + kind_ = com.google.bigtable.v2.Type.Struct.getDefaultInstance(); + } + structTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Struct, + com.google.bigtable.v2.Type.Struct.Builder, + com.google.bigtable.v2.Type.StructOrBuilder>( + (com.google.bigtable.v2.Type.Struct) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 7; + onChanged(); + return structTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Array, + com.google.bigtable.v2.Type.Array.Builder, + com.google.bigtable.v2.Type.ArrayOrBuilder> + arrayTypeBuilder_; + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + * + * @return Whether the arrayType field is set. + */ + @java.lang.Override + public boolean hasArrayType() { + return kindCase_ == 3; + } + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + * + * @return The arrayType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Array getArrayType() { + if (arrayTypeBuilder_ == null) { + if (kindCase_ == 3) { + return (com.google.bigtable.v2.Type.Array) kind_; + } + return com.google.bigtable.v2.Type.Array.getDefaultInstance(); + } else { + if (kindCase_ == 3) { + return arrayTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Array.getDefaultInstance(); + } + } + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + public Builder setArrayType(com.google.bigtable.v2.Type.Array value) { + if (arrayTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + arrayTypeBuilder_.setMessage(value); + } + kindCase_ = 3; + return this; + } + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + public Builder setArrayType(com.google.bigtable.v2.Type.Array.Builder builderForValue) { + if (arrayTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + arrayTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 3; + return this; + } + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + public Builder mergeArrayType(com.google.bigtable.v2.Type.Array value) { + if (arrayTypeBuilder_ == null) { + if (kindCase_ == 3 && kind_ != com.google.bigtable.v2.Type.Array.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Array.newBuilder( + (com.google.bigtable.v2.Type.Array) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 3) { + arrayTypeBuilder_.mergeFrom(value); + } else { + arrayTypeBuilder_.setMessage(value); + } + } + kindCase_ = 3; + return this; + } + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + public Builder clearArrayType() { + if (arrayTypeBuilder_ == null) { + if (kindCase_ == 3) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 3) { + kindCase_ = 0; + kind_ = null; + } + arrayTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + public com.google.bigtable.v2.Type.Array.Builder getArrayTypeBuilder() { + return getArrayTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.ArrayOrBuilder getArrayTypeOrBuilder() { + if ((kindCase_ == 3) && (arrayTypeBuilder_ != null)) { + return arrayTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 3) { + return (com.google.bigtable.v2.Type.Array) kind_; + } + return com.google.bigtable.v2.Type.Array.getDefaultInstance(); + } + } + /** + * + * + *
+     * Array
+     * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Array, + com.google.bigtable.v2.Type.Array.Builder, + com.google.bigtable.v2.Type.ArrayOrBuilder> + getArrayTypeFieldBuilder() { + if (arrayTypeBuilder_ == null) { + if (!(kindCase_ == 3)) { + kind_ = com.google.bigtable.v2.Type.Array.getDefaultInstance(); + } + arrayTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Array, + com.google.bigtable.v2.Type.Array.Builder, + com.google.bigtable.v2.Type.ArrayOrBuilder>( + (com.google.bigtable.v2.Type.Array) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 3; + onChanged(); + return arrayTypeBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Map, + com.google.bigtable.v2.Type.Map.Builder, + com.google.bigtable.v2.Type.MapOrBuilder> + mapTypeBuilder_; + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + * + * @return Whether the mapType field is set. + */ + @java.lang.Override + public boolean hasMapType() { + return kindCase_ == 4; + } + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + * + * @return The mapType. + */ + @java.lang.Override + public com.google.bigtable.v2.Type.Map getMapType() { + if (mapTypeBuilder_ == null) { + if (kindCase_ == 4) { + return (com.google.bigtable.v2.Type.Map) kind_; + } + return com.google.bigtable.v2.Type.Map.getDefaultInstance(); + } else { + if (kindCase_ == 4) { + return mapTypeBuilder_.getMessage(); + } + return com.google.bigtable.v2.Type.Map.getDefaultInstance(); + } + } + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + public Builder setMapType(com.google.bigtable.v2.Type.Map value) { + if (mapTypeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + mapTypeBuilder_.setMessage(value); + } + kindCase_ = 4; + return this; + } + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + public Builder setMapType(com.google.bigtable.v2.Type.Map.Builder builderForValue) { + if (mapTypeBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + mapTypeBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 4; + return this; + } + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + public Builder mergeMapType(com.google.bigtable.v2.Type.Map value) { + if (mapTypeBuilder_ == null) { + if (kindCase_ == 4 && kind_ != com.google.bigtable.v2.Type.Map.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.Type.Map.newBuilder((com.google.bigtable.v2.Type.Map) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 4) { + mapTypeBuilder_.mergeFrom(value); + } else { + mapTypeBuilder_.setMessage(value); + } + } + kindCase_ = 4; + return this; + } + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + public Builder clearMapType() { + if (mapTypeBuilder_ == null) { + if (kindCase_ == 4) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 4) { + kindCase_ = 0; + kind_ = null; + } + mapTypeBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + public com.google.bigtable.v2.Type.Map.Builder getMapTypeBuilder() { + return getMapTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + @java.lang.Override + public com.google.bigtable.v2.Type.MapOrBuilder getMapTypeOrBuilder() { + if ((kindCase_ == 4) && (mapTypeBuilder_ != null)) { + return mapTypeBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 4) { + return (com.google.bigtable.v2.Type.Map) kind_; + } + return com.google.bigtable.v2.Type.Map.getDefaultInstance(); + } + } + /** + * + * + *
+     * Map
+     * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Map, + com.google.bigtable.v2.Type.Map.Builder, + com.google.bigtable.v2.Type.MapOrBuilder> + getMapTypeFieldBuilder() { + if (mapTypeBuilder_ == null) { + if (!(kindCase_ == 4)) { + kind_ = com.google.bigtable.v2.Type.Map.getDefaultInstance(); + } + mapTypeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type.Map, + com.google.bigtable.v2.Type.Map.Builder, + com.google.bigtable.v2.Type.MapOrBuilder>( + (com.google.bigtable.v2.Type.Map) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 4; + onChanged(); + return mapTypeBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.Type) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.Type) + private static final com.google.bigtable.v2.Type DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.Type(); + } + + public static com.google.bigtable.v2.Type getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Type parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.bigtable.v2.Type getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/TypeOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/TypeOrBuilder.java new file mode 100644 index 0000000000..38abd879ae --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/TypeOrBuilder.java @@ -0,0 +1,448 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/types.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public interface TypeOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Type) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Bytes
+   * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return Whether the bytesType field is set. + */ + boolean hasBytesType(); + /** + * + * + *
+   * Bytes
+   * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + * + * @return The bytesType. + */ + com.google.bigtable.v2.Type.Bytes getBytesType(); + /** + * + * + *
+   * Bytes
+   * 
+ * + * .google.bigtable.v2.Type.Bytes bytes_type = 1; + */ + com.google.bigtable.v2.Type.BytesOrBuilder getBytesTypeOrBuilder(); + + /** + * + * + *
+   * String
+   * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + * + * @return Whether the stringType field is set. + */ + boolean hasStringType(); + /** + * + * + *
+   * String
+   * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + * + * @return The stringType. + */ + com.google.bigtable.v2.Type.String getStringType(); + /** + * + * + *
+   * String
+   * 
+ * + * .google.bigtable.v2.Type.String string_type = 2; + */ + com.google.bigtable.v2.Type.StringOrBuilder getStringTypeOrBuilder(); + + /** + * + * + *
+   * Int64
+   * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + * + * @return Whether the int64Type field is set. + */ + boolean hasInt64Type(); + /** + * + * + *
+   * Int64
+   * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + * + * @return The int64Type. + */ + com.google.bigtable.v2.Type.Int64 getInt64Type(); + /** + * + * + *
+   * Int64
+   * 
+ * + * .google.bigtable.v2.Type.Int64 int64_type = 5; + */ + com.google.bigtable.v2.Type.Int64OrBuilder getInt64TypeOrBuilder(); + + /** + * + * + *
+   * Float32
+   * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + * + * @return Whether the float32Type field is set. + */ + boolean hasFloat32Type(); + /** + * + * + *
+   * Float32
+   * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + * + * @return The float32Type. + */ + com.google.bigtable.v2.Type.Float32 getFloat32Type(); + /** + * + * + *
+   * Float32
+   * 
+ * + * .google.bigtable.v2.Type.Float32 float32_type = 12; + */ + com.google.bigtable.v2.Type.Float32OrBuilder getFloat32TypeOrBuilder(); + + /** + * + * + *
+   * Float64
+   * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + * + * @return Whether the float64Type field is set. + */ + boolean hasFloat64Type(); + /** + * + * + *
+   * Float64
+   * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + * + * @return The float64Type. + */ + com.google.bigtable.v2.Type.Float64 getFloat64Type(); + /** + * + * + *
+   * Float64
+   * 
+ * + * .google.bigtable.v2.Type.Float64 float64_type = 9; + */ + com.google.bigtable.v2.Type.Float64OrBuilder getFloat64TypeOrBuilder(); + + /** + * + * + *
+   * Bool
+   * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + * + * @return Whether the boolType field is set. + */ + boolean hasBoolType(); + /** + * + * + *
+   * Bool
+   * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + * + * @return The boolType. + */ + com.google.bigtable.v2.Type.Bool getBoolType(); + /** + * + * + *
+   * Bool
+   * 
+ * + * .google.bigtable.v2.Type.Bool bool_type = 8; + */ + com.google.bigtable.v2.Type.BoolOrBuilder getBoolTypeOrBuilder(); + + /** + * + * + *
+   * Timestamp
+   * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + * + * @return Whether the timestampType field is set. + */ + boolean hasTimestampType(); + /** + * + * + *
+   * Timestamp
+   * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + * + * @return The timestampType. + */ + com.google.bigtable.v2.Type.Timestamp getTimestampType(); + /** + * + * + *
+   * Timestamp
+   * 
+ * + * .google.bigtable.v2.Type.Timestamp timestamp_type = 10; + */ + com.google.bigtable.v2.Type.TimestampOrBuilder getTimestampTypeOrBuilder(); + + /** + * + * + *
+   * Date
+   * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + * + * @return Whether the dateType field is set. + */ + boolean hasDateType(); + /** + * + * + *
+   * Date
+   * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + * + * @return The dateType. + */ + com.google.bigtable.v2.Type.Date getDateType(); + /** + * + * + *
+   * Date
+   * 
+ * + * .google.bigtable.v2.Type.Date date_type = 11; + */ + com.google.bigtable.v2.Type.DateOrBuilder getDateTypeOrBuilder(); + + /** + * + * + *
+   * Aggregate
+   * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + * + * @return Whether the aggregateType field is set. + */ + boolean hasAggregateType(); + /** + * + * + *
+   * Aggregate
+   * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + * + * @return The aggregateType. + */ + com.google.bigtable.v2.Type.Aggregate getAggregateType(); + /** + * + * + *
+   * Aggregate
+   * 
+ * + * .google.bigtable.v2.Type.Aggregate aggregate_type = 6; + */ + com.google.bigtable.v2.Type.AggregateOrBuilder getAggregateTypeOrBuilder(); + + /** + * + * + *
+   * Struct
+   * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + * + * @return Whether the structType field is set. + */ + boolean hasStructType(); + /** + * + * + *
+   * Struct
+   * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + * + * @return The structType. + */ + com.google.bigtable.v2.Type.Struct getStructType(); + /** + * + * + *
+   * Struct
+   * 
+ * + * .google.bigtable.v2.Type.Struct struct_type = 7; + */ + com.google.bigtable.v2.Type.StructOrBuilder getStructTypeOrBuilder(); + + /** + * + * + *
+   * Array
+   * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + * + * @return Whether the arrayType field is set. + */ + boolean hasArrayType(); + /** + * + * + *
+   * Array
+   * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + * + * @return The arrayType. + */ + com.google.bigtable.v2.Type.Array getArrayType(); + /** + * + * + *
+   * Array
+   * 
+ * + * .google.bigtable.v2.Type.Array array_type = 3; + */ + com.google.bigtable.v2.Type.ArrayOrBuilder getArrayTypeOrBuilder(); + + /** + * + * + *
+   * Map
+   * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + * + * @return Whether the mapType field is set. + */ + boolean hasMapType(); + /** + * + * + *
+   * Map
+   * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + * + * @return The mapType. + */ + com.google.bigtable.v2.Type.Map getMapType(); + /** + * + * + *
+   * Map
+   * 
+ * + * .google.bigtable.v2.Type.Map map_type = 4; + */ + com.google.bigtable.v2.Type.MapOrBuilder getMapTypeOrBuilder(); + + com.google.bigtable.v2.Type.KindCase getKindCase(); +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/TypesProto.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/TypesProto.java new file mode 100644 index 0000000000..4402aa2ee3 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/TypesProto.java @@ -0,0 +1,388 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/bigtable/v2/types.proto + +// Protobuf Java Version: 3.25.3 +package com.google.bigtable.v2; + +public final class TypesProto { + private TypesProto() {} + + public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {} + + public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry); + } + + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Bytes_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Bytes_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Bytes_Encoding_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Bytes_Encoding_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_String_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_String_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_String_Encoding_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_String_Encoding_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Int64_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Int64_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Int64_Encoding_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Int64_Encoding_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Bool_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Bool_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Float32_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Float32_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Float64_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Float64_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Timestamp_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Timestamp_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Date_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Date_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Struct_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Struct_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Struct_Field_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Struct_Field_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Array_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Array_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Map_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Map_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Aggregate_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Aggregate_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Aggregate_Sum_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Aggregate_Sum_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Aggregate_Max_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Aggregate_Max_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Aggregate_Min_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Aggregate_Min_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + return descriptor; + } + + private static com.google.protobuf.Descriptors.FileDescriptor descriptor; + + static { + java.lang.String[] descriptorData = { + "\n\036google/bigtable/v2/types.proto\022\022google" + + ".bigtable.v2\032\037google/api/field_behavior." + + "proto\"\206\020\n\004Type\0224\n\nbytes_type\030\001 \001(\0132\036.goo" + + "gle.bigtable.v2.Type.BytesH\000\0226\n\013string_t" + + "ype\030\002 \001(\0132\037.google.bigtable.v2.Type.Stri" + + "ngH\000\0224\n\nint64_type\030\005 \001(\0132\036.google.bigtab" + + "le.v2.Type.Int64H\000\0228\n\014float32_type\030\014 \001(\013" + + "2 .google.bigtable.v2.Type.Float32H\000\0228\n\014" + + "float64_type\030\t \001(\0132 .google.bigtable.v2." + + "Type.Float64H\000\0222\n\tbool_type\030\010 \001(\0132\035.goog" + + "le.bigtable.v2.Type.BoolH\000\022<\n\016timestamp_" + + "type\030\n \001(\0132\".google.bigtable.v2.Type.Tim" + + "estampH\000\0222\n\tdate_type\030\013 \001(\0132\035.google.big" + + "table.v2.Type.DateH\000\022<\n\016aggregate_type\030\006" + + " \001(\0132\".google.bigtable.v2.Type.Aggregate" + + "H\000\0226\n\013struct_type\030\007 \001(\0132\037.google.bigtabl" + + "e.v2.Type.StructH\000\0224\n\narray_type\030\003 \001(\0132\036" + + ".google.bigtable.v2.Type.ArrayH\000\0220\n\010map_" + + "type\030\004 \001(\0132\034.google.bigtable.v2.Type.Map" + + "H\000\032\235\001\n\005Bytes\0229\n\010encoding\030\001 \001(\0132\'.google." + + "bigtable.v2.Type.Bytes.Encoding\032Y\n\010Encod" + + "ing\022:\n\003raw\030\001 \001(\0132+.google.bigtable.v2.Ty" + + "pe.Bytes.Encoding.RawH\000\032\005\n\003RawB\n\n\010encodi" + + "ng\032\263\001\n\006String\022:\n\010encoding\030\001 \001(\0132(.google" + + ".bigtable.v2.Type.String.Encoding\032m\n\010Enc" + + "oding\022H\n\nutf8_bytes\030\002 \001(\01322.google.bigta" + + "ble.v2.Type.String.Encoding.Utf8BytesH\000\032" + + "\013\n\tUtf8BytesB\n\n\010encoding\032\365\001\n\005Int64\0229\n\010en" + + "coding\030\001 \001(\0132\'.google.bigtable.v2.Type.I" + + "nt64.Encoding\032\260\001\n\010Encoding\022R\n\020big_endian" + + "_bytes\030\001 \001(\01326.google.bigtable.v2.Type.I" + + "nt64.Encoding.BigEndianBytesH\000\032D\n\016BigEnd" + + "ianBytes\0222\n\nbytes_type\030\001 \001(\0132\036.google.bi" + + "gtable.v2.Type.BytesB\n\n\010encoding\032\006\n\004Bool" + + "\032\t\n\007Float32\032\t\n\007Float64\032\013\n\tTimestamp\032\006\n\004D" + + "ate\032\204\001\n\006Struct\0225\n\006fields\030\001 \003(\0132%.google." + + "bigtable.v2.Type.Struct.Field\032C\n\005Field\022\022" + + "\n\nfield_name\030\001 \001(\t\022&\n\004type\030\002 \001(\0132\030.googl" + + "e.bigtable.v2.Type\0327\n\005Array\022.\n\014element_t" + + "ype\030\001 \001(\0132\030.google.bigtable.v2.Type\032_\n\003M" + + "ap\022*\n\010key_type\030\001 \001(\0132\030.google.bigtable.v" + + "2.Type\022,\n\nvalue_type\030\002 \001(\0132\030.google.bigt" + + "able.v2.Type\032\267\003\n\tAggregate\022,\n\ninput_type" + + "\030\001 \001(\0132\030.google.bigtable.v2.Type\0221\n\nstat" + + "e_type\030\002 \001(\0132\030.google.bigtable.v2.TypeB\003" + + "\340A\003\0225\n\003sum\030\004 \001(\0132&.google.bigtable.v2.Ty" + + "pe.Aggregate.SumH\000\022_\n\022hllpp_unique_count" + + "\030\005 \001(\0132A.google.bigtable.v2.Type.Aggrega" + + "te.HyperLogLogPlusPlusUniqueCountH\000\0225\n\003m" + + "ax\030\006 \001(\0132&.google.bigtable.v2.Type.Aggre" + + "gate.MaxH\000\0225\n\003min\030\007 \001(\0132&.google.bigtabl" + + "e.v2.Type.Aggregate.MinH\000\032\005\n\003Sum\032\005\n\003Max\032" + + "\005\n\003Min\032 \n\036HyperLogLogPlusPlusUniqueCount" + + "B\014\n\naggregatorB\006\n\004kindB\266\001\n\026com.google.bi" + + "gtable.v2B\nTypesProtoP\001Z:google.golang.o" + + "rg/genproto/googleapis/bigtable/v2;bigta" + + "ble\252\002\030Google.Cloud.Bigtable.V2\312\002\030Google\\" + + "Cloud\\Bigtable\\V2\352\002\033Google::Cloud::Bigta" + + "ble::V2b\006proto3" + }; + descriptor = + com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( + descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + com.google.api.FieldBehaviorProto.getDescriptor(), + }); + internal_static_google_bigtable_v2_Type_descriptor = getDescriptor().getMessageTypes().get(0); + internal_static_google_bigtable_v2_Type_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_descriptor, + new java.lang.String[] { + "BytesType", + "StringType", + "Int64Type", + "Float32Type", + "Float64Type", + "BoolType", + "TimestampType", + "DateType", + "AggregateType", + "StructType", + "ArrayType", + "MapType", + "Kind", + }); + internal_static_google_bigtable_v2_Type_Bytes_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_Bytes_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Bytes_descriptor, + new java.lang.String[] { + "Encoding", + }); + internal_static_google_bigtable_v2_Type_Bytes_Encoding_descriptor = + internal_static_google_bigtable_v2_Type_Bytes_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_Bytes_Encoding_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Bytes_Encoding_descriptor, + new java.lang.String[] { + "Raw", "Encoding", + }); + internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_descriptor = + internal_static_google_bigtable_v2_Type_Bytes_Encoding_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Bytes_Encoding_Raw_descriptor, + new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_String_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(1); + internal_static_google_bigtable_v2_Type_String_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_String_descriptor, + new java.lang.String[] { + "Encoding", + }); + internal_static_google_bigtable_v2_Type_String_Encoding_descriptor = + internal_static_google_bigtable_v2_Type_String_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_String_Encoding_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_String_Encoding_descriptor, + new java.lang.String[] { + "Utf8Bytes", "Encoding", + }); + internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_descriptor = + internal_static_google_bigtable_v2_Type_String_Encoding_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_String_Encoding_Utf8Bytes_descriptor, + new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Int64_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(2); + internal_static_google_bigtable_v2_Type_Int64_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Int64_descriptor, + new java.lang.String[] { + "Encoding", + }); + internal_static_google_bigtable_v2_Type_Int64_Encoding_descriptor = + internal_static_google_bigtable_v2_Type_Int64_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_Int64_Encoding_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Int64_Encoding_descriptor, + new java.lang.String[] { + "BigEndianBytes", "Encoding", + }); + internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_descriptor = + internal_static_google_bigtable_v2_Type_Int64_Encoding_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Int64_Encoding_BigEndianBytes_descriptor, + new java.lang.String[] { + "BytesType", + }); + internal_static_google_bigtable_v2_Type_Bool_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(3); + internal_static_google_bigtable_v2_Type_Bool_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Bool_descriptor, new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Float32_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(4); + internal_static_google_bigtable_v2_Type_Float32_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Float32_descriptor, new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Float64_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(5); + internal_static_google_bigtable_v2_Type_Float64_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Float64_descriptor, new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Timestamp_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(6); + internal_static_google_bigtable_v2_Type_Timestamp_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Timestamp_descriptor, + new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Date_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(7); + internal_static_google_bigtable_v2_Type_Date_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Date_descriptor, new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Struct_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(8); + internal_static_google_bigtable_v2_Type_Struct_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Struct_descriptor, + new java.lang.String[] { + "Fields", + }); + internal_static_google_bigtable_v2_Type_Struct_Field_descriptor = + internal_static_google_bigtable_v2_Type_Struct_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_Struct_Field_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Struct_Field_descriptor, + new java.lang.String[] { + "FieldName", "Type", + }); + internal_static_google_bigtable_v2_Type_Array_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(9); + internal_static_google_bigtable_v2_Type_Array_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Array_descriptor, + new java.lang.String[] { + "ElementType", + }); + internal_static_google_bigtable_v2_Type_Map_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(10); + internal_static_google_bigtable_v2_Type_Map_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Map_descriptor, + new java.lang.String[] { + "KeyType", "ValueType", + }); + internal_static_google_bigtable_v2_Type_Aggregate_descriptor = + internal_static_google_bigtable_v2_Type_descriptor.getNestedTypes().get(11); + internal_static_google_bigtable_v2_Type_Aggregate_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Aggregate_descriptor, + new java.lang.String[] { + "InputType", "StateType", "Sum", "HllppUniqueCount", "Max", "Min", "Aggregator", + }); + internal_static_google_bigtable_v2_Type_Aggregate_Sum_descriptor = + internal_static_google_bigtable_v2_Type_Aggregate_descriptor.getNestedTypes().get(0); + internal_static_google_bigtable_v2_Type_Aggregate_Sum_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Aggregate_Sum_descriptor, + new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Aggregate_Max_descriptor = + internal_static_google_bigtable_v2_Type_Aggregate_descriptor.getNestedTypes().get(1); + internal_static_google_bigtable_v2_Type_Aggregate_Max_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Aggregate_Max_descriptor, + new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Aggregate_Min_descriptor = + internal_static_google_bigtable_v2_Type_Aggregate_descriptor.getNestedTypes().get(2); + internal_static_google_bigtable_v2_Type_Aggregate_Min_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Aggregate_Min_descriptor, + new java.lang.String[] {}); + internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_descriptor = + internal_static_google_bigtable_v2_Type_Aggregate_descriptor.getNestedTypes().get(3); + internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_bigtable_v2_Type_Aggregate_HyperLogLogPlusPlusUniqueCount_descriptor, + new java.lang.String[] {}); + com.google.protobuf.ExtensionRegistry registry = + com.google.protobuf.ExtensionRegistry.newInstance(); + registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); + com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor( + descriptor, registry); + com.google.api.FieldBehaviorProto.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/Value.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/Value.java index 5969534c26..7883882ca4 100644 --- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/Value.java +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/Value.java @@ -62,6 +62,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { com.google.bigtable.v2.Value.class, com.google.bigtable.v2.Value.Builder.class); } + private int bitField0_; private int kindCase_ = 0; @SuppressWarnings("serial") @@ -73,7 +74,14 @@ public enum KindCase com.google.protobuf.AbstractMessage.InternalOneOfEnum { RAW_VALUE(8), RAW_TIMESTAMP_MICROS(9), + BYTES_VALUE(2), + STRING_VALUE(3), INT_VALUE(6), + BOOL_VALUE(10), + FLOAT_VALUE(11), + TIMESTAMP_VALUE(12), + DATE_VALUE(13), + ARRAY_VALUE(4), KIND_NOT_SET(0); private final int value; @@ -96,8 +104,22 @@ public static KindCase forNumber(int value) { return RAW_VALUE; case 9: return RAW_TIMESTAMP_MICROS; + case 2: + return BYTES_VALUE; + case 3: + return STRING_VALUE; case 6: return INT_VALUE; + case 10: + return BOOL_VALUE; + case 11: + return FLOAT_VALUE; + case 12: + return TIMESTAMP_VALUE; + case 13: + return DATE_VALUE; + case 4: + return ARRAY_VALUE; case 0: return KIND_NOT_SET; default: @@ -114,6 +136,88 @@ public KindCase getKindCase() { return KindCase.forNumber(kindCase_); } + public static final int TYPE_FIELD_NUMBER = 7; + private com.google.bigtable.v2.Type type_; + /** + * + * + *
+   * The verified `Type` of this `Value`, if it cannot be inferred.
+   *
+   * Read results will never specify the encoding for `type` since the value
+   * will already have been decoded by the server. Furthermore, the `type` will
+   * be omitted entirely if it can be inferred from a previous response. The
+   * exact semantics for inferring `type` will vary, and are therefore
+   * documented separately for each read method.
+   *
+   * When using composite types (Struct, Array, Map) only the outermost `Value`
+   * will specify the `type`. This top-level `type` will define the types for
+   * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+   * If a nested `Value` provides a `type` on write, the request will be
+   * rejected with INVALID_ARGUMENT.
+   * 
+ * + * .google.bigtable.v2.Type type = 7; + * + * @return Whether the type field is set. + */ + @java.lang.Override + public boolean hasType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+   * The verified `Type` of this `Value`, if it cannot be inferred.
+   *
+   * Read results will never specify the encoding for `type` since the value
+   * will already have been decoded by the server. Furthermore, the `type` will
+   * be omitted entirely if it can be inferred from a previous response. The
+   * exact semantics for inferring `type` will vary, and are therefore
+   * documented separately for each read method.
+   *
+   * When using composite types (Struct, Array, Map) only the outermost `Value`
+   * will specify the `type`. This top-level `type` will define the types for
+   * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+   * If a nested `Value` provides a `type` on write, the request will be
+   * rejected with INVALID_ARGUMENT.
+   * 
+ * + * .google.bigtable.v2.Type type = 7; + * + * @return The type. + */ + @java.lang.Override + public com.google.bigtable.v2.Type getType() { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + /** + * + * + *
+   * The verified `Type` of this `Value`, if it cannot be inferred.
+   *
+   * Read results will never specify the encoding for `type` since the value
+   * will already have been decoded by the server. Furthermore, the `type` will
+   * be omitted entirely if it can be inferred from a previous response. The
+   * exact semantics for inferring `type` will vary, and are therefore
+   * documented separately for each read method.
+   *
+   * When using composite types (Struct, Array, Map) only the outermost `Value`
+   * will specify the `type`. This top-level `type` will define the types for
+   * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+   * If a nested `Value` provides a `type` on write, the request will be
+   * rejected with INVALID_ARGUMENT.
+   * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + @java.lang.Override + public com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder() { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + public static final int RAW_VALUE_FIELD_NUMBER = 8; /** * @@ -188,13 +292,117 @@ public long getRawTimestampMicros() { return 0L; } + public static final int BYTES_VALUE_FIELD_NUMBER = 2; + /** + * + * + *
+   * Represents a typed value transported as a byte sequence.
+   * 
+ * + * bytes bytes_value = 2; + * + * @return Whether the bytesValue field is set. + */ + @java.lang.Override + public boolean hasBytesValue() { + return kindCase_ == 2; + } + /** + * + * + *
+   * Represents a typed value transported as a byte sequence.
+   * 
+ * + * bytes bytes_value = 2; + * + * @return The bytesValue. + */ + @java.lang.Override + public com.google.protobuf.ByteString getBytesValue() { + if (kindCase_ == 2) { + return (com.google.protobuf.ByteString) kind_; + } + return com.google.protobuf.ByteString.EMPTY; + } + + public static final int STRING_VALUE_FIELD_NUMBER = 3; + /** + * + * + *
+   * Represents a typed value transported as a string.
+   * 
+ * + * string string_value = 3; + * + * @return Whether the stringValue field is set. + */ + public boolean hasStringValue() { + return kindCase_ == 3; + } + /** + * + * + *
+   * Represents a typed value transported as a string.
+   * 
+ * + * string string_value = 3; + * + * @return The stringValue. + */ + public java.lang.String getStringValue() { + java.lang.Object ref = ""; + if (kindCase_ == 3) { + ref = kind_; + } + 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(); + if (kindCase_ == 3) { + kind_ = s; + } + return s; + } + } + /** + * + * + *
+   * Represents a typed value transported as a string.
+   * 
+ * + * string string_value = 3; + * + * @return The bytes for stringValue. + */ + public com.google.protobuf.ByteString getStringValueBytes() { + java.lang.Object ref = ""; + if (kindCase_ == 3) { + ref = kind_; + } + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + if (kindCase_ == 3) { + kind_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + public static final int INT_VALUE_FIELD_NUMBER = 6; /** * * *
    * Represents a typed value transported as an integer.
-   * Default type for writes: `Int64`
    * 
* * int64 int_value = 6; @@ -210,7 +418,6 @@ public boolean hasIntValue() { * *
    * Represents a typed value transported as an integer.
-   * Default type for writes: `Int64`
    * 
* * int64 int_value = 6; @@ -225,6 +432,241 @@ public long getIntValue() { return 0L; } + public static final int BOOL_VALUE_FIELD_NUMBER = 10; + /** + * + * + *
+   * Represents a typed value transported as a boolean.
+   * 
+ * + * bool bool_value = 10; + * + * @return Whether the boolValue field is set. + */ + @java.lang.Override + public boolean hasBoolValue() { + return kindCase_ == 10; + } + /** + * + * + *
+   * Represents a typed value transported as a boolean.
+   * 
+ * + * bool bool_value = 10; + * + * @return The boolValue. + */ + @java.lang.Override + public boolean getBoolValue() { + if (kindCase_ == 10) { + return (java.lang.Boolean) kind_; + } + return false; + } + + public static final int FLOAT_VALUE_FIELD_NUMBER = 11; + /** + * + * + *
+   * Represents a typed value transported as a floating point number.
+   * 
+ * + * double float_value = 11; + * + * @return Whether the floatValue field is set. + */ + @java.lang.Override + public boolean hasFloatValue() { + return kindCase_ == 11; + } + /** + * + * + *
+   * Represents a typed value transported as a floating point number.
+   * 
+ * + * double float_value = 11; + * + * @return The floatValue. + */ + @java.lang.Override + public double getFloatValue() { + if (kindCase_ == 11) { + return (java.lang.Double) kind_; + } + return 0D; + } + + public static final int TIMESTAMP_VALUE_FIELD_NUMBER = 12; + /** + * + * + *
+   * Represents a typed value transported as a timestamp.
+   * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + * + * @return Whether the timestampValue field is set. + */ + @java.lang.Override + public boolean hasTimestampValue() { + return kindCase_ == 12; + } + /** + * + * + *
+   * Represents a typed value transported as a timestamp.
+   * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + * + * @return The timestampValue. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getTimestampValue() { + if (kindCase_ == 12) { + return (com.google.protobuf.Timestamp) kind_; + } + return com.google.protobuf.Timestamp.getDefaultInstance(); + } + /** + * + * + *
+   * Represents a typed value transported as a timestamp.
+   * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getTimestampValueOrBuilder() { + if (kindCase_ == 12) { + return (com.google.protobuf.Timestamp) kind_; + } + return com.google.protobuf.Timestamp.getDefaultInstance(); + } + + public static final int DATE_VALUE_FIELD_NUMBER = 13; + /** + * + * + *
+   * Represents a typed value transported as a date.
+   * 
+ * + * .google.type.Date date_value = 13; + * + * @return Whether the dateValue field is set. + */ + @java.lang.Override + public boolean hasDateValue() { + return kindCase_ == 13; + } + /** + * + * + *
+   * Represents a typed value transported as a date.
+   * 
+ * + * .google.type.Date date_value = 13; + * + * @return The dateValue. + */ + @java.lang.Override + public com.google.type.Date getDateValue() { + if (kindCase_ == 13) { + return (com.google.type.Date) kind_; + } + return com.google.type.Date.getDefaultInstance(); + } + /** + * + * + *
+   * Represents a typed value transported as a date.
+   * 
+ * + * .google.type.Date date_value = 13; + */ + @java.lang.Override + public com.google.type.DateOrBuilder getDateValueOrBuilder() { + if (kindCase_ == 13) { + return (com.google.type.Date) kind_; + } + return com.google.type.Date.getDefaultInstance(); + } + + public static final int ARRAY_VALUE_FIELD_NUMBER = 4; + /** + * + * + *
+   * Represents a typed value transported as a sequence of values.
+   * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+   * `Value` must provide an explicit `type` on write. This `type` will
+   * apply recursively to the nested `Struct` fields, `Array` elements,
+   * or `Map` key/value pairs, which *must not* supply their own `type`.
+   * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + * + * @return Whether the arrayValue field is set. + */ + @java.lang.Override + public boolean hasArrayValue() { + return kindCase_ == 4; + } + /** + * + * + *
+   * Represents a typed value transported as a sequence of values.
+   * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+   * `Value` must provide an explicit `type` on write. This `type` will
+   * apply recursively to the nested `Struct` fields, `Array` elements,
+   * or `Map` key/value pairs, which *must not* supply their own `type`.
+   * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + * + * @return The arrayValue. + */ + @java.lang.Override + public com.google.bigtable.v2.ArrayValue getArrayValue() { + if (kindCase_ == 4) { + return (com.google.bigtable.v2.ArrayValue) kind_; + } + return com.google.bigtable.v2.ArrayValue.getDefaultInstance(); + } + /** + * + * + *
+   * Represents a typed value transported as a sequence of values.
+   * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+   * `Value` must provide an explicit `type` on write. This `type` will
+   * apply recursively to the nested `Struct` fields, `Array` elements,
+   * or `Map` key/value pairs, which *must not* supply their own `type`.
+   * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + @java.lang.Override + public com.google.bigtable.v2.ArrayValueOrBuilder getArrayValueOrBuilder() { + if (kindCase_ == 4) { + return (com.google.bigtable.v2.ArrayValue) kind_; + } + return com.google.bigtable.v2.ArrayValue.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -239,15 +681,39 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (kindCase_ == 2) { + output.writeBytes(2, (com.google.protobuf.ByteString) kind_); + } + if (kindCase_ == 3) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, kind_); + } + if (kindCase_ == 4) { + output.writeMessage(4, (com.google.bigtable.v2.ArrayValue) kind_); + } if (kindCase_ == 6) { output.writeInt64(6, (long) ((java.lang.Long) kind_)); } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(7, getType()); + } if (kindCase_ == 8) { output.writeBytes(8, (com.google.protobuf.ByteString) kind_); } if (kindCase_ == 9) { output.writeInt64(9, (long) ((java.lang.Long) kind_)); } + if (kindCase_ == 10) { + output.writeBool(10, (boolean) ((java.lang.Boolean) kind_)); + } + if (kindCase_ == 11) { + output.writeDouble(11, (double) ((java.lang.Double) kind_)); + } + if (kindCase_ == 12) { + output.writeMessage(12, (com.google.protobuf.Timestamp) kind_); + } + if (kindCase_ == 13) { + output.writeMessage(13, (com.google.type.Date) kind_); + } getUnknownFields().writeTo(output); } @@ -257,11 +723,27 @@ public int getSerializedSize() { if (size != -1) return size; size = 0; + if (kindCase_ == 2) { + size += + com.google.protobuf.CodedOutputStream.computeBytesSize( + 2, (com.google.protobuf.ByteString) kind_); + } + if (kindCase_ == 3) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, kind_); + } + if (kindCase_ == 4) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 4, (com.google.bigtable.v2.ArrayValue) kind_); + } if (kindCase_ == 6) { size += com.google.protobuf.CodedOutputStream.computeInt64Size( 6, (long) ((java.lang.Long) kind_)); } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getType()); + } if (kindCase_ == 8) { size += com.google.protobuf.CodedOutputStream.computeBytesSize( @@ -272,13 +754,33 @@ public int getSerializedSize() { com.google.protobuf.CodedOutputStream.computeInt64Size( 9, (long) ((java.lang.Long) kind_)); } - size += getUnknownFields().getSerializedSize(); - memoizedSize = size; - return size; - } - - @java.lang.Override - public boolean equals(final java.lang.Object obj) { + if (kindCase_ == 10) { + size += + com.google.protobuf.CodedOutputStream.computeBoolSize( + 10, (boolean) ((java.lang.Boolean) kind_)); + } + if (kindCase_ == 11) { + size += + com.google.protobuf.CodedOutputStream.computeDoubleSize( + 11, (double) ((java.lang.Double) kind_)); + } + if (kindCase_ == 12) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 12, (com.google.protobuf.Timestamp) kind_); + } + if (kindCase_ == 13) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 13, (com.google.type.Date) kind_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } @@ -287,6 +789,10 @@ public boolean equals(final java.lang.Object obj) { } com.google.bigtable.v2.Value other = (com.google.bigtable.v2.Value) obj; + if (hasType() != other.hasType()) return false; + if (hasType()) { + if (!getType().equals(other.getType())) return false; + } if (!getKindCase().equals(other.getKindCase())) return false; switch (kindCase_) { case 8: @@ -295,9 +801,31 @@ public boolean equals(final java.lang.Object obj) { case 9: if (getRawTimestampMicros() != other.getRawTimestampMicros()) return false; break; + case 2: + if (!getBytesValue().equals(other.getBytesValue())) return false; + break; + case 3: + if (!getStringValue().equals(other.getStringValue())) return false; + break; case 6: if (getIntValue() != other.getIntValue()) return false; break; + case 10: + if (getBoolValue() != other.getBoolValue()) return false; + break; + case 11: + if (java.lang.Double.doubleToLongBits(getFloatValue()) + != java.lang.Double.doubleToLongBits(other.getFloatValue())) return false; + break; + case 12: + if (!getTimestampValue().equals(other.getTimestampValue())) return false; + break; + case 13: + if (!getDateValue().equals(other.getDateValue())) return false; + break; + case 4: + if (!getArrayValue().equals(other.getArrayValue())) return false; + break; case 0: default: } @@ -312,6 +840,10 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); + if (hasType()) { + hash = (37 * hash) + TYPE_FIELD_NUMBER; + hash = (53 * hash) + getType().hashCode(); + } switch (kindCase_) { case 8: hash = (37 * hash) + RAW_VALUE_FIELD_NUMBER; @@ -321,10 +853,41 @@ public int hashCode() { hash = (37 * hash) + RAW_TIMESTAMP_MICROS_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getRawTimestampMicros()); break; + case 2: + hash = (37 * hash) + BYTES_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getBytesValue().hashCode(); + break; + case 3: + hash = (37 * hash) + STRING_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getStringValue().hashCode(); + break; case 6: hash = (37 * hash) + INT_VALUE_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getIntValue()); break; + case 10: + hash = (37 * hash) + BOOL_VALUE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getBoolValue()); + break; + case 11: + hash = (37 * hash) + FLOAT_VALUE_FIELD_NUMBER; + hash = + (53 * hash) + + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getFloatValue())); + break; + case 12: + hash = (37 * hash) + TIMESTAMP_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getTimestampValue().hashCode(); + break; + case 13: + hash = (37 * hash) + DATE_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getDateValue().hashCode(); + break; + case 4: + hash = (37 * hash) + ARRAY_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getArrayValue().hashCode(); + break; case 0: default: } @@ -457,16 +1020,39 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { } // Construct using com.google.bigtable.v2.Value.newBuilder() - private Builder() {} + private Builder() { + maybeForceBuilderInitialization(); + } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getTypeFieldBuilder(); + } } @java.lang.Override public Builder clear() { super.clear(); bitField0_ = 0; + type_ = null; + if (typeBuilder_ != null) { + typeBuilder_.dispose(); + typeBuilder_ = null; + } + if (timestampValueBuilder_ != null) { + timestampValueBuilder_.clear(); + } + if (dateValueBuilder_ != null) { + dateValueBuilder_.clear(); + } + if (arrayValueBuilder_ != null) { + arrayValueBuilder_.clear(); + } kindCase_ = 0; kind_ = null; return this; @@ -504,11 +1090,26 @@ public com.google.bigtable.v2.Value buildPartial() { private void buildPartial0(com.google.bigtable.v2.Value result) { int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.type_ = typeBuilder_ == null ? type_ : typeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; } private void buildPartialOneofs(com.google.bigtable.v2.Value result) { result.kindCase_ = kindCase_; result.kind_ = this.kind_; + if (kindCase_ == 12 && timestampValueBuilder_ != null) { + result.kind_ = timestampValueBuilder_.build(); + } + if (kindCase_ == 13 && dateValueBuilder_ != null) { + result.kind_ = dateValueBuilder_.build(); + } + if (kindCase_ == 4 && arrayValueBuilder_ != null) { + result.kind_ = arrayValueBuilder_.build(); + } } @java.lang.Override @@ -556,6 +1157,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { public Builder mergeFrom(com.google.bigtable.v2.Value other) { if (other == com.google.bigtable.v2.Value.getDefaultInstance()) return this; + if (other.hasType()) { + mergeType(other.getType()); + } switch (other.getKindCase()) { case RAW_VALUE: { @@ -567,11 +1171,48 @@ public Builder mergeFrom(com.google.bigtable.v2.Value other) { setRawTimestampMicros(other.getRawTimestampMicros()); break; } + case BYTES_VALUE: + { + setBytesValue(other.getBytesValue()); + break; + } + case STRING_VALUE: + { + kindCase_ = 3; + kind_ = other.kind_; + onChanged(); + break; + } case INT_VALUE: { setIntValue(other.getIntValue()); break; } + case BOOL_VALUE: + { + setBoolValue(other.getBoolValue()); + break; + } + case FLOAT_VALUE: + { + setFloatValue(other.getFloatValue()); + break; + } + case TIMESTAMP_VALUE: + { + mergeTimestampValue(other.getTimestampValue()); + break; + } + case DATE_VALUE: + { + mergeDateValue(other.getDateValue()); + break; + } + case ARRAY_VALUE: + { + mergeArrayValue(other.getArrayValue()); + break; + } case KIND_NOT_SET: { break; @@ -603,12 +1244,37 @@ public Builder mergeFrom( case 0: done = true; break; + case 18: + { + kind_ = input.readBytes(); + kindCase_ = 2; + break; + } // case 18 + case 26: + { + java.lang.String s = input.readStringRequireUtf8(); + kindCase_ = 3; + kind_ = s; + break; + } // case 26 + case 34: + { + input.readMessage(getArrayValueFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 4; + break; + } // case 34 case 48: { kind_ = input.readInt64(); kindCase_ = 6; break; } // case 48 + case 58: + { + input.readMessage(getTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 58 case 66: { kind_ = input.readBytes(); @@ -621,6 +1287,30 @@ public Builder mergeFrom( kindCase_ = 9; break; } // case 72 + case 80: + { + kind_ = input.readBool(); + kindCase_ = 10; + break; + } // case 80 + case 89: + { + kind_ = input.readDouble(); + kindCase_ = 11; + break; + } // case 89 + case 98: + { + input.readMessage(getTimestampValueFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 12; + break; + } // case 98 + case 106: + { + input.readMessage(getDateValueFieldBuilder().getBuilder(), extensionRegistry); + kindCase_ = 13; + break; + } // case 106 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -654,6 +1344,294 @@ public Builder clearKind() { private int bitField0_; + private com.google.bigtable.v2.Type type_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + typeBuilder_; + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + * + * @return Whether the type field is set. + */ + public boolean hasType() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + * + * @return The type. + */ + public com.google.bigtable.v2.Type getType() { + if (typeBuilder_ == null) { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } else { + return typeBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + public Builder setType(com.google.bigtable.v2.Type value) { + if (typeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + type_ = value; + } else { + typeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + public Builder setType(com.google.bigtable.v2.Type.Builder builderForValue) { + if (typeBuilder_ == null) { + type_ = builderForValue.build(); + } else { + typeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + public Builder mergeType(com.google.bigtable.v2.Type value) { + if (typeBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && type_ != null + && type_ != com.google.bigtable.v2.Type.getDefaultInstance()) { + getTypeBuilder().mergeFrom(value); + } else { + type_ = value; + } + } else { + typeBuilder_.mergeFrom(value); + } + if (type_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + public Builder clearType() { + bitField0_ = (bitField0_ & ~0x00000001); + type_ = null; + if (typeBuilder_ != null) { + typeBuilder_.dispose(); + typeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + public com.google.bigtable.v2.Type.Builder getTypeBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getTypeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + public com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder() { + if (typeBuilder_ != null) { + return typeBuilder_.getMessageOrBuilder(); + } else { + return type_ == null ? com.google.bigtable.v2.Type.getDefaultInstance() : type_; + } + } + /** + * + * + *
+     * The verified `Type` of this `Value`, if it cannot be inferred.
+     *
+     * Read results will never specify the encoding for `type` since the value
+     * will already have been decoded by the server. Furthermore, the `type` will
+     * be omitted entirely if it can be inferred from a previous response. The
+     * exact semantics for inferring `type` will vary, and are therefore
+     * documented separately for each read method.
+     *
+     * When using composite types (Struct, Array, Map) only the outermost `Value`
+     * will specify the `type`. This top-level `type` will define the types for
+     * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+     * If a nested `Value` provides a `type` on write, the request will be
+     * rejected with INVALID_ARGUMENT.
+     * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder> + getTypeFieldBuilder() { + if (typeBuilder_ == null) { + typeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.Type, + com.google.bigtable.v2.Type.Builder, + com.google.bigtable.v2.TypeOrBuilder>(getType(), getParentForChildren(), isClean()); + type_ = null; + } + return typeBuilder_; + } + /** * * @@ -808,51 +1786,50 @@ public Builder clearRawTimestampMicros() { * * *
-     * Represents a typed value transported as an integer.
-     * Default type for writes: `Int64`
+     * Represents a typed value transported as a byte sequence.
      * 
* - * int64 int_value = 6; + * bytes bytes_value = 2; * - * @return Whether the intValue field is set. + * @return Whether the bytesValue field is set. */ - public boolean hasIntValue() { - return kindCase_ == 6; + public boolean hasBytesValue() { + return kindCase_ == 2; } /** * * *
-     * Represents a typed value transported as an integer.
-     * Default type for writes: `Int64`
+     * Represents a typed value transported as a byte sequence.
      * 
* - * int64 int_value = 6; + * bytes bytes_value = 2; * - * @return The intValue. + * @return The bytesValue. */ - public long getIntValue() { - if (kindCase_ == 6) { - return (java.lang.Long) kind_; + public com.google.protobuf.ByteString getBytesValue() { + if (kindCase_ == 2) { + return (com.google.protobuf.ByteString) kind_; } - return 0L; + return com.google.protobuf.ByteString.EMPTY; } /** * * *
-     * Represents a typed value transported as an integer.
-     * Default type for writes: `Int64`
+     * Represents a typed value transported as a byte sequence.
      * 
* - * int64 int_value = 6; + * bytes bytes_value = 2; * - * @param value The intValue to set. + * @param value The bytesValue to set. * @return This builder for chaining. */ - public Builder setIntValue(long value) { - - kindCase_ = 6; + public Builder setBytesValue(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + kindCase_ = 2; kind_ = value; onChanged(); return this; @@ -861,16 +1838,15 @@ public Builder setIntValue(long value) { * * *
-     * Represents a typed value transported as an integer.
-     * Default type for writes: `Int64`
+     * Represents a typed value transported as a byte sequence.
      * 
* - * int64 int_value = 6; + * bytes bytes_value = 2; * * @return This builder for chaining. */ - public Builder clearIntValue() { - if (kindCase_ == 6) { + public Builder clearBytesValue() { + if (kindCase_ == 2) { kindCase_ = 0; kind_ = null; onChanged(); @@ -878,6 +1854,993 @@ public Builder clearIntValue() { return this; } + /** + * + * + *
+     * Represents a typed value transported as a string.
+     * 
+ * + * string string_value = 3; + * + * @return Whether the stringValue field is set. + */ + @java.lang.Override + public boolean hasStringValue() { + return kindCase_ == 3; + } + /** + * + * + *
+     * Represents a typed value transported as a string.
+     * 
+ * + * string string_value = 3; + * + * @return The stringValue. + */ + @java.lang.Override + public java.lang.String getStringValue() { + java.lang.Object ref = ""; + if (kindCase_ == 3) { + ref = kind_; + } + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (kindCase_ == 3) { + kind_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Represents a typed value transported as a string.
+     * 
+ * + * string string_value = 3; + * + * @return The bytes for stringValue. + */ + @java.lang.Override + public com.google.protobuf.ByteString getStringValueBytes() { + java.lang.Object ref = ""; + if (kindCase_ == 3) { + ref = kind_; + } + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + if (kindCase_ == 3) { + kind_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Represents a typed value transported as a string.
+     * 
+ * + * string string_value = 3; + * + * @param value The stringValue to set. + * @return This builder for chaining. + */ + public Builder setStringValue(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + kindCase_ = 3; + kind_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a string.
+     * 
+ * + * string string_value = 3; + * + * @return This builder for chaining. + */ + public Builder clearStringValue() { + if (kindCase_ == 3) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a string.
+     * 
+ * + * string string_value = 3; + * + * @param value The bytes for stringValue to set. + * @return This builder for chaining. + */ + public Builder setStringValueBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + kindCase_ = 3; + kind_ = value; + onChanged(); + return this; + } + + /** + * + * + *
+     * Represents a typed value transported as an integer.
+     * 
+ * + * int64 int_value = 6; + * + * @return Whether the intValue field is set. + */ + public boolean hasIntValue() { + return kindCase_ == 6; + } + /** + * + * + *
+     * Represents a typed value transported as an integer.
+     * 
+ * + * int64 int_value = 6; + * + * @return The intValue. + */ + public long getIntValue() { + if (kindCase_ == 6) { + return (java.lang.Long) kind_; + } + return 0L; + } + /** + * + * + *
+     * Represents a typed value transported as an integer.
+     * 
+ * + * int64 int_value = 6; + * + * @param value The intValue to set. + * @return This builder for chaining. + */ + public Builder setIntValue(long value) { + + kindCase_ = 6; + kind_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Represents a typed value transported as an integer.
+     * 
+ * + * int64 int_value = 6; + * + * @return This builder for chaining. + */ + public Builder clearIntValue() { + if (kindCase_ == 6) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + return this; + } + + /** + * + * + *
+     * Represents a typed value transported as a boolean.
+     * 
+ * + * bool bool_value = 10; + * + * @return Whether the boolValue field is set. + */ + public boolean hasBoolValue() { + return kindCase_ == 10; + } + /** + * + * + *
+     * Represents a typed value transported as a boolean.
+     * 
+ * + * bool bool_value = 10; + * + * @return The boolValue. + */ + public boolean getBoolValue() { + if (kindCase_ == 10) { + return (java.lang.Boolean) kind_; + } + return false; + } + /** + * + * + *
+     * Represents a typed value transported as a boolean.
+     * 
+ * + * bool bool_value = 10; + * + * @param value The boolValue to set. + * @return This builder for chaining. + */ + public Builder setBoolValue(boolean value) { + + kindCase_ = 10; + kind_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a boolean.
+     * 
+ * + * bool bool_value = 10; + * + * @return This builder for chaining. + */ + public Builder clearBoolValue() { + if (kindCase_ == 10) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + return this; + } + + /** + * + * + *
+     * Represents a typed value transported as a floating point number.
+     * 
+ * + * double float_value = 11; + * + * @return Whether the floatValue field is set. + */ + public boolean hasFloatValue() { + return kindCase_ == 11; + } + /** + * + * + *
+     * Represents a typed value transported as a floating point number.
+     * 
+ * + * double float_value = 11; + * + * @return The floatValue. + */ + public double getFloatValue() { + if (kindCase_ == 11) { + return (java.lang.Double) kind_; + } + return 0D; + } + /** + * + * + *
+     * Represents a typed value transported as a floating point number.
+     * 
+ * + * double float_value = 11; + * + * @param value The floatValue to set. + * @return This builder for chaining. + */ + public Builder setFloatValue(double value) { + + kindCase_ = 11; + kind_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a floating point number.
+     * 
+ * + * double float_value = 11; + * + * @return This builder for chaining. + */ + public Builder clearFloatValue() { + if (kindCase_ == 11) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + return this; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + timestampValueBuilder_; + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + * + * @return Whether the timestampValue field is set. + */ + @java.lang.Override + public boolean hasTimestampValue() { + return kindCase_ == 12; + } + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + * + * @return The timestampValue. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getTimestampValue() { + if (timestampValueBuilder_ == null) { + if (kindCase_ == 12) { + return (com.google.protobuf.Timestamp) kind_; + } + return com.google.protobuf.Timestamp.getDefaultInstance(); + } else { + if (kindCase_ == 12) { + return timestampValueBuilder_.getMessage(); + } + return com.google.protobuf.Timestamp.getDefaultInstance(); + } + } + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + public Builder setTimestampValue(com.google.protobuf.Timestamp value) { + if (timestampValueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + timestampValueBuilder_.setMessage(value); + } + kindCase_ = 12; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + public Builder setTimestampValue(com.google.protobuf.Timestamp.Builder builderForValue) { + if (timestampValueBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + timestampValueBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 12; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + public Builder mergeTimestampValue(com.google.protobuf.Timestamp value) { + if (timestampValueBuilder_ == null) { + if (kindCase_ == 12 && kind_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + kind_ = + com.google.protobuf.Timestamp.newBuilder((com.google.protobuf.Timestamp) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 12) { + timestampValueBuilder_.mergeFrom(value); + } else { + timestampValueBuilder_.setMessage(value); + } + } + kindCase_ = 12; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + public Builder clearTimestampValue() { + if (timestampValueBuilder_ == null) { + if (kindCase_ == 12) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 12) { + kindCase_ = 0; + kind_ = null; + } + timestampValueBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + public com.google.protobuf.Timestamp.Builder getTimestampValueBuilder() { + return getTimestampValueFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getTimestampValueOrBuilder() { + if ((kindCase_ == 12) && (timestampValueBuilder_ != null)) { + return timestampValueBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 12) { + return (com.google.protobuf.Timestamp) kind_; + } + return com.google.protobuf.Timestamp.getDefaultInstance(); + } + } + /** + * + * + *
+     * Represents a typed value transported as a timestamp.
+     * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getTimestampValueFieldBuilder() { + if (timestampValueBuilder_ == null) { + if (!(kindCase_ == 12)) { + kind_ = com.google.protobuf.Timestamp.getDefaultInstance(); + } + timestampValueBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + (com.google.protobuf.Timestamp) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 12; + onChanged(); + return timestampValueBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + dateValueBuilder_; + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + * + * @return Whether the dateValue field is set. + */ + @java.lang.Override + public boolean hasDateValue() { + return kindCase_ == 13; + } + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + * + * @return The dateValue. + */ + @java.lang.Override + public com.google.type.Date getDateValue() { + if (dateValueBuilder_ == null) { + if (kindCase_ == 13) { + return (com.google.type.Date) kind_; + } + return com.google.type.Date.getDefaultInstance(); + } else { + if (kindCase_ == 13) { + return dateValueBuilder_.getMessage(); + } + return com.google.type.Date.getDefaultInstance(); + } + } + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + */ + public Builder setDateValue(com.google.type.Date value) { + if (dateValueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + dateValueBuilder_.setMessage(value); + } + kindCase_ = 13; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + */ + public Builder setDateValue(com.google.type.Date.Builder builderForValue) { + if (dateValueBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + dateValueBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 13; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + */ + public Builder mergeDateValue(com.google.type.Date value) { + if (dateValueBuilder_ == null) { + if (kindCase_ == 13 && kind_ != com.google.type.Date.getDefaultInstance()) { + kind_ = + com.google.type.Date.newBuilder((com.google.type.Date) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 13) { + dateValueBuilder_.mergeFrom(value); + } else { + dateValueBuilder_.setMessage(value); + } + } + kindCase_ = 13; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + */ + public Builder clearDateValue() { + if (dateValueBuilder_ == null) { + if (kindCase_ == 13) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 13) { + kindCase_ = 0; + kind_ = null; + } + dateValueBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + */ + public com.google.type.Date.Builder getDateValueBuilder() { + return getDateValueFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + */ + @java.lang.Override + public com.google.type.DateOrBuilder getDateValueOrBuilder() { + if ((kindCase_ == 13) && (dateValueBuilder_ != null)) { + return dateValueBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 13) { + return (com.google.type.Date) kind_; + } + return com.google.type.Date.getDefaultInstance(); + } + } + /** + * + * + *
+     * Represents a typed value transported as a date.
+     * 
+ * + * .google.type.Date date_value = 13; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder> + getDateValueFieldBuilder() { + if (dateValueBuilder_ == null) { + if (!(kindCase_ == 13)) { + kind_ = com.google.type.Date.getDefaultInstance(); + } + dateValueBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.type.Date, com.google.type.Date.Builder, com.google.type.DateOrBuilder>( + (com.google.type.Date) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 13; + onChanged(); + return dateValueBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ArrayValue, + com.google.bigtable.v2.ArrayValue.Builder, + com.google.bigtable.v2.ArrayValueOrBuilder> + arrayValueBuilder_; + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + * + * @return Whether the arrayValue field is set. + */ + @java.lang.Override + public boolean hasArrayValue() { + return kindCase_ == 4; + } + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + * + * @return The arrayValue. + */ + @java.lang.Override + public com.google.bigtable.v2.ArrayValue getArrayValue() { + if (arrayValueBuilder_ == null) { + if (kindCase_ == 4) { + return (com.google.bigtable.v2.ArrayValue) kind_; + } + return com.google.bigtable.v2.ArrayValue.getDefaultInstance(); + } else { + if (kindCase_ == 4) { + return arrayValueBuilder_.getMessage(); + } + return com.google.bigtable.v2.ArrayValue.getDefaultInstance(); + } + } + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + public Builder setArrayValue(com.google.bigtable.v2.ArrayValue value) { + if (arrayValueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + arrayValueBuilder_.setMessage(value); + } + kindCase_ = 4; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + public Builder setArrayValue(com.google.bigtable.v2.ArrayValue.Builder builderForValue) { + if (arrayValueBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + arrayValueBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 4; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + public Builder mergeArrayValue(com.google.bigtable.v2.ArrayValue value) { + if (arrayValueBuilder_ == null) { + if (kindCase_ == 4 && kind_ != com.google.bigtable.v2.ArrayValue.getDefaultInstance()) { + kind_ = + com.google.bigtable.v2.ArrayValue.newBuilder( + (com.google.bigtable.v2.ArrayValue) kind_) + .mergeFrom(value) + .buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 4) { + arrayValueBuilder_.mergeFrom(value); + } else { + arrayValueBuilder_.setMessage(value); + } + } + kindCase_ = 4; + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + public Builder clearArrayValue() { + if (arrayValueBuilder_ == null) { + if (kindCase_ == 4) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 4) { + kindCase_ = 0; + kind_ = null; + } + arrayValueBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + public com.google.bigtable.v2.ArrayValue.Builder getArrayValueBuilder() { + return getArrayValueFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + @java.lang.Override + public com.google.bigtable.v2.ArrayValueOrBuilder getArrayValueOrBuilder() { + if ((kindCase_ == 4) && (arrayValueBuilder_ != null)) { + return arrayValueBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 4) { + return (com.google.bigtable.v2.ArrayValue) kind_; + } + return com.google.bigtable.v2.ArrayValue.getDefaultInstance(); + } + } + /** + * + * + *
+     * Represents a typed value transported as a sequence of values.
+     * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+     * `Value` must provide an explicit `type` on write. This `type` will
+     * apply recursively to the nested `Struct` fields, `Array` elements,
+     * or `Map` key/value pairs, which *must not* supply their own `type`.
+     * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ArrayValue, + com.google.bigtable.v2.ArrayValue.Builder, + com.google.bigtable.v2.ArrayValueOrBuilder> + getArrayValueFieldBuilder() { + if (arrayValueBuilder_ == null) { + if (!(kindCase_ == 4)) { + kind_ = com.google.bigtable.v2.ArrayValue.getDefaultInstance(); + } + arrayValueBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.bigtable.v2.ArrayValue, + com.google.bigtable.v2.ArrayValue.Builder, + com.google.bigtable.v2.ArrayValueOrBuilder>( + (com.google.bigtable.v2.ArrayValue) kind_, getParentForChildren(), isClean()); + kind_ = null; + } + kindCase_ = 4; + onChanged(); + return arrayValueBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueOrBuilder.java index f26118d9ef..32593579ed 100644 --- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueOrBuilder.java +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueOrBuilder.java @@ -24,6 +24,77 @@ public interface ValueOrBuilder // @@protoc_insertion_point(interface_extends:google.bigtable.v2.Value) com.google.protobuf.MessageOrBuilder { + /** + * + * + *
+   * The verified `Type` of this `Value`, if it cannot be inferred.
+   *
+   * Read results will never specify the encoding for `type` since the value
+   * will already have been decoded by the server. Furthermore, the `type` will
+   * be omitted entirely if it can be inferred from a previous response. The
+   * exact semantics for inferring `type` will vary, and are therefore
+   * documented separately for each read method.
+   *
+   * When using composite types (Struct, Array, Map) only the outermost `Value`
+   * will specify the `type`. This top-level `type` will define the types for
+   * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+   * If a nested `Value` provides a `type` on write, the request will be
+   * rejected with INVALID_ARGUMENT.
+   * 
+ * + * .google.bigtable.v2.Type type = 7; + * + * @return Whether the type field is set. + */ + boolean hasType(); + /** + * + * + *
+   * The verified `Type` of this `Value`, if it cannot be inferred.
+   *
+   * Read results will never specify the encoding for `type` since the value
+   * will already have been decoded by the server. Furthermore, the `type` will
+   * be omitted entirely if it can be inferred from a previous response. The
+   * exact semantics for inferring `type` will vary, and are therefore
+   * documented separately for each read method.
+   *
+   * When using composite types (Struct, Array, Map) only the outermost `Value`
+   * will specify the `type`. This top-level `type` will define the types for
+   * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+   * If a nested `Value` provides a `type` on write, the request will be
+   * rejected with INVALID_ARGUMENT.
+   * 
+ * + * .google.bigtable.v2.Type type = 7; + * + * @return The type. + */ + com.google.bigtable.v2.Type getType(); + /** + * + * + *
+   * The verified `Type` of this `Value`, if it cannot be inferred.
+   *
+   * Read results will never specify the encoding for `type` since the value
+   * will already have been decoded by the server. Furthermore, the `type` will
+   * be omitted entirely if it can be inferred from a previous response. The
+   * exact semantics for inferring `type` will vary, and are therefore
+   * documented separately for each read method.
+   *
+   * When using composite types (Struct, Array, Map) only the outermost `Value`
+   * will specify the `type`. This top-level `type` will define the types for
+   * any nested `Struct' fields, `Array` elements, or `Map` key/value pairs.
+   * If a nested `Value` provides a `type` on write, the request will be
+   * rejected with INVALID_ARGUMENT.
+   * 
+ * + * .google.bigtable.v2.Type type = 7; + */ + com.google.bigtable.v2.TypeOrBuilder getTypeOrBuilder(); + /** * * @@ -78,12 +149,73 @@ public interface ValueOrBuilder */ long getRawTimestampMicros(); + /** + * + * + *
+   * Represents a typed value transported as a byte sequence.
+   * 
+ * + * bytes bytes_value = 2; + * + * @return Whether the bytesValue field is set. + */ + boolean hasBytesValue(); + /** + * + * + *
+   * Represents a typed value transported as a byte sequence.
+   * 
+ * + * bytes bytes_value = 2; + * + * @return The bytesValue. + */ + com.google.protobuf.ByteString getBytesValue(); + + /** + * + * + *
+   * Represents a typed value transported as a string.
+   * 
+ * + * string string_value = 3; + * + * @return Whether the stringValue field is set. + */ + boolean hasStringValue(); + /** + * + * + *
+   * Represents a typed value transported as a string.
+   * 
+ * + * string string_value = 3; + * + * @return The stringValue. + */ + java.lang.String getStringValue(); + /** + * + * + *
+   * Represents a typed value transported as a string.
+   * 
+ * + * string string_value = 3; + * + * @return The bytes for stringValue. + */ + com.google.protobuf.ByteString getStringValueBytes(); + /** * * *
    * Represents a typed value transported as an integer.
-   * Default type for writes: `Int64`
    * 
* * int64 int_value = 6; @@ -96,7 +228,6 @@ public interface ValueOrBuilder * *
    * Represents a typed value transported as an integer.
-   * Default type for writes: `Int64`
    * 
* * int64 int_value = 6; @@ -105,5 +236,172 @@ public interface ValueOrBuilder */ long getIntValue(); + /** + * + * + *
+   * Represents a typed value transported as a boolean.
+   * 
+ * + * bool bool_value = 10; + * + * @return Whether the boolValue field is set. + */ + boolean hasBoolValue(); + /** + * + * + *
+   * Represents a typed value transported as a boolean.
+   * 
+ * + * bool bool_value = 10; + * + * @return The boolValue. + */ + boolean getBoolValue(); + + /** + * + * + *
+   * Represents a typed value transported as a floating point number.
+   * 
+ * + * double float_value = 11; + * + * @return Whether the floatValue field is set. + */ + boolean hasFloatValue(); + /** + * + * + *
+   * Represents a typed value transported as a floating point number.
+   * 
+ * + * double float_value = 11; + * + * @return The floatValue. + */ + double getFloatValue(); + + /** + * + * + *
+   * Represents a typed value transported as a timestamp.
+   * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + * + * @return Whether the timestampValue field is set. + */ + boolean hasTimestampValue(); + /** + * + * + *
+   * Represents a typed value transported as a timestamp.
+   * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + * + * @return The timestampValue. + */ + com.google.protobuf.Timestamp getTimestampValue(); + /** + * + * + *
+   * Represents a typed value transported as a timestamp.
+   * 
+ * + * .google.protobuf.Timestamp timestamp_value = 12; + */ + com.google.protobuf.TimestampOrBuilder getTimestampValueOrBuilder(); + + /** + * + * + *
+   * Represents a typed value transported as a date.
+   * 
+ * + * .google.type.Date date_value = 13; + * + * @return Whether the dateValue field is set. + */ + boolean hasDateValue(); + /** + * + * + *
+   * Represents a typed value transported as a date.
+   * 
+ * + * .google.type.Date date_value = 13; + * + * @return The dateValue. + */ + com.google.type.Date getDateValue(); + /** + * + * + *
+   * Represents a typed value transported as a date.
+   * 
+ * + * .google.type.Date date_value = 13; + */ + com.google.type.DateOrBuilder getDateValueOrBuilder(); + + /** + * + * + *
+   * Represents a typed value transported as a sequence of values.
+   * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+   * `Value` must provide an explicit `type` on write. This `type` will
+   * apply recursively to the nested `Struct` fields, `Array` elements,
+   * or `Map` key/value pairs, which *must not* supply their own `type`.
+   * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + * + * @return Whether the arrayValue field is set. + */ + boolean hasArrayValue(); + /** + * + * + *
+   * Represents a typed value transported as a sequence of values.
+   * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+   * `Value` must provide an explicit `type` on write. This `type` will
+   * apply recursively to the nested `Struct` fields, `Array` elements,
+   * or `Map` key/value pairs, which *must not* supply their own `type`.
+   * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + * + * @return The arrayValue. + */ + com.google.bigtable.v2.ArrayValue getArrayValue(); + /** + * + * + *
+   * Represents a typed value transported as a sequence of values.
+   * To differentiate between `Struct`, `Array`, and `Map`, the outermost
+   * `Value` must provide an explicit `type` on write. This `type` will
+   * apply recursively to the nested `Struct` fields, `Array` elements,
+   * or `Map` key/value pairs, which *must not* supply their own `type`.
+   * 
+ * + * .google.bigtable.v2.ArrayValue array_value = 4; + */ + com.google.bigtable.v2.ArrayValueOrBuilder getArrayValueOrBuilder(); + com.google.bigtable.v2.Value.KindCase getKindCase(); } diff --git a/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/bigtable.proto b/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/bigtable.proto index 4701890a38..82a28e6f59 100644 --- a/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/bigtable.proto +++ b/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/bigtable.proto @@ -274,6 +274,23 @@ service Bigtable { option (google.api.method_signature) = "table_name"; option (google.api.method_signature) = "table_name,app_profile_id"; } + + // Executes a BTQL query against a particular Cloud Bigtable instance. + rpc ExecuteQuery(ExecuteQueryRequest) returns (stream ExecuteQueryResponse) { + option (google.api.http) = { + post: "/v2/{instance_name=projects/*/instances/*}:executeQuery" + body: "*" + }; + option (google.api.routing) = { + routing_parameters { + field: "instance_name" + path_template: "{name=projects/*/instances/*}" + } + routing_parameters { field: "app_profile_id" } + }; + option (google.api.method_signature) = "instance_name,query"; + option (google.api.method_signature) = "instance_name,query,app_profile_id"; + } } // Request message for Bigtable.ReadRows. @@ -1006,3 +1023,80 @@ message ReadChangeStreamResponse { CloseStream close_stream = 3; } } + +// Request message for Bigtable.ExecuteQuery +message ExecuteQueryRequest { + // Required. The unique name of the instance against which the query should be + // executed. + // Values are of the form `projects//instances/` + string instance_name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "bigtableadmin.googleapis.com/Instance" + } + ]; + + // Optional. This value specifies routing for replication. If not specified, + // the `default` application profile will be used. + string app_profile_id = 2 [(google.api.field_behavior) = OPTIONAL]; + + // Required. The query string. + string query = 3 [(google.api.field_behavior) = REQUIRED]; + + // Required. Requested data format for the response. + oneof data_format { + // Protocol buffer format as described by ProtoSchema and ProtoRows + // messages. + ProtoFormat proto_format = 4; + } + + // Optional. If this request is resuming a previously interrupted query + // execution, `resume_token` should be copied from the last + // PartialResultSet yielded before the interruption. Doing this + // enables the query execution to resume where the last one left + // off. + // The rest of the request parameters must exactly match the + // request that yielded this token. Otherwise the request will fail. + bytes resume_token = 8 [(google.api.field_behavior) = OPTIONAL]; + + // Required. params contains string type keys and Bigtable type values that + // bind to placeholders in the query string. In query string, a parameter + // placeholder consists of the + // `@` character followed by the parameter name (for example, `@firstName`) in + // the query string. + // + // For example, if + // `params["firstName"] = bytes_value: "foo" type {bytes_type {}}` + // then `@firstName` will be replaced with googlesql bytes value "foo" in the + // query string during query evaluation. + // + // In case of Value.kind is not set, it will be set to corresponding null + // value in googlesql. + // `params["firstName"] = type {string_type {}}` + // then `@firstName` will be replaced with googlesql null string. + // + // Value.type should always be set and no inference of type will be made from + // Value.kind. If Value.type is not set, we will return INVALID_ARGUMENT + // error. + map params = 7 [(google.api.field_behavior) = REQUIRED]; +} + +// Response message for Bigtable.ExecuteQuery +message ExecuteQueryResponse { + // The first response streamed from the server is of type `ResultSetMetadata` + // and includes information about the columns and types of the result set. + // From there on, we stream `PartialResultSet` messages with no additional + // information. `PartialResultSet` will contain `resume_token` to restart the + // response if query interrupts. In case of resumption with `resume_token`, + // the server will not resend the ResultSetMetadata. + oneof response { + // Structure of rows in this response stream. The first (and only the first) + // response streamed from the server will be of this type. + ResultSetMetadata metadata = 1; + + // A partial result set with row data potentially including additional + // instructions on how recent past and future partial responses should be + // interpreted. + PartialResultSet results = 2; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/data.proto b/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/data.proto index f4e2f8a10e..20e29a1ade 100644 --- a/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/data.proto +++ b/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/data.proto @@ -17,6 +17,9 @@ syntax = "proto3"; package google.bigtable.v2; import "google/api/field_behavior.proto"; +import "google/bigtable/v2/types.proto"; +import "google/protobuf/timestamp.proto"; +import "google/type/date.proto"; option csharp_namespace = "Google.Cloud.Bigtable.V2"; option go_package = "google.golang.org/genproto/googleapis/bigtable/v2;bigtable"; @@ -92,6 +95,21 @@ message Cell { // value (which may be of a more complex type). See the documentation of the // `Type` message for more details. message Value { + // The verified `Type` of this `Value`, if it cannot be inferred. + // + // Read results will never specify the encoding for `type` since the value + // will already have been decoded by the server. Furthermore, the `type` will + // be omitted entirely if it can be inferred from a previous response. The + // exact semantics for inferring `type` will vary, and are therefore + // documented separately for each read method. + // + // When using composite types (Struct, Array, Map) only the outermost `Value` + // will specify the `type`. This top-level `type` will define the types for + // any nested `Struct' fields, `Array` elements, or `Map` key/value pairs. + // If a nested `Value` provides a `type` on write, the request will be + // rejected with INVALID_ARGUMENT. + Type type = 7; + // Options for transporting values within the protobuf type system. A given // `kind` may support more than one `type` and vice versa. On write, this is // roughly analogous to a GoogleSQL literal. @@ -107,12 +125,42 @@ message Value { // The `type` field must be omitted. int64 raw_timestamp_micros = 9; + // Represents a typed value transported as a byte sequence. + bytes bytes_value = 2; + + // Represents a typed value transported as a string. + string string_value = 3; + // Represents a typed value transported as an integer. - // Default type for writes: `Int64` int64 int_value = 6; + + // Represents a typed value transported as a boolean. + bool bool_value = 10; + + // Represents a typed value transported as a floating point number. + double float_value = 11; + + // Represents a typed value transported as a timestamp. + google.protobuf.Timestamp timestamp_value = 12; + + // Represents a typed value transported as a date. + google.type.Date date_value = 13; + + // Represents a typed value transported as a sequence of values. + // To differentiate between `Struct`, `Array`, and `Map`, the outermost + // `Value` must provide an explicit `type` on write. This `type` will + // apply recursively to the nested `Struct` fields, `Array` elements, + // or `Map` key/value pairs, which *must not* supply their own `type`. + ArrayValue array_value = 4; } } +// `ArrayValue` is an ordered list of `Value`. +message ArrayValue { + // The ordered elements in the array. + repeated Value values = 1; +} + // Specifies a contiguous range of rows. message RowRange { // The row key at which to start the range. @@ -609,3 +657,96 @@ message StreamContinuationToken { // An encoded position in the stream to restart reading from. string token = 2; } + +// Protocol buffers format descriptor, as described by Messages ProtoSchema and +// ProtoRows +message ProtoFormat {} + +// Describes a column in a Bigtable Query Language result set. +message ColumnMetadata { + // The name of the column. + string name = 1; + + // The type of the column. + Type type = 2; +} + +// ResultSet schema in proto format +message ProtoSchema { + // The columns in the result set. + repeated ColumnMetadata columns = 1; +} + +// Describes the structure of a Bigtable result set. +message ResultSetMetadata { + // The schema of the ResultSet, contains ordered list of column names + // with types + oneof schema { + // Schema in proto format + ProtoSchema proto_schema = 1; + } +} + +// Rows represented in proto format. +// +// This should be constructed by concatenating the `batch_data` from each +// of the relevant `ProtoRowsBatch` messages and parsing the result as a +// `ProtoRows` message. +message ProtoRows { + // A proto rows message consists of a list of values. Every N complete values + // defines a row, where N is equal to the number of entries in the + // `metadata.proto_schema.columns` value received in the first response. + repeated Value values = 2; +} + +// Batch of serialized ProtoRows. +message ProtoRowsBatch { + // Merge partial results by concatenating these bytes, then parsing the + // overall value as a `ProtoRows` message. + bytes batch_data = 1; +} + +// A partial result set from the streaming query API. +// CBT client will buffer partial_rows from result_sets until it gets a +// resumption_token. +message PartialResultSet { + // Partial Rows in one of the supported formats. It may require many + // PartialResultSets to stream a batch of rows that can decoded on the client. + // The client should buffer partial_rows until it gets a `resume_token`, + // at which point the batch is complete and can be decoded and yielded to the + // user. Each sub-message documents the appropriate way to combine results. + oneof partial_rows { + // Partial rows in serialized ProtoRows format. + ProtoRowsBatch proto_rows_batch = 3; + } + + // An opaque token sent by the server to allow query resumption and signal + // the client to accumulate `partial_rows` since the last non-empty + // `resume_token`. On resumption, the resumed query will return the remaining + // rows for this query. + // + // If there is a batch in progress, a non-empty `resume_token` + // means that that the batch of `partial_rows` will be complete after merging + // the `partial_rows` from this response. The client must only yield + // completed batches to the application, and must ensure that any future + // retries send the latest token to avoid returning duplicate data. + // + // The server may set 'resume_token' without a 'partial_rows'. If there is a + // batch in progress the client should yield it. + // + // The server will also send a sentinel `resume_token` when last batch of + // `partial_rows` is sent. If the client retries the ExecuteQueryRequest with + // the sentinel `resume_token`, the server will emit it again without any + // `partial_rows`, then return OK. + bytes resume_token = 5; + + // Estimated size of a new batch. The server will always set this when + // returning the first `partial_rows` of a batch, and will not set it at any + // other time. + // + // The client can use this estimate to allocate an initial buffer for the + // batched results. This helps minimize the number of allocations required, + // though the buffer size may still need to be increased if the estimate is + // too low. + int32 estimated_batch_size = 4; +} diff --git a/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/types.proto b/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/types.proto new file mode 100644 index 0000000000..b3fc818d4a --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/proto/google/bigtable/v2/types.proto @@ -0,0 +1,286 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.bigtable.v2; + +import "google/api/field_behavior.proto"; + +option csharp_namespace = "Google.Cloud.Bigtable.V2"; +option go_package = "google.golang.org/genproto/googleapis/bigtable/v2;bigtable"; +option java_multiple_files = true; +option java_outer_classname = "TypesProto"; +option java_package = "com.google.bigtable.v2"; +option php_namespace = "Google\\Cloud\\Bigtable\\V2"; +option ruby_package = "Google::Cloud::Bigtable::V2"; + +// `Type` represents the type of data that is written to, read from, or stored +// in Bigtable. It is heavily based on the GoogleSQL standard to help maintain +// familiarity and consistency across products and features. +// +// For compatibility with Bigtable's existing untyped APIs, each `Type` includes +// an `Encoding` which describes how to convert to/from the underlying data. +// +// Each encoding also defines the following properties: +// +// * Order-preserving: Does the encoded value sort consistently with the +// original typed value? Note that Bigtable will always sort data based on +// the raw encoded value, *not* the decoded type. +// - Example: BYTES values sort in the same order as their raw encodings. +// - Counterexample: Encoding INT64 as a fixed-width decimal string does +// *not* preserve sort order when dealing with negative numbers. +// `INT64(1) > INT64(-1)`, but `STRING("-00001") > STRING("00001)`. +// * Self-delimiting: If we concatenate two encoded values, can we always tell +// where the first one ends and the second one begins? +// - Example: If we encode INT64s to fixed-width STRINGs, the first value +// will always contain exactly N digits, possibly preceded by a sign. +// - Counterexample: If we concatenate two UTF-8 encoded STRINGs, we have +// no way to tell where the first one ends. +// * Compatibility: Which other systems have matching encoding schemes? For +// example, does this encoding have a GoogleSQL equivalent? HBase? Java? +message Type { + // Bytes + // Values of type `Bytes` are stored in `Value.bytes_value`. + message Bytes { + // Rules used to convert to/from lower level types. + message Encoding { + // Leaves the value "as-is" + // * Order-preserving? Yes + // * Self-delimiting? No + // * Compatibility? N/A + message Raw {} + + // Which encoding to use. + oneof encoding { + // Use `Raw` encoding. + Raw raw = 1; + } + } + + // The encoding to use when converting to/from lower level types. + Encoding encoding = 1; + } + + // String + // Values of type `String` are stored in `Value.string_value`. + message String { + // Rules used to convert to/from lower level types. + message Encoding { + // UTF-8 encoding + // * Order-preserving? Yes (code point order) + // * Self-delimiting? No + // * Compatibility? + // - BigQuery Federation `TEXT` encoding + // - HBase `Bytes.toBytes` + // - Java `String#getBytes(StandardCharsets.UTF_8)` + message Utf8Bytes {} + + // Which encoding to use. + oneof encoding { + // Use `Utf8Bytes` encoding. + Utf8Bytes utf8_bytes = 2; + } + } + + // The encoding to use when converting to/from lower level types. + Encoding encoding = 1; + } + + // Int64 + // Values of type `Int64` are stored in `Value.int_value`. + message Int64 { + // Rules used to convert to/from lower level types. + message Encoding { + // Encodes the value as an 8-byte big endian twos complement `Bytes` + // value. + // * Order-preserving? No (positive values only) + // * Self-delimiting? Yes + // * Compatibility? + // - BigQuery Federation `BINARY` encoding + // - HBase `Bytes.toBytes` + // - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN` + message BigEndianBytes { + // Deprecated: ignored if set. + Bytes bytes_type = 1; + } + + // Which encoding to use. + oneof encoding { + // Use `BigEndianBytes` encoding. + BigEndianBytes big_endian_bytes = 1; + } + } + + // The encoding to use when converting to/from lower level types. + Encoding encoding = 1; + } + + // bool + // Values of type `Bool` are stored in `Value.bool_value`. + message Bool {} + + // Float32 + // Values of type `Float32` are stored in `Value.float_value`. + message Float32 {} + + // Float64 + // Values of type `Float64` are stored in `Value.float_value`. + message Float64 {} + + // Timestamp + // Values of type `Timestamp` are stored in `Value.timestamp_value`. + message Timestamp {} + + // Date + // Values of type `Date` are stored in `Value.date_value`. + message Date {} + + // A structured data value, consisting of fields which map to dynamically + // typed values. + // Values of type `Struct` are stored in `Value.array_value` where entries are + // in the same order and number as `field_types`. + message Struct { + // A struct field and its type. + message Field { + // The field name (optional). Fields without a `field_name` are considered + // anonymous and cannot be referenced by name. + string field_name = 1; + + // The type of values in this field. + Type type = 2; + } + + // The names and types of the fields in this struct. + repeated Field fields = 1; + } + + // An ordered list of elements of a given type. + // Values of type `Array` are stored in `Value.array_value`. + message Array { + // The type of the elements in the array. This must not be `Array`. + Type element_type = 1; + } + + // A mapping of keys to values of a given type. + // Values of type `Map` are stored in a `Value.array_value` where each entry + // is another `Value.array_value` with two elements (the key and the value, + // in that order). + // Normally encoded Map values won't have repeated keys, however, clients are + // expected to handle the case in which they do. If the same key appears + // multiple times, the _last_ value takes precedence. + message Map { + // The type of a map key. + // Only `Bytes`, `String`, and `Int64` are allowed as key types. + Type key_type = 1; + + // The type of the values in a map. + Type value_type = 2; + } + + // A value that combines incremental updates into a summarized value. + // + // Data is never directly written or read using type `Aggregate`. Writes will + // provide either the `input_type` or `state_type`, and reads will always + // return the `state_type` . + message Aggregate { + // Computes the sum of the input values. + // Allowed input: `Int64` + // State: same as input + message Sum {} + + // Computes the max of the input values. + // Allowed input: `Int64` + // State: same as input + message Max {} + + // Computes the min of the input values. + // Allowed input: `Int64` + // State: same as input + message Min {} + + // Computes an approximate unique count over the input values. When using + // raw data as input, be careful to use a consistent encoding. Otherwise + // the same value encoded differently could count more than once, or two + // distinct values could count as identical. + // Input: Any, or omit for Raw + // State: TBD + // Special state conversions: `Int64` (the unique count estimate) + message HyperLogLogPlusPlusUniqueCount {} + + // Type of the inputs that are accumulated by this `Aggregate`, which must + // specify a full encoding. + // Use `AddInput` mutations to accumulate new inputs. + Type input_type = 1; + + // Output only. Type that holds the internal accumulator state for the + // `Aggregate`. This is a function of the `input_type` and `aggregator` + // chosen, and will always specify a full encoding. + Type state_type = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Which aggregator function to use. The configured types must match. + oneof aggregator { + // Sum aggregator. + Sum sum = 4; + + // HyperLogLogPlusPlusUniqueCount aggregator. + HyperLogLogPlusPlusUniqueCount hllpp_unique_count = 5; + + // Max aggregator. + Max max = 6; + + // Min aggregator. + Min min = 7; + } + } + + // The kind of type that this represents. + oneof kind { + // Bytes + Bytes bytes_type = 1; + + // String + String string_type = 2; + + // Int64 + Int64 int64_type = 5; + + // Float32 + Float32 float32_type = 12; + + // Float64 + Float64 float64_type = 9; + + // Bool + Bool bool_type = 8; + + // Timestamp + Timestamp timestamp_type = 10; + + // Date + Date date_type = 11; + + // Aggregate + Aggregate aggregate_type = 6; + + // Struct + Struct struct_type = 7; + + // Array + Array array_type = 3; + + // Map + Map map_type = 4; + } +}