// Copyright 2018 Google Inc. // // 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.v1; import "google/bigtable/v1/bigtable_data.proto"; import "google/rpc/status.proto"; option go_package = "google.golang.org/genproto/googleapis/bigtable/v1;bigtable"; option java_multiple_files = true; option java_outer_classname = "BigtableServiceMessagesProto"; option java_package = "com.google.bigtable.v1"; // Request message for BigtableServer.ReadRows. message ReadRowsRequest { // The unique name of the table from which to read. string table_name = 1; // If neither row_key nor row_range is set, reads from all rows. oneof target { // The key of a single row from which to read. bytes row_key = 2; // A range of rows from which to read. RowRange row_range = 3; // A set of rows from which to read. Entries need not be in order, and will // be deduplicated before reading. // The total serialized size of the set must not exceed 1MB. RowSet row_set = 8; } // The filter to apply to the contents of the specified row(s). If unset, // reads the entire table. RowFilter filter = 5; // By default, rows are read sequentially, producing results which are // guaranteed to arrive in increasing row order. Setting // "allow_row_interleaving" to true allows multiple rows to be interleaved in // the response stream, which increases throughput but breaks this guarantee, // and may force the client to use more memory to buffer partially-received // rows. Cannot be set to true when specifying "num_rows_limit". bool allow_row_interleaving = 6; // The read will terminate after committing to N rows' worth of results. The // default (zero) is to return all results. // Note that "allow_row_interleaving" cannot be set to true when this is set. int64 num_rows_limit = 7; } // Response message for BigtableService.ReadRows. message ReadRowsResponse { // Specifies a piece of a row's contents returned as part of the read // response stream. message Chunk { oneof chunk { // A subset of the data from a particular row. As long as no "reset_row" // is received in between, multiple "row_contents" from the same row are // from the same atomic view of that row, and will be received in the // expected family/column/timestamp order. Family row_contents = 1; // Indicates that the client should drop all previous chunks for // "row_key", as it will be re-read from the beginning. bool reset_row = 2; // Indicates that the client can safely process all previous chunks for // "row_key", as its data has been fully read. bool commit_row = 3; } } // The key of the row for which we're receiving data. // Results will be received in increasing row key order, unless // "allow_row_interleaving" was specified in the request. bytes row_key = 1; // One or more chunks of the row specified by "row_key". repeated Chunk chunks = 2; } // Request message for BigtableService.SampleRowKeys. message SampleRowKeysRequest { // The unique name of the table from which to sample row keys. string table_name = 1; } // Response message for BigtableService.SampleRowKeys. message SampleRowKeysResponse { // Sorted streamed sequence of sample row keys in the table. The table might // have contents before the first row key in the list and after the last one, // but a key containing the empty string indicates "end of table" and will be // the last response given, if present. // Note that row keys in this list may not have ever been written to or read // from, and users should therefore not make any assumptions about the row key // structure that are specific to their use case. bytes row_key = 1; // Approximate total storage space used by all rows in the table which precede // "row_key". Buffering the contents of all rows between two subsequent // samples would require space roughly equal to the difference in their // "offset_bytes" fields. int64 offset_bytes = 2; } // Request message for BigtableService.MutateRow. message MutateRowRequest { // The unique name of the table to which the mutation should be applied. string table_name = 1; // The key of the row to which the mutation should be applied. bytes row_key = 2; // Changes to be atomically applied to the specified row. Entries are applied // in order, meaning that earlier mutations can be masked by later ones. // Must contain at least one entry and at most 100000. repeated Mutation mutations = 3; } // Request message for BigtableService.MutateRows. message MutateRowsRequest { message Entry { // The key of the row to which the `mutations` should be applied. bytes row_key = 1; // Changes to be atomically applied to the specified row. Mutations are // applied in order, meaning that earlier mutations can be masked by // later ones. // At least one mutation must be specified. repeated Mutation mutations = 2; } // The unique name of the table to which the mutations should be applied. string table_name = 1; // The row keys/mutations to be applied in bulk. // Each entry is applied as an atomic mutation, but the entries may be // applied in arbitrary order (even between entries for the same row). // At least one entry must be specified, and in total the entries may // contain at most 100000 mutations. repeated Entry entries = 2; } // Response message for BigtableService.MutateRows. message MutateRowsResponse { // The results for each Entry from the request, presented in the order // in which the entries were originally given. // Depending on how requests are batched during execution, it is possible // for one Entry to fail due to an error with another Entry. In the event // that this occurs, the same error will be reported for both entries. repeated google.rpc.Status statuses = 1; } // Request message for BigtableService.CheckAndMutateRowRequest message CheckAndMutateRowRequest { // The unique name of the table to which the conditional mutation should be // applied. string table_name = 1; // The key of the row to which the conditional mutation should be applied. bytes row_key = 2; // The filter to be applied to the contents of the specified row. Depending // on whether or not any results are yielded, either "true_mutations" or // "false_mutations" will be executed. If unset, checks that the row contains // any values at all. RowFilter predicate_filter = 6; // Changes to be atomically applied to the specified row if "predicate_filter" // yields at least one cell when applied to "row_key". Entries are applied in // order, meaning that earlier mutations can be masked by later ones. // Must contain at least one entry if "false_mutations" is empty, and at most // 100000. repeated Mutation true_mutations = 4; // Changes to be atomically applied to the specified row if "predicate_filter" // does not yield any cells when applied to "row_key". Entries are applied in // order, meaning that earlier mutations can be masked by later ones. // Must contain at least one entry if "true_mutations" is empty, and at most // 100000. repeated Mutation false_mutations = 5; } // Response message for BigtableService.CheckAndMutateRowRequest. message CheckAndMutateRowResponse { // Whether or not the request's "predicate_filter" yielded any results for // the specified row. bool predicate_matched = 1; } // Request message for BigtableService.ReadModifyWriteRowRequest. message ReadModifyWriteRowRequest { // The unique name of the table to which the read/modify/write rules should be // applied. string table_name = 1; // The key of the row to which the read/modify/write rules should be applied. bytes row_key = 2; // Rules specifying how the specified row's contents are to be transformed // into writes. Entries are applied in order, meaning that earlier rules will // affect the results of later ones. repeated ReadModifyWriteRule rules = 3; }