diff --git a/Bigtable/metadata/V2/Data.php b/Bigtable/metadata/V2/Data.php
index f717d8f3ddb..0e1b2046acc 100644
--- a/Bigtable/metadata/V2/Data.php
+++ b/Bigtable/metadata/V2/Data.php
@@ -19,7 +19,7 @@ public static function initOnce() {
\GPBMetadata\Google\Protobuf\Timestamp::initOnce();
\GPBMetadata\Google\Type\Date::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xA2&\x0A\x1Dgoogle/bigtable/v2/data.proto\x12\x12google.bigtable.v2\x1A\x1Egoogle/bigtable/v2/types.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\x1A\x16google/type/date.proto\"@\x0A\x03Row\x12\x0B\x0A\x03key\x18\x01 \x01(\x0C\x12,\x0A\x08families\x18\x02 \x03(\x0B2\x1A.google.bigtable.v2.Family\"C\x0A\x06Family\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12+\x0A\x07columns\x18\x02 \x03(\x0B2\x1A.google.bigtable.v2.Column\"D\x0A\x06Column\x12\x11\x0A\x09qualifier\x18\x01 \x01(\x0C\x12'\x0A\x05cells\x18\x02 \x03(\x0B2\x18.google.bigtable.v2.Cell\"?\x0A\x04Cell\x12\x18\x0A\x10timestamp_micros\x18\x01 \x01(\x03\x12\x0D\x0A\x05value\x18\x02 \x01(\x0C\x12\x0E\x0A\x06labels\x18\x03 \x03(\x09\"\xF4\x02\x0A\x05Value\x12&\x0A\x04type\x18\x07 \x01(\x0B2\x18.google.bigtable.v2.Type\x12\x13\x0A\x09raw_value\x18\x08 \x01(\x0CH\x00\x12\x1E\x0A\x14raw_timestamp_micros\x18\x09 \x01(\x03H\x00\x12\x15\x0A\x0Bbytes_value\x18\x02 \x01(\x0CH\x00\x12\x16\x0A\x0Cstring_value\x18\x03 \x01(\x09H\x00\x12\x13\x0A\x09int_value\x18\x06 \x01(\x03H\x00\x12\x14\x0A\x0Abool_value\x18\x0A \x01(\x08H\x00\x12\x15\x0A\x0Bfloat_value\x18\x0B \x01(\x01H\x00\x125\x0A\x0Ftimestamp_value\x18\x0C \x01(\x0B2\x1A.google.protobuf.TimestampH\x00\x12'\x0A\x0Adate_value\x18\x0D \x01(\x0B2\x11.google.type.DateH\x00\x125\x0A\x0Barray_value\x18\x04 \x01(\x0B2\x1E.google.bigtable.v2.ArrayValueH\x00B\x06\x0A\x04kind\"7\x0A\x0AArrayValue\x12)\x0A\x06values\x18\x01 \x03(\x0B2\x19.google.bigtable.v2.Value\"\x8A\x01\x0A\x08RowRange\x12\x1A\x0A\x10start_key_closed\x18\x01 \x01(\x0CH\x00\x12\x18\x0A\x0Estart_key_open\x18\x02 \x01(\x0CH\x00\x12\x16\x0A\x0Cend_key_open\x18\x03 \x01(\x0CH\x01\x12\x18\x0A\x0Eend_key_closed\x18\x04 \x01(\x0CH\x01B\x0B\x0A\x09start_keyB\x09\x0A\x07end_key\"L\x0A\x06RowSet\x12\x10\x0A\x08row_keys\x18\x01 \x03(\x0C\x120\x0A\x0Arow_ranges\x18\x02 \x03(\x0B2\x1C.google.bigtable.v2.RowRange\"\xC6\x01\x0A\x0BColumnRange\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x12 \x0A\x16start_qualifier_closed\x18\x02 \x01(\x0CH\x00\x12\x1E\x0A\x14start_qualifier_open\x18\x03 \x01(\x0CH\x00\x12\x1E\x0A\x14end_qualifier_closed\x18\x04 \x01(\x0CH\x01\x12\x1C\x0A\x12end_qualifier_open\x18\x05 \x01(\x0CH\x01B\x11\x0A\x0Fstart_qualifierB\x0F\x0A\x0Dend_qualifier\"N\x0A\x0ETimestampRange\x12\x1E\x0A\x16start_timestamp_micros\x18\x01 \x01(\x03\x12\x1C\x0A\x14end_timestamp_micros\x18\x02 \x01(\x03\"\x98\x01\x0A\x0AValueRange\x12\x1C\x0A\x12start_value_closed\x18\x01 \x01(\x0CH\x00\x12\x1A\x0A\x10start_value_open\x18\x02 \x01(\x0CH\x00\x12\x1A\x0A\x10end_value_closed\x18\x03 \x01(\x0CH\x01\x12\x18\x0A\x0Eend_value_open\x18\x04 \x01(\x0CH\x01B\x0D\x0A\x0Bstart_valueB\x0B\x0A\x09end_value\"\xDF\x08\x0A\x09RowFilter\x124\x0A\x05chain\x18\x01 \x01(\x0B2#.google.bigtable.v2.RowFilter.ChainH\x00\x12>\x0A\x0Ainterleave\x18\x02 \x01(\x0B2(.google.bigtable.v2.RowFilter.InterleaveH\x00\x12<\x0A\x09condition\x18\x03 \x01(\x0B2'.google.bigtable.v2.RowFilter.ConditionH\x00\x12\x0E\x0A\x04sink\x18\x10 \x01(\x08H\x00\x12\x19\x0A\x0Fpass_all_filter\x18\x11 \x01(\x08H\x00\x12\x1A\x0A\x10block_all_filter\x18\x12 \x01(\x08H\x00\x12\x1E\x0A\x14row_key_regex_filter\x18\x04 \x01(\x0CH\x00\x12\x1B\x0A\x11row_sample_filter\x18\x0E \x01(\x01H\x00\x12\"\x0A\x18family_name_regex_filter\x18\x05 \x01(\x09H\x00\x12'\x0A\x1Dcolumn_qualifier_regex_filter\x18\x06 \x01(\x0CH\x00\x12>\x0A\x13column_range_filter\x18\x07 \x01(\x0B2\x1F.google.bigtable.v2.ColumnRangeH\x00\x12D\x0A\x16timestamp_range_filter\x18\x08 \x01(\x0B2\".google.bigtable.v2.TimestampRangeH\x00\x12\x1C\x0A\x12value_regex_filter\x18\x09 \x01(\x0CH\x00\x12<\x0A\x12value_range_filter\x18\x0F \x01(\x0B2\x1E.google.bigtable.v2.ValueRangeH\x00\x12%\x0A\x1Bcells_per_row_offset_filter\x18\x0A \x01(\x05H\x00\x12\$\x0A\x1Acells_per_row_limit_filter\x18\x0B \x01(\x05H\x00\x12'\x0A\x1Dcells_per_column_limit_filter\x18\x0C \x01(\x05H\x00\x12!\x0A\x17strip_value_transformer\x18\x0D \x01(\x08H\x00\x12!\x0A\x17apply_label_transformer\x18\x13 \x01(\x09H\x00\x1A7\x0A\x05Chain\x12.\x0A\x07filters\x18\x01 \x03(\x0B2\x1D.google.bigtable.v2.RowFilter\x1A<\x0A\x0AInterleave\x12.\x0A\x07filters\x18\x01 \x03(\x0B2\x1D.google.bigtable.v2.RowFilter\x1A\xAD\x01\x0A\x09Condition\x127\x0A\x10predicate_filter\x18\x01 \x01(\x0B2\x1D.google.bigtable.v2.RowFilter\x122\x0A\x0Btrue_filter\x18\x02 \x01(\x0B2\x1D.google.bigtable.v2.RowFilter\x123\x0A\x0Cfalse_filter\x18\x03 \x01(\x0B2\x1D.google.bigtable.v2.RowFilterB\x08\x0A\x06filter\"\xAD\x08\x0A\x08Mutation\x128\x0A\x08set_cell\x18\x01 \x01(\x0B2\$.google.bigtable.v2.Mutation.SetCellH\x00\x12=\x0A\x0Badd_to_cell\x18\x05 \x01(\x0B2&.google.bigtable.v2.Mutation.AddToCellH\x00\x12A\x0A\x0Dmerge_to_cell\x18\x06 \x01(\x0B2(.google.bigtable.v2.Mutation.MergeToCellH\x00\x12K\x0A\x12delete_from_column\x18\x02 \x01(\x0B2-.google.bigtable.v2.Mutation.DeleteFromColumnH\x00\x12K\x0A\x12delete_from_family\x18\x03 \x01(\x0B2-.google.bigtable.v2.Mutation.DeleteFromFamilyH\x00\x12E\x0A\x0Fdelete_from_row\x18\x04 \x01(\x0B2*.google.bigtable.v2.Mutation.DeleteFromRowH\x00\x1Aa\x0A\x07SetCell\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x12\x18\x0A\x10column_qualifier\x18\x02 \x01(\x0C\x12\x18\x0A\x10timestamp_micros\x18\x03 \x01(\x03\x12\x0D\x0A\x05value\x18\x04 \x01(\x0C\x1A\xAD\x01\x0A\x09AddToCell\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x123\x0A\x10column_qualifier\x18\x02 \x01(\x0B2\x19.google.bigtable.v2.Value\x12,\x0A\x09timestamp\x18\x03 \x01(\x0B2\x19.google.bigtable.v2.Value\x12(\x0A\x05input\x18\x04 \x01(\x0B2\x19.google.bigtable.v2.Value\x1A\xAF\x01\x0A\x0BMergeToCell\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x123\x0A\x10column_qualifier\x18\x02 \x01(\x0B2\x19.google.bigtable.v2.Value\x12,\x0A\x09timestamp\x18\x03 \x01(\x0B2\x19.google.bigtable.v2.Value\x12(\x0A\x05input\x18\x04 \x01(\x0B2\x19.google.bigtable.v2.Value\x1Ay\x0A\x10DeleteFromColumn\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x12\x18\x0A\x10column_qualifier\x18\x02 \x01(\x0C\x126\x0A\x0Atime_range\x18\x03 \x01(\x0B2\".google.bigtable.v2.TimestampRange\x1A'\x0A\x10DeleteFromFamily\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x1A\x0F\x0A\x0DDeleteFromRowB\x0A\x0A\x08mutation\"\x80\x01\x0A\x13ReadModifyWriteRule\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x12\x18\x0A\x10column_qualifier\x18\x02 \x01(\x0C\x12\x16\x0A\x0Cappend_value\x18\x03 \x01(\x0CH\x00\x12\x1A\x0A\x10increment_amount\x18\x04 \x01(\x03H\x00B\x06\x0A\x04rule\"B\x0A\x0FStreamPartition\x12/\x0A\x09row_range\x18\x01 \x01(\x0B2\x1C.google.bigtable.v2.RowRange\"W\x0A\x18StreamContinuationTokens\x12;\x0A\x06tokens\x18\x01 \x03(\x0B2+.google.bigtable.v2.StreamContinuationToken\"`\x0A\x17StreamContinuationToken\x126\x0A\x09partition\x18\x01 \x01(\x0B2#.google.bigtable.v2.StreamPartition\x12\x0D\x0A\x05token\x18\x02 \x01(\x09\"\x0D\x0A\x0BProtoFormat\"F\x0A\x0EColumnMetadata\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12&\x0A\x04type\x18\x02 \x01(\x0B2\x18.google.bigtable.v2.Type\"B\x0A\x0BProtoSchema\x123\x0A\x07columns\x18\x01 \x03(\x0B2\".google.bigtable.v2.ColumnMetadata\"V\x0A\x11ResultSetMetadata\x127\x0A\x0Cproto_schema\x18\x01 \x01(\x0B2\x1F.google.bigtable.v2.ProtoSchemaH\x00B\x08\x0A\x06schema\"6\x0A\x09ProtoRows\x12)\x0A\x06values\x18\x02 \x03(\x0B2\x19.google.bigtable.v2.Value\"\$\x0A\x0EProtoRowsBatch\x12\x12\x0A\x0Abatch_data\x18\x01 \x01(\x0C\"\xD5\x01\x0A\x10PartialResultSet\x12>\x0A\x10proto_rows_batch\x18\x03 \x01(\x0B2\".google.bigtable.v2.ProtoRowsBatchH\x00\x12\x1B\x0A\x0Ebatch_checksum\x18\x06 \x01(\x0DH\x01\x88\x01\x01\x12\x14\x0A\x0Cresume_token\x18\x05 \x01(\x0C\x12\x0D\x0A\x05reset\x18\x07 \x01(\x08\x12\x1C\x0A\x14estimated_batch_size\x18\x04 \x01(\x05B\x0E\x0A\x0Cpartial_rowsB\x11\x0A\x0F_batch_checksum\"L\x0A\x0BIdempotency\x12\x0D\x0A\x05token\x18\x01 \x01(\x0C\x12.\x0A\x0Astart_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\xB3\x01\x0A\x16com.google.bigtable.v2B\x09DataProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xAA\x02\x18Google.Cloud.Bigtable.V2\xCA\x02\x18Google\\Cloud\\Bigtable\\V2\xEA\x02\x1BGoogle::Cloud::Bigtable::V2b\x06proto3"
+ "\x0A\x87'\x0A\x1Dgoogle/bigtable/v2/data.proto\x12\x12google.bigtable.v2\x1A\x1Egoogle/bigtable/v2/types.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\x1A\x16google/type/date.proto\"@\x0A\x03Row\x12\x0B\x0A\x03key\x18\x01 \x01(\x0C\x12,\x0A\x08families\x18\x02 \x03(\x0B2\x1A.google.bigtable.v2.Family\"C\x0A\x06Family\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12+\x0A\x07columns\x18\x02 \x03(\x0B2\x1A.google.bigtable.v2.Column\"D\x0A\x06Column\x12\x11\x0A\x09qualifier\x18\x01 \x01(\x0C\x12'\x0A\x05cells\x18\x02 \x03(\x0B2\x18.google.bigtable.v2.Cell\"?\x0A\x04Cell\x12\x18\x0A\x10timestamp_micros\x18\x01 \x01(\x03\x12\x0D\x0A\x05value\x18\x02 \x01(\x0C\x12\x0E\x0A\x06labels\x18\x03 \x03(\x09\"\xF4\x02\x0A\x05Value\x12&\x0A\x04type\x18\x07 \x01(\x0B2\x18.google.bigtable.v2.Type\x12\x13\x0A\x09raw_value\x18\x08 \x01(\x0CH\x00\x12\x1E\x0A\x14raw_timestamp_micros\x18\x09 \x01(\x03H\x00\x12\x15\x0A\x0Bbytes_value\x18\x02 \x01(\x0CH\x00\x12\x16\x0A\x0Cstring_value\x18\x03 \x01(\x09H\x00\x12\x13\x0A\x09int_value\x18\x06 \x01(\x03H\x00\x12\x14\x0A\x0Abool_value\x18\x0A \x01(\x08H\x00\x12\x15\x0A\x0Bfloat_value\x18\x0B \x01(\x01H\x00\x125\x0A\x0Ftimestamp_value\x18\x0C \x01(\x0B2\x1A.google.protobuf.TimestampH\x00\x12'\x0A\x0Adate_value\x18\x0D \x01(\x0B2\x11.google.type.DateH\x00\x125\x0A\x0Barray_value\x18\x04 \x01(\x0B2\x1E.google.bigtable.v2.ArrayValueH\x00B\x06\x0A\x04kind\"7\x0A\x0AArrayValue\x12)\x0A\x06values\x18\x01 \x03(\x0B2\x19.google.bigtable.v2.Value\"\x8A\x01\x0A\x08RowRange\x12\x1A\x0A\x10start_key_closed\x18\x01 \x01(\x0CH\x00\x12\x18\x0A\x0Estart_key_open\x18\x02 \x01(\x0CH\x00\x12\x16\x0A\x0Cend_key_open\x18\x03 \x01(\x0CH\x01\x12\x18\x0A\x0Eend_key_closed\x18\x04 \x01(\x0CH\x01B\x0B\x0A\x09start_keyB\x09\x0A\x07end_key\"L\x0A\x06RowSet\x12\x10\x0A\x08row_keys\x18\x01 \x03(\x0C\x120\x0A\x0Arow_ranges\x18\x02 \x03(\x0B2\x1C.google.bigtable.v2.RowRange\"\xC6\x01\x0A\x0BColumnRange\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x12 \x0A\x16start_qualifier_closed\x18\x02 \x01(\x0CH\x00\x12\x1E\x0A\x14start_qualifier_open\x18\x03 \x01(\x0CH\x00\x12\x1E\x0A\x14end_qualifier_closed\x18\x04 \x01(\x0CH\x01\x12\x1C\x0A\x12end_qualifier_open\x18\x05 \x01(\x0CH\x01B\x11\x0A\x0Fstart_qualifierB\x0F\x0A\x0Dend_qualifier\"N\x0A\x0ETimestampRange\x12\x1E\x0A\x16start_timestamp_micros\x18\x01 \x01(\x03\x12\x1C\x0A\x14end_timestamp_micros\x18\x02 \x01(\x03\"\x98\x01\x0A\x0AValueRange\x12\x1C\x0A\x12start_value_closed\x18\x01 \x01(\x0CH\x00\x12\x1A\x0A\x10start_value_open\x18\x02 \x01(\x0CH\x00\x12\x1A\x0A\x10end_value_closed\x18\x03 \x01(\x0CH\x01\x12\x18\x0A\x0Eend_value_open\x18\x04 \x01(\x0CH\x01B\x0D\x0A\x0Bstart_valueB\x0B\x0A\x09end_value\"!\x0A\x0CValueBitmask\x12\x11\x0A\x04mask\x18\x01 \x01(\x0CB\x03\xE0A\x02\"\xA1\x09\x0A\x09RowFilter\x124\x0A\x05chain\x18\x01 \x01(\x0B2#.google.bigtable.v2.RowFilter.ChainH\x00\x12>\x0A\x0Ainterleave\x18\x02 \x01(\x0B2(.google.bigtable.v2.RowFilter.InterleaveH\x00\x12<\x0A\x09condition\x18\x03 \x01(\x0B2'.google.bigtable.v2.RowFilter.ConditionH\x00\x12\x0E\x0A\x04sink\x18\x10 \x01(\x08H\x00\x12\x19\x0A\x0Fpass_all_filter\x18\x11 \x01(\x08H\x00\x12\x1A\x0A\x10block_all_filter\x18\x12 \x01(\x08H\x00\x12\x1E\x0A\x14row_key_regex_filter\x18\x04 \x01(\x0CH\x00\x12\x1B\x0A\x11row_sample_filter\x18\x0E \x01(\x01H\x00\x12\"\x0A\x18family_name_regex_filter\x18\x05 \x01(\x09H\x00\x12'\x0A\x1Dcolumn_qualifier_regex_filter\x18\x06 \x01(\x0CH\x00\x12>\x0A\x13column_range_filter\x18\x07 \x01(\x0B2\x1F.google.bigtable.v2.ColumnRangeH\x00\x12D\x0A\x16timestamp_range_filter\x18\x08 \x01(\x0B2\".google.bigtable.v2.TimestampRangeH\x00\x12\x1C\x0A\x12value_regex_filter\x18\x09 \x01(\x0CH\x00\x12<\x0A\x12value_range_filter\x18\x0F \x01(\x0B2\x1E.google.bigtable.v2.ValueRangeH\x00\x12%\x0A\x1Bcells_per_row_offset_filter\x18\x0A \x01(\x05H\x00\x12\$\x0A\x1Acells_per_row_limit_filter\x18\x0B \x01(\x05H\x00\x12'\x0A\x1Dcells_per_column_limit_filter\x18\x0C \x01(\x05H\x00\x12!\x0A\x17strip_value_transformer\x18\x0D \x01(\x08H\x00\x12!\x0A\x17apply_label_transformer\x18\x13 \x01(\x09H\x00\x12@\x0A\x14value_bitmask_filter\x18\x14 \x01(\x0B2 .google.bigtable.v2.ValueBitmaskH\x00\x1A7\x0A\x05Chain\x12.\x0A\x07filters\x18\x01 \x03(\x0B2\x1D.google.bigtable.v2.RowFilter\x1A<\x0A\x0AInterleave\x12.\x0A\x07filters\x18\x01 \x03(\x0B2\x1D.google.bigtable.v2.RowFilter\x1A\xAD\x01\x0A\x09Condition\x127\x0A\x10predicate_filter\x18\x01 \x01(\x0B2\x1D.google.bigtable.v2.RowFilter\x122\x0A\x0Btrue_filter\x18\x02 \x01(\x0B2\x1D.google.bigtable.v2.RowFilter\x123\x0A\x0Cfalse_filter\x18\x03 \x01(\x0B2\x1D.google.bigtable.v2.RowFilterB\x08\x0A\x06filter\"\xAD\x08\x0A\x08Mutation\x128\x0A\x08set_cell\x18\x01 \x01(\x0B2\$.google.bigtable.v2.Mutation.SetCellH\x00\x12=\x0A\x0Badd_to_cell\x18\x05 \x01(\x0B2&.google.bigtable.v2.Mutation.AddToCellH\x00\x12A\x0A\x0Dmerge_to_cell\x18\x06 \x01(\x0B2(.google.bigtable.v2.Mutation.MergeToCellH\x00\x12K\x0A\x12delete_from_column\x18\x02 \x01(\x0B2-.google.bigtable.v2.Mutation.DeleteFromColumnH\x00\x12K\x0A\x12delete_from_family\x18\x03 \x01(\x0B2-.google.bigtable.v2.Mutation.DeleteFromFamilyH\x00\x12E\x0A\x0Fdelete_from_row\x18\x04 \x01(\x0B2*.google.bigtable.v2.Mutation.DeleteFromRowH\x00\x1Aa\x0A\x07SetCell\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x12\x18\x0A\x10column_qualifier\x18\x02 \x01(\x0C\x12\x18\x0A\x10timestamp_micros\x18\x03 \x01(\x03\x12\x0D\x0A\x05value\x18\x04 \x01(\x0C\x1A\xAD\x01\x0A\x09AddToCell\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x123\x0A\x10column_qualifier\x18\x02 \x01(\x0B2\x19.google.bigtable.v2.Value\x12,\x0A\x09timestamp\x18\x03 \x01(\x0B2\x19.google.bigtable.v2.Value\x12(\x0A\x05input\x18\x04 \x01(\x0B2\x19.google.bigtable.v2.Value\x1A\xAF\x01\x0A\x0BMergeToCell\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x123\x0A\x10column_qualifier\x18\x02 \x01(\x0B2\x19.google.bigtable.v2.Value\x12,\x0A\x09timestamp\x18\x03 \x01(\x0B2\x19.google.bigtable.v2.Value\x12(\x0A\x05input\x18\x04 \x01(\x0B2\x19.google.bigtable.v2.Value\x1Ay\x0A\x10DeleteFromColumn\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x12\x18\x0A\x10column_qualifier\x18\x02 \x01(\x0C\x126\x0A\x0Atime_range\x18\x03 \x01(\x0B2\".google.bigtable.v2.TimestampRange\x1A'\x0A\x10DeleteFromFamily\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x1A\x0F\x0A\x0DDeleteFromRowB\x0A\x0A\x08mutation\"\x80\x01\x0A\x13ReadModifyWriteRule\x12\x13\x0A\x0Bfamily_name\x18\x01 \x01(\x09\x12\x18\x0A\x10column_qualifier\x18\x02 \x01(\x0C\x12\x16\x0A\x0Cappend_value\x18\x03 \x01(\x0CH\x00\x12\x1A\x0A\x10increment_amount\x18\x04 \x01(\x03H\x00B\x06\x0A\x04rule\"B\x0A\x0FStreamPartition\x12/\x0A\x09row_range\x18\x01 \x01(\x0B2\x1C.google.bigtable.v2.RowRange\"W\x0A\x18StreamContinuationTokens\x12;\x0A\x06tokens\x18\x01 \x03(\x0B2+.google.bigtable.v2.StreamContinuationToken\"`\x0A\x17StreamContinuationToken\x126\x0A\x09partition\x18\x01 \x01(\x0B2#.google.bigtable.v2.StreamPartition\x12\x0D\x0A\x05token\x18\x02 \x01(\x09\"\x0D\x0A\x0BProtoFormat\"F\x0A\x0EColumnMetadata\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12&\x0A\x04type\x18\x02 \x01(\x0B2\x18.google.bigtable.v2.Type\"B\x0A\x0BProtoSchema\x123\x0A\x07columns\x18\x01 \x03(\x0B2\".google.bigtable.v2.ColumnMetadata\"V\x0A\x11ResultSetMetadata\x127\x0A\x0Cproto_schema\x18\x01 \x01(\x0B2\x1F.google.bigtable.v2.ProtoSchemaH\x00B\x08\x0A\x06schema\"6\x0A\x09ProtoRows\x12)\x0A\x06values\x18\x02 \x03(\x0B2\x19.google.bigtable.v2.Value\"\$\x0A\x0EProtoRowsBatch\x12\x12\x0A\x0Abatch_data\x18\x01 \x01(\x0C\"\xD5\x01\x0A\x10PartialResultSet\x12>\x0A\x10proto_rows_batch\x18\x03 \x01(\x0B2\".google.bigtable.v2.ProtoRowsBatchH\x00\x12\x1B\x0A\x0Ebatch_checksum\x18\x06 \x01(\x0DH\x01\x88\x01\x01\x12\x14\x0A\x0Cresume_token\x18\x05 \x01(\x0C\x12\x0D\x0A\x05reset\x18\x07 \x01(\x08\x12\x1C\x0A\x14estimated_batch_size\x18\x04 \x01(\x05B\x0E\x0A\x0Cpartial_rowsB\x11\x0A\x0F_batch_checksum\"L\x0A\x0BIdempotency\x12\x0D\x0A\x05token\x18\x01 \x01(\x0C\x12.\x0A\x0Astart_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\xB3\x01\x0A\x16com.google.bigtable.v2B\x09DataProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xAA\x02\x18Google.Cloud.Bigtable.V2\xCA\x02\x18Google\\Cloud\\Bigtable\\V2\xEA\x02\x1BGoogle::Cloud::Bigtable::V2b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/Bigtable/src/V2/RowFilter.php b/Bigtable/src/V2/RowFilter.php
index c728a28a7fe..3ba593fcdb2 100644
--- a/Bigtable/src/V2/RowFilter.php
+++ b/Bigtable/src/V2/RowFilter.php
@@ -186,6 +186,11 @@ class RowFilter extends \Google\Protobuf\Internal\Message
* an Interleave to contain multiple `apply_label_transformers`, as they
* will be applied to separate copies of the input. This may be relaxed in
* the future.
+ * @type \Google\Cloud\Bigtable\V2\ValueBitmask $value_bitmask_filter
+ * 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.
* }
*/
public function __construct($data = NULL) {
@@ -978,6 +983,43 @@ public function setApplyLabelTransformer($var)
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.
+ *
+ * Generated from protobuf field .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20;
+ * @return \Google\Cloud\Bigtable\V2\ValueBitmask|null
+ */
+ public function getValueBitmaskFilter()
+ {
+ return $this->readOneof(20);
+ }
+
+ public function hasValueBitmaskFilter()
+ {
+ return $this->hasOneof(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.
+ *
+ * Generated from protobuf field .google.bigtable.v2.ValueBitmask value_bitmask_filter = 20;
+ * @param \Google\Cloud\Bigtable\V2\ValueBitmask $var
+ * @return $this
+ */
+ public function setValueBitmaskFilter($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Bigtable\V2\ValueBitmask::class);
+ $this->writeOneof(20, $var);
+
+ return $this;
+ }
+
/**
* @return string
*/
diff --git a/Bigtable/src/V2/ValueBitmask.php b/Bigtable/src/V2/ValueBitmask.php
new file mode 100644
index 00000000000..77333c89821
--- /dev/null
+++ b/Bigtable/src/V2/ValueBitmask.php
@@ -0,0 +1,79 @@
+google.bigtable.v2.ValueBitmask
+ */
+class ValueBitmask extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * 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.
+ *
+ * Generated from protobuf field bytes mask = 1 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $mask = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $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.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Bigtable\V2\Data::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * 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.
+ *
+ * Generated from protobuf field bytes mask = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @return string
+ */
+ public function getMask()
+ {
+ return $this->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.
+ *
+ * Generated from protobuf field bytes mask = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @param string $var
+ * @return $this
+ */
+ public function setMask($var)
+ {
+ GPBUtil::checkString($var, False);
+ $this->mask = $var;
+
+ return $this;
+ }
+
+}
+