diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 55b191345e..8e78bf600d 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -37,7 +37,7 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - uses: googleapis/google-cloud-java/sdk-platform-java/.github/scripts@google-cloud-shared-dependencies/v3.61.0 + - uses: googleapis/google-cloud-java/sdk-platform-java/.github/scripts@v1.85.0 if: env.SHOULD_RUN == 'true' with: image_tag: latest diff --git a/generation_config.yaml b/generation_config.yaml index e0d896e850..2772ea8b15 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,5 +1,5 @@ gapic_generator_version: 2.71.0 -googleapis_commitish: 939ba3bf8408af83f0f73ae35c76c4b11a8c8c8d +googleapis_commitish: 89c3153888201c9e80bc5ec78d6ffca0debe6b52 libraries_bom_version: 26.80.0 template_excludes: - .gitignore 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 fd3a9f86ff..21a24bbaca 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 @@ -3257,6 +3257,24 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.bigtable.v2.ValueBitmask", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.bigtable.v2.ValueBitmask$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.bigtable.v2.ValueRange", "queryAllDeclaredConstructors": true, 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 63ba302c3b..36dd673323 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 @@ -84,6 +84,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_bigtable_v2_ValueRange_descriptor; static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_google_bigtable_v2_ValueRange_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_bigtable_v2_ValueBitmask_descriptor; + static final com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_google_bigtable_v2_ValueBitmask_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_bigtable_v2_RowFilter_descriptor; static final com.google.protobuf.GeneratedMessage.FieldAccessorTable @@ -247,7 +251,9 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\020end_value_closed\030\003 \001(\014H\001\022\030\n" + "\016end_value_open\030\004 \001(\014H\001B\r\n" + "\013start_valueB\013\n" - + "\tend_value\"\337\010\n" + + "\tend_value\"!\n" + + "\014ValueBitmask\022\021\n" + + "\004mask\030\001 \001(\014B\003\340A\002\"\241\t\n" + "\tRowFilter\0224\n" + "\005chain\030\001 \001(\0132#.google.bigtable.v2.RowFilter.ChainH\000\022>\n\n" + "interleave\030\002 \001(\0132(.google.bigtable.v2.RowFilter.InterleaveH\000\022<\n" @@ -272,7 +278,9 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\035cells_per_column_limit_filter\030\014 \001(\005H\000\022!\n" + "\027strip_value_transformer\030\r" + " \001(\010H\000\022!\n" - + "\027apply_label_transformer\030\023 \001(\tH\000\0327\n" + + "\027apply_label_transformer\030\023 \001(\tH\000\022@\n" + + "\024value_bitmask_filter\030\024 \001(\0132" + + " .google.bigtable.v2.ValueBitmaskH\000\0327\n" + "\005Chain\022.\n" + "\007filters\030\001 \003(\0132\035.google.bigtable.v2.RowFilter\032<\n\n" + "Interleave\022.\n" @@ -287,12 +295,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\013add_to_cell\030\005" + " \001(\0132&.google.bigtable.v2.Mutation.AddToCellH\000\022A\n\r" + "merge_to_cell\030\006 \001(\0132(.google.bigtable.v2.Mutation.MergeToCellH\000\022K\n" - + "\022delete_from_column\030\002 \001(" - + "\0132-.google.bigtable.v2.Mutation.DeleteFromColumnH\000\022K\n" - + "\022delete_from_family\030\003 \001(\0132-" - + ".google.bigtable.v2.Mutation.DeleteFromFamilyH\000\022E\n" - + "\017delete_from_row\030\004 \001(\0132*.googl" - + "e.bigtable.v2.Mutation.DeleteFromRowH\000\032a\n" + + "\022delete_from_column\030\002" + + " \001(\0132-.google.bigtable.v2.Mutation.DeleteFromColumnH\000\022K\n" + + "\022delete_from_family\030\003" + + " \001(\0132-.google.bigtable.v2.Mutation.DeleteFromFamilyH\000\022E\n" + + "\017delete_from_row\030\004" + + " \001(\0132*.google.bigtable.v2.Mutation.DeleteFromRowH\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" @@ -352,14 +360,13 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\024estimated_batch_size\030\004 \001(\005B\016\n" + "\014partial_rowsB\021\n" + "\017_batch_checksum\"L\n" - + "\013Idempotency\022\r" - + "\n" + + "\013Idempotency\022\r\n" + "\005token\030\001 \001(\014\022.\n\n" + "start_time\030\002 \001(\0132\032.google.protobuf.TimestampB\263\001\n" - + "\026com.google.bigtable.v2B\tDataProtoP\001Z8cloud.google.com/" - + "go/bigtable/apiv2/bigtablepb;bigtablepb\252" - + "\002\030Google.Cloud.Bigtable.V2\312\002\030Google\\Clou" - + "d\\Bigtable\\V2\352\002\033Google::Cloud::Bigtable::V2b\006proto3" + + "\026com.google.bigtable.v2B\tDataProtoP\001Z8cloud.google.com/go/bigtable/apiv2/b" + + "igtablepb;bigtablepb\252\002\030Google.Cloud.Bigt" + + "able.V2\312\002\030Google\\Cloud\\Bigtable\\V2\352\002\033Goo" + + "gle::Cloud::Bigtable::V2b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -470,7 +477,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "StartValue", "EndValue", }); - internal_static_google_bigtable_v2_RowFilter_descriptor = getDescriptor().getMessageType(11); + internal_static_google_bigtable_v2_ValueBitmask_descriptor = getDescriptor().getMessageType(11); + internal_static_google_bigtable_v2_ValueBitmask_fieldAccessorTable = + new com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_google_bigtable_v2_ValueBitmask_descriptor, + new java.lang.String[] { + "Mask", + }); + internal_static_google_bigtable_v2_RowFilter_descriptor = getDescriptor().getMessageType(12); internal_static_google_bigtable_v2_RowFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_RowFilter_descriptor, @@ -494,6 +508,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "CellsPerColumnLimitFilter", "StripValueTransformer", "ApplyLabelTransformer", + "ValueBitmaskFilter", "Filter", }); internal_static_google_bigtable_v2_RowFilter_Chain_descriptor = @@ -520,7 +535,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "PredicateFilter", "TrueFilter", "FalseFilter", }); - internal_static_google_bigtable_v2_Mutation_descriptor = getDescriptor().getMessageType(12); + internal_static_google_bigtable_v2_Mutation_descriptor = getDescriptor().getMessageType(13); internal_static_google_bigtable_v2_Mutation_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_Mutation_descriptor, @@ -580,7 +595,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().getMessageType(13); + getDescriptor().getMessageType(14); internal_static_google_bigtable_v2_ReadModifyWriteRule_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_ReadModifyWriteRule_descriptor, @@ -588,7 +603,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "FamilyName", "ColumnQualifier", "AppendValue", "IncrementAmount", "Rule", }); internal_static_google_bigtable_v2_StreamPartition_descriptor = - getDescriptor().getMessageType(14); + getDescriptor().getMessageType(15); internal_static_google_bigtable_v2_StreamPartition_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_StreamPartition_descriptor, @@ -596,7 +611,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "RowRange", }); internal_static_google_bigtable_v2_StreamContinuationTokens_descriptor = - getDescriptor().getMessageType(15); + getDescriptor().getMessageType(16); internal_static_google_bigtable_v2_StreamContinuationTokens_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_StreamContinuationTokens_descriptor, @@ -604,26 +619,26 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Tokens", }); internal_static_google_bigtable_v2_StreamContinuationToken_descriptor = - getDescriptor().getMessageType(16); + getDescriptor().getMessageType(17); internal_static_google_bigtable_v2_StreamContinuationToken_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_StreamContinuationToken_descriptor, new java.lang.String[] { "Partition", "Token", }); - internal_static_google_bigtable_v2_ProtoFormat_descriptor = getDescriptor().getMessageType(17); + internal_static_google_bigtable_v2_ProtoFormat_descriptor = getDescriptor().getMessageType(18); internal_static_google_bigtable_v2_ProtoFormat_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_ProtoFormat_descriptor, new java.lang.String[] {}); internal_static_google_bigtable_v2_ColumnMetadata_descriptor = - getDescriptor().getMessageType(18); + getDescriptor().getMessageType(19); internal_static_google_bigtable_v2_ColumnMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_ColumnMetadata_descriptor, new java.lang.String[] { "Name", "Type", }); - internal_static_google_bigtable_v2_ProtoSchema_descriptor = getDescriptor().getMessageType(19); + internal_static_google_bigtable_v2_ProtoSchema_descriptor = getDescriptor().getMessageType(20); internal_static_google_bigtable_v2_ProtoSchema_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_ProtoSchema_descriptor, @@ -631,14 +646,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Columns", }); internal_static_google_bigtable_v2_ResultSetMetadata_descriptor = - getDescriptor().getMessageType(20); + getDescriptor().getMessageType(21); internal_static_google_bigtable_v2_ResultSetMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_ResultSetMetadata_descriptor, new java.lang.String[] { "ProtoSchema", "Schema", }); - internal_static_google_bigtable_v2_ProtoRows_descriptor = getDescriptor().getMessageType(21); + internal_static_google_bigtable_v2_ProtoRows_descriptor = getDescriptor().getMessageType(22); internal_static_google_bigtable_v2_ProtoRows_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_ProtoRows_descriptor, @@ -646,7 +661,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Values", }); internal_static_google_bigtable_v2_ProtoRowsBatch_descriptor = - getDescriptor().getMessageType(22); + getDescriptor().getMessageType(23); internal_static_google_bigtable_v2_ProtoRowsBatch_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_ProtoRowsBatch_descriptor, @@ -654,7 +669,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "BatchData", }); internal_static_google_bigtable_v2_PartialResultSet_descriptor = - getDescriptor().getMessageType(23); + getDescriptor().getMessageType(24); internal_static_google_bigtable_v2_PartialResultSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_PartialResultSet_descriptor, @@ -666,7 +681,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "EstimatedBatchSize", "PartialRows", }); - internal_static_google_bigtable_v2_Idempotency_descriptor = getDescriptor().getMessageType(24); + internal_static_google_bigtable_v2_Idempotency_descriptor = getDescriptor().getMessageType(25); internal_static_google_bigtable_v2_Idempotency_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_bigtable_v2_Idempotency_descriptor, @@ -678,6 +693,11 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.bigtable.v2.TypesProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); com.google.type.DateProto.getDescriptor(); + 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); } // @@protoc_insertion_point(outer_class_scope) diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/RowFilter.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/RowFilter.java index 7de898b4f3..df520dbf7e 100644 --- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/RowFilter.java +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/RowFilter.java @@ -4203,6 +4203,7 @@ public enum FilterCase CELLS_PER_COLUMN_LIMIT_FILTER(12), STRIP_VALUE_TRANSFORMER(13), APPLY_LABEL_TRANSFORMER(19), + VALUE_BITMASK_FILTER(20), FILTER_NOT_SET(0); private final int value; @@ -4260,6 +4261,8 @@ public static FilterCase forNumber(int value) { return STRIP_VALUE_TRANSFORMER; case 19: return APPLY_LABEL_TRANSFORMER; + case 20: + return VALUE_BITMASK_FILTER; case 0: return FILTER_NOT_SET; default: @@ -5383,6 +5386,69 @@ public com.google.protobuf.ByteString getApplyLabelTransformerBytes() { } } + public static final int VALUE_BITMASK_FILTER_FIELD_NUMBER = 20; + + /** + * + * + *
+   * Matches only cells with values that satisfy the condition `(value & mask)
+   * == mask`.
+   * The mask length must exactly match the value length, otherwise the cell
+   * is not considered a match.
+   * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + * + * @return Whether the valueBitmaskFilter field is set. + */ + @java.lang.Override + public boolean hasValueBitmaskFilter() { + return filterCase_ == 20; + } + + /** + * + * + *
+   * Matches only cells with values that satisfy the condition `(value & mask)
+   * == mask`.
+   * The mask length must exactly match the value length, otherwise the cell
+   * is not considered a match.
+   * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + * + * @return The valueBitmaskFilter. + */ + @java.lang.Override + public com.google.bigtable.v2.ValueBitmask getValueBitmaskFilter() { + if (filterCase_ == 20) { + return (com.google.bigtable.v2.ValueBitmask) filter_; + } + return com.google.bigtable.v2.ValueBitmask.getDefaultInstance(); + } + + /** + * + * + *
+   * Matches only cells with values that satisfy the condition `(value & mask)
+   * == mask`.
+   * The mask length must exactly match the value length, otherwise the cell
+   * is not considered a match.
+   * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + @java.lang.Override + public com.google.bigtable.v2.ValueBitmaskOrBuilder getValueBitmaskFilterOrBuilder() { + if (filterCase_ == 20) { + return (com.google.bigtable.v2.ValueBitmask) filter_; + } + return com.google.bigtable.v2.ValueBitmask.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -5454,6 +5520,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (filterCase_ == 19) { com.google.protobuf.GeneratedMessage.writeString(output, 19, filter_); } + if (filterCase_ == 20) { + output.writeMessage(20, (com.google.bigtable.v2.ValueBitmask) filter_); + } getUnknownFields().writeTo(output); } @@ -5554,6 +5623,11 @@ public int getSerializedSize() { if (filterCase_ == 19) { size += com.google.protobuf.GeneratedMessage.computeStringSize(19, filter_); } + if (filterCase_ == 20) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 20, (com.google.bigtable.v2.ValueBitmask) filter_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -5630,6 +5704,9 @@ public boolean equals(final java.lang.Object obj) { case 19: if (!getApplyLabelTransformer().equals(other.getApplyLabelTransformer())) return false; break; + case 20: + if (!getValueBitmaskFilter().equals(other.getValueBitmaskFilter())) return false; + break; case 0: default: } @@ -5724,6 +5801,10 @@ public int hashCode() { hash = (37 * hash) + APPLY_LABEL_TRANSFORMER_FIELD_NUMBER; hash = (53 * hash) + getApplyLabelTransformer().hashCode(); break; + case 20: + hash = (37 * hash) + VALUE_BITMASK_FILTER_FIELD_NUMBER; + hash = (53 * hash) + getValueBitmaskFilter().hashCode(); + break; case 0: default: } @@ -5916,6 +5997,9 @@ public Builder clear() { if (valueRangeFilterBuilder_ != null) { valueRangeFilterBuilder_.clear(); } + if (valueBitmaskFilterBuilder_ != null) { + valueBitmaskFilterBuilder_.clear(); + } filterCase_ = 0; filter_ = null; return this; @@ -5977,6 +6061,9 @@ private void buildPartialOneofs(com.google.bigtable.v2.RowFilter result) { if (filterCase_ == 15 && valueRangeFilterBuilder_ != null) { result.filter_ = valueRangeFilterBuilder_.build(); } + if (filterCase_ == 20 && valueBitmaskFilterBuilder_ != null) { + result.filter_ = valueBitmaskFilterBuilder_.build(); + } } @java.lang.Override @@ -6091,6 +6178,11 @@ public Builder mergeFrom(com.google.bigtable.v2.RowFilter other) { onChanged(); break; } + case VALUE_BITMASK_FILTER: + { + mergeValueBitmaskFilter(other.getValueBitmaskFilter()); + break; + } case FILTER_NOT_SET: { break; @@ -6243,6 +6335,13 @@ public Builder mergeFrom( filter_ = s; break; } // case 154 + case 162: + { + input.readMessage( + internalGetValueBitmaskFilterFieldBuilder().getBuilder(), extensionRegistry); + filterCase_ = 20; + break; + } // case 162 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -9132,6 +9231,249 @@ public Builder setApplyLabelTransformerBytes(com.google.protobuf.ByteString valu return this; } + private com.google.protobuf.SingleFieldBuilder< + com.google.bigtable.v2.ValueBitmask, + com.google.bigtable.v2.ValueBitmask.Builder, + com.google.bigtable.v2.ValueBitmaskOrBuilder> + valueBitmaskFilterBuilder_; + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + * + * @return Whether the valueBitmaskFilter field is set. + */ + @java.lang.Override + public boolean hasValueBitmaskFilter() { + return filterCase_ == 20; + } + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + * + * @return The valueBitmaskFilter. + */ + @java.lang.Override + public com.google.bigtable.v2.ValueBitmask getValueBitmaskFilter() { + if (valueBitmaskFilterBuilder_ == null) { + if (filterCase_ == 20) { + return (com.google.bigtable.v2.ValueBitmask) filter_; + } + return com.google.bigtable.v2.ValueBitmask.getDefaultInstance(); + } else { + if (filterCase_ == 20) { + return valueBitmaskFilterBuilder_.getMessage(); + } + return com.google.bigtable.v2.ValueBitmask.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + public Builder setValueBitmaskFilter(com.google.bigtable.v2.ValueBitmask value) { + if (valueBitmaskFilterBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + filter_ = value; + onChanged(); + } else { + valueBitmaskFilterBuilder_.setMessage(value); + } + filterCase_ = 20; + return this; + } + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + public Builder setValueBitmaskFilter( + com.google.bigtable.v2.ValueBitmask.Builder builderForValue) { + if (valueBitmaskFilterBuilder_ == null) { + filter_ = builderForValue.build(); + onChanged(); + } else { + valueBitmaskFilterBuilder_.setMessage(builderForValue.build()); + } + filterCase_ = 20; + return this; + } + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + public Builder mergeValueBitmaskFilter(com.google.bigtable.v2.ValueBitmask value) { + if (valueBitmaskFilterBuilder_ == null) { + if (filterCase_ == 20 + && filter_ != com.google.bigtable.v2.ValueBitmask.getDefaultInstance()) { + filter_ = + com.google.bigtable.v2.ValueBitmask.newBuilder( + (com.google.bigtable.v2.ValueBitmask) filter_) + .mergeFrom(value) + .buildPartial(); + } else { + filter_ = value; + } + onChanged(); + } else { + if (filterCase_ == 20) { + valueBitmaskFilterBuilder_.mergeFrom(value); + } else { + valueBitmaskFilterBuilder_.setMessage(value); + } + } + filterCase_ = 20; + return this; + } + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + public Builder clearValueBitmaskFilter() { + if (valueBitmaskFilterBuilder_ == null) { + if (filterCase_ == 20) { + filterCase_ = 0; + filter_ = null; + onChanged(); + } + } else { + if (filterCase_ == 20) { + filterCase_ = 0; + filter_ = null; + } + valueBitmaskFilterBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + public com.google.bigtable.v2.ValueBitmask.Builder getValueBitmaskFilterBuilder() { + return internalGetValueBitmaskFilterFieldBuilder().getBuilder(); + } + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + @java.lang.Override + public com.google.bigtable.v2.ValueBitmaskOrBuilder getValueBitmaskFilterOrBuilder() { + if ((filterCase_ == 20) && (valueBitmaskFilterBuilder_ != null)) { + return valueBitmaskFilterBuilder_.getMessageOrBuilder(); + } else { + if (filterCase_ == 20) { + return (com.google.bigtable.v2.ValueBitmask) filter_; + } + return com.google.bigtable.v2.ValueBitmask.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Matches only cells with values that satisfy the condition `(value & mask)
+     * == mask`.
+     * The mask length must exactly match the value length, otherwise the cell
+     * is not considered a match.
+     * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + private com.google.protobuf.SingleFieldBuilder< + com.google.bigtable.v2.ValueBitmask, + com.google.bigtable.v2.ValueBitmask.Builder, + com.google.bigtable.v2.ValueBitmaskOrBuilder> + internalGetValueBitmaskFilterFieldBuilder() { + if (valueBitmaskFilterBuilder_ == null) { + if (!(filterCase_ == 20)) { + filter_ = com.google.bigtable.v2.ValueBitmask.getDefaultInstance(); + } + valueBitmaskFilterBuilder_ = + new com.google.protobuf.SingleFieldBuilder< + com.google.bigtable.v2.ValueBitmask, + com.google.bigtable.v2.ValueBitmask.Builder, + com.google.bigtable.v2.ValueBitmaskOrBuilder>( + (com.google.bigtable.v2.ValueBitmask) filter_, getParentForChildren(), isClean()); + filter_ = null; + } + filterCase_ = 20; + onChanged(); + return valueBitmaskFilterBuilder_; + } + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.RowFilter) } diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/RowFilterOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/RowFilterOrBuilder.java index d2627aa77c..4a39276bf4 100644 --- a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/RowFilterOrBuilder.java +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/RowFilterOrBuilder.java @@ -842,5 +842,51 @@ public interface RowFilterOrBuilder */ com.google.protobuf.ByteString getApplyLabelTransformerBytes(); + /** + * + * + *
+   * Matches only cells with values that satisfy the condition `(value & mask)
+   * == mask`.
+   * The mask length must exactly match the value length, otherwise the cell
+   * is not considered a match.
+   * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + * + * @return Whether the valueBitmaskFilter field is set. + */ + boolean hasValueBitmaskFilter(); + + /** + * + * + *
+   * Matches only cells with values that satisfy the condition `(value & mask)
+   * == mask`.
+   * The mask length must exactly match the value length, otherwise the cell
+   * is not considered a match.
+   * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + * + * @return The valueBitmaskFilter. + */ + com.google.bigtable.v2.ValueBitmask getValueBitmaskFilter(); + + /** + * + * + *
+   * Matches only cells with values that satisfy the condition `(value & mask)
+   * == mask`.
+   * The mask length must exactly match the value length, otherwise the cell
+   * is not considered a match.
+   * 
+ * + * .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20; + */ + com.google.bigtable.v2.ValueBitmaskOrBuilder getValueBitmaskFilterOrBuilder(); + com.google.bigtable.v2.RowFilter.FilterCase getFilterCase(); } diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueBitmask.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueBitmask.java new file mode 100644 index 0000000000..298515c4d7 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueBitmask.java @@ -0,0 +1,515 @@ +/* + * Copyright 2026 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! +// NO CHECKED-IN PROTOBUF GENCODE +// source: google/bigtable/v2/data.proto +// Protobuf Java Version: 4.33.2 + +package com.google.bigtable.v2; + +/** + * + * + *
+ * Restricts the output to cells whose values match the given bitmask.
+ * 
+ * + * Protobuf type {@code google.bigtable.v2.ValueBitmask} + */ +@com.google.protobuf.Generated +public final class ValueBitmask extends com.google.protobuf.GeneratedMessage + implements + // @@protoc_insertion_point(message_implements:google.bigtable.v2.ValueBitmask) + ValueBitmaskOrBuilder { + private static final long serialVersionUID = 0L; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 2, + /* suffix= */ "", + "ValueBitmask"); + } + + // Use ValueBitmask.newBuilder() to construct. + private ValueBitmask(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + + private ValueBitmask() { + mask_ = com.google.protobuf.ByteString.EMPTY; + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ValueBitmask_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ValueBitmask_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ValueBitmask.class, + com.google.bigtable.v2.ValueBitmask.Builder.class); + } + + public static final int MASK_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString mask_ = com.google.protobuf.ByteString.EMPTY; + + /** + * + * + *
+   * Required. Mask applied to the value.
+   * Evaluated as: `(value & mask) == mask`
+   * The mask length must exactly match the value length, otherwise the cell is
+   * not considered a match.
+   * 
+ * + * bytes mask = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The mask. + */ + @java.lang.Override + public com.google.protobuf.ByteString getMask() { + return mask_; + } + + 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 (!mask_.isEmpty()) { + output.writeBytes(1, mask_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!mask_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream.computeBytesSize(1, mask_); + } + 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.ValueBitmask)) { + return super.equals(obj); + } + com.google.bigtable.v2.ValueBitmask other = (com.google.bigtable.v2.ValueBitmask) obj; + + if (!getMask().equals(other.getMask())) 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) + MASK_FIELD_NUMBER; + hash = (53 * hash) + getMask().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.bigtable.v2.ValueBitmask parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ValueBitmask 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.ValueBitmask parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ValueBitmask 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.ValueBitmask parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.bigtable.v2.ValueBitmask parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.bigtable.v2.ValueBitmask parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ValueBitmask parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ValueBitmask parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ValueBitmask parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.bigtable.v2.ValueBitmask parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.google.bigtable.v2.ValueBitmask parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.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.ValueBitmask 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.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+   * Restricts the output to cells whose values match the given bitmask.
+   * 
+ * + * Protobuf type {@code google.bigtable.v2.ValueBitmask} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder + implements + // @@protoc_insertion_point(builder_implements:google.bigtable.v2.ValueBitmask) + com.google.bigtable.v2.ValueBitmaskOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ValueBitmask_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.bigtable.v2.DataProto + .internal_static_google_bigtable_v2_ValueBitmask_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.bigtable.v2.ValueBitmask.class, + com.google.bigtable.v2.ValueBitmask.Builder.class); + } + + // Construct using com.google.bigtable.v2.ValueBitmask.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + mask_ = 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_ValueBitmask_descriptor; + } + + @java.lang.Override + public com.google.bigtable.v2.ValueBitmask getDefaultInstanceForType() { + return com.google.bigtable.v2.ValueBitmask.getDefaultInstance(); + } + + @java.lang.Override + public com.google.bigtable.v2.ValueBitmask build() { + com.google.bigtable.v2.ValueBitmask result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.bigtable.v2.ValueBitmask buildPartial() { + com.google.bigtable.v2.ValueBitmask result = new com.google.bigtable.v2.ValueBitmask(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.bigtable.v2.ValueBitmask result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.mask_ = mask_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.bigtable.v2.ValueBitmask) { + return mergeFrom((com.google.bigtable.v2.ValueBitmask) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.bigtable.v2.ValueBitmask other) { + if (other == com.google.bigtable.v2.ValueBitmask.getDefaultInstance()) return this; + if (!other.getMask().isEmpty()) { + setMask(other.getMask()); + } + 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: + { + mask_ = 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 mask_ = com.google.protobuf.ByteString.EMPTY; + + /** + * + * + *
+     * Required. Mask applied to the value.
+     * Evaluated as: `(value & mask) == mask`
+     * The mask length must exactly match the value length, otherwise the cell is
+     * not considered a match.
+     * 
+ * + * bytes mask = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The mask. + */ + @java.lang.Override + public com.google.protobuf.ByteString getMask() { + return mask_; + } + + /** + * + * + *
+     * Required. Mask applied to the value.
+     * Evaluated as: `(value & mask) == mask`
+     * The mask length must exactly match the value length, otherwise the cell is
+     * not considered a match.
+     * 
+ * + * bytes mask = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The mask to set. + * @return This builder for chaining. + */ + public Builder setMask(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + mask_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+     * Required. Mask applied to the value.
+     * Evaluated as: `(value & mask) == mask`
+     * The mask length must exactly match the value length, otherwise the cell is
+     * not considered a match.
+     * 
+ * + * bytes mask = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return This builder for chaining. + */ + public Builder clearMask() { + bitField0_ = (bitField0_ & ~0x00000001); + mask_ = getDefaultInstance().getMask(); + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:google.bigtable.v2.ValueBitmask) + } + + // @@protoc_insertion_point(class_scope:google.bigtable.v2.ValueBitmask) + private static final com.google.bigtable.v2.ValueBitmask DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.bigtable.v2.ValueBitmask(); + } + + public static com.google.bigtable.v2.ValueBitmask getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ValueBitmask 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.ValueBitmask getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueBitmaskOrBuilder.java b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueBitmaskOrBuilder.java new file mode 100644 index 0000000000..cc8cf82179 --- /dev/null +++ b/proto-google-cloud-bigtable-v2/src/main/java/com/google/bigtable/v2/ValueBitmaskOrBuilder.java @@ -0,0 +1,44 @@ +/* + * Copyright 2026 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! +// NO CHECKED-IN PROTOBUF GENCODE +// source: google/bigtable/v2/data.proto +// Protobuf Java Version: 4.33.2 + +package com.google.bigtable.v2; + +@com.google.protobuf.Generated +public interface ValueBitmaskOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.bigtable.v2.ValueBitmask) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. Mask applied to the value.
+   * Evaluated as: `(value & mask) == mask`
+   * The mask length must exactly match the value length, otherwise the cell is
+   * not considered a match.
+   * 
+ * + * bytes mask = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The mask. + */ + com.google.protobuf.ByteString getMask(); +} 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 8320a0c22f..010637b001 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 @@ -1,4 +1,4 @@ -// Copyright 2025 Google LLC +// Copyright 2026 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -255,6 +255,15 @@ message ValueRange { } } +// Restricts the output to cells whose values match the given bitmask. +message ValueBitmask { + // Required. Mask applied to the value. + // Evaluated as: `(value & mask) == mask` + // The mask length must exactly match the value length, otherwise the cell is + // not considered a match. + bytes mask = 1 [(google.api.field_behavior) = REQUIRED]; +} + // Takes a row as input and produces an alternate view of the row based on // specified rules. For example, a RowFilter might trim down a row to include // just the cells from columns matching a given regular expression, or might @@ -514,6 +523,12 @@ message RowFilter { // will be applied to separate copies of the input. This may be relaxed in // the future. string apply_label_transformer = 19; + + // Matches only cells with values that satisfy the condition `(value & mask) + // == mask`. + // The mask length must exactly match the value length, otherwise the cell + // is not considered a match. + ValueBitmask value_bitmask_filter = 20; } }