1*d5c09012SAndroid Build Coastguard Worker// Copyright 2018 Google Inc. 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.datastore.v1beta3; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/annotations.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/datastore/v1beta3/entity.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/wrappers.proto"; 22*d5c09012SAndroid Build Coastguard Workerimport "google/type/latlng.proto"; 23*d5c09012SAndroid Build Coastguard Worker 24*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Datastore.V1Beta3"; 25*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/datastore/v1beta3;datastore"; 26*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 27*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "QueryProto"; 28*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.datastore.v1beta3"; 29*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\Datastore\\V1beta3"; 30*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::Datastore::V1beta3"; 31*d5c09012SAndroid Build Coastguard Worker 32*d5c09012SAndroid Build Coastguard Worker// The result of fetching an entity from Datastore. 33*d5c09012SAndroid Build Coastguard Workermessage EntityResult { 34*d5c09012SAndroid Build Coastguard Worker // Specifies what data the 'entity' field contains. 35*d5c09012SAndroid Build Coastguard Worker // A `ResultType` is either implied (for example, in `LookupResponse.missing` 36*d5c09012SAndroid Build Coastguard Worker // from `datastore.proto`, it is always `KEY_ONLY`) or specified by context 37*d5c09012SAndroid Build Coastguard Worker // (for example, in message `QueryResultBatch`, field `entity_result_type` 38*d5c09012SAndroid Build Coastguard Worker // specifies a `ResultType` for all the values in field `entity_results`). 39*d5c09012SAndroid Build Coastguard Worker enum ResultType { 40*d5c09012SAndroid Build Coastguard Worker // Unspecified. This value is never used. 41*d5c09012SAndroid Build Coastguard Worker RESULT_TYPE_UNSPECIFIED = 0; 42*d5c09012SAndroid Build Coastguard Worker 43*d5c09012SAndroid Build Coastguard Worker // The key and properties. 44*d5c09012SAndroid Build Coastguard Worker FULL = 1; 45*d5c09012SAndroid Build Coastguard Worker 46*d5c09012SAndroid Build Coastguard Worker // A projected subset of properties. The entity may have no key. 47*d5c09012SAndroid Build Coastguard Worker PROJECTION = 2; 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker // Only the key. 50*d5c09012SAndroid Build Coastguard Worker KEY_ONLY = 3; 51*d5c09012SAndroid Build Coastguard Worker } 52*d5c09012SAndroid Build Coastguard Worker 53*d5c09012SAndroid Build Coastguard Worker // The resulting entity. 54*d5c09012SAndroid Build Coastguard Worker Entity entity = 1; 55*d5c09012SAndroid Build Coastguard Worker 56*d5c09012SAndroid Build Coastguard Worker // The version of the entity, a strictly positive number that monotonically 57*d5c09012SAndroid Build Coastguard Worker // increases with changes to the entity. 58*d5c09012SAndroid Build Coastguard Worker // 59*d5c09012SAndroid Build Coastguard Worker // This field is set for 60*d5c09012SAndroid Build Coastguard Worker // [`FULL`][google.datastore.v1beta3.EntityResult.ResultType.FULL] entity 61*d5c09012SAndroid Build Coastguard Worker // results. 62*d5c09012SAndroid Build Coastguard Worker // 63*d5c09012SAndroid Build Coastguard Worker // For [missing][google.datastore.v1beta3.LookupResponse.missing] entities in 64*d5c09012SAndroid Build Coastguard Worker // `LookupResponse`, this is the version of the snapshot that was used to look 65*d5c09012SAndroid Build Coastguard Worker // up the entity, and it is always set except for eventually consistent reads. 66*d5c09012SAndroid Build Coastguard Worker int64 version = 4; 67*d5c09012SAndroid Build Coastguard Worker 68*d5c09012SAndroid Build Coastguard Worker // A cursor that points to the position after the result entity. 69*d5c09012SAndroid Build Coastguard Worker // Set only when the `EntityResult` is part of a `QueryResultBatch` message. 70*d5c09012SAndroid Build Coastguard Worker bytes cursor = 3; 71*d5c09012SAndroid Build Coastguard Worker} 72*d5c09012SAndroid Build Coastguard Worker 73*d5c09012SAndroid Build Coastguard Worker// A query for entities. 74*d5c09012SAndroid Build Coastguard Workermessage Query { 75*d5c09012SAndroid Build Coastguard Worker // The projection to return. Defaults to returning all properties. 76*d5c09012SAndroid Build Coastguard Worker repeated Projection projection = 2; 77*d5c09012SAndroid Build Coastguard Worker 78*d5c09012SAndroid Build Coastguard Worker // The kinds to query (if empty, returns entities of all kinds). 79*d5c09012SAndroid Build Coastguard Worker // Currently at most 1 kind may be specified. 80*d5c09012SAndroid Build Coastguard Worker repeated KindExpression kind = 3; 81*d5c09012SAndroid Build Coastguard Worker 82*d5c09012SAndroid Build Coastguard Worker // The filter to apply. 83*d5c09012SAndroid Build Coastguard Worker Filter filter = 4; 84*d5c09012SAndroid Build Coastguard Worker 85*d5c09012SAndroid Build Coastguard Worker // The order to apply to the query results (if empty, order is unspecified). 86*d5c09012SAndroid Build Coastguard Worker repeated PropertyOrder order = 5; 87*d5c09012SAndroid Build Coastguard Worker 88*d5c09012SAndroid Build Coastguard Worker // The properties to make distinct. The query results will contain the first 89*d5c09012SAndroid Build Coastguard Worker // result for each distinct combination of values for the given properties 90*d5c09012SAndroid Build Coastguard Worker // (if empty, all results are returned). 91*d5c09012SAndroid Build Coastguard Worker repeated PropertyReference distinct_on = 6; 92*d5c09012SAndroid Build Coastguard Worker 93*d5c09012SAndroid Build Coastguard Worker // A starting point for the query results. Query cursors are 94*d5c09012SAndroid Build Coastguard Worker // returned in query result batches and 95*d5c09012SAndroid Build Coastguard Worker // [can only be used to continue the same 96*d5c09012SAndroid Build Coastguard Worker // query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). 97*d5c09012SAndroid Build Coastguard Worker bytes start_cursor = 7; 98*d5c09012SAndroid Build Coastguard Worker 99*d5c09012SAndroid Build Coastguard Worker // An ending point for the query results. Query cursors are 100*d5c09012SAndroid Build Coastguard Worker // returned in query result batches and 101*d5c09012SAndroid Build Coastguard Worker // [can only be used to limit the same 102*d5c09012SAndroid Build Coastguard Worker // query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). 103*d5c09012SAndroid Build Coastguard Worker bytes end_cursor = 8; 104*d5c09012SAndroid Build Coastguard Worker 105*d5c09012SAndroid Build Coastguard Worker // The number of results to skip. Applies before limit, but after all other 106*d5c09012SAndroid Build Coastguard Worker // constraints. Optional. Must be >= 0 if specified. 107*d5c09012SAndroid Build Coastguard Worker int32 offset = 10; 108*d5c09012SAndroid Build Coastguard Worker 109*d5c09012SAndroid Build Coastguard Worker // The maximum number of results to return. Applies after all other 110*d5c09012SAndroid Build Coastguard Worker // constraints. Optional. 111*d5c09012SAndroid Build Coastguard Worker // Unspecified is interpreted as no limit. 112*d5c09012SAndroid Build Coastguard Worker // Must be >= 0 if specified. 113*d5c09012SAndroid Build Coastguard Worker google.protobuf.Int32Value limit = 12; 114*d5c09012SAndroid Build Coastguard Worker} 115*d5c09012SAndroid Build Coastguard Worker 116*d5c09012SAndroid Build Coastguard Worker// A representation of a kind. 117*d5c09012SAndroid Build Coastguard Workermessage KindExpression { 118*d5c09012SAndroid Build Coastguard Worker // The name of the kind. 119*d5c09012SAndroid Build Coastguard Worker string name = 1; 120*d5c09012SAndroid Build Coastguard Worker} 121*d5c09012SAndroid Build Coastguard Worker 122*d5c09012SAndroid Build Coastguard Worker// A reference to a property relative to the kind expressions. 123*d5c09012SAndroid Build Coastguard Workermessage PropertyReference { 124*d5c09012SAndroid Build Coastguard Worker // The name of the property. 125*d5c09012SAndroid Build Coastguard Worker // If name includes "."s, it may be interpreted as a property name path. 126*d5c09012SAndroid Build Coastguard Worker string name = 2; 127*d5c09012SAndroid Build Coastguard Worker} 128*d5c09012SAndroid Build Coastguard Worker 129*d5c09012SAndroid Build Coastguard Worker// A representation of a property in a projection. 130*d5c09012SAndroid Build Coastguard Workermessage Projection { 131*d5c09012SAndroid Build Coastguard Worker // The property to project. 132*d5c09012SAndroid Build Coastguard Worker PropertyReference property = 1; 133*d5c09012SAndroid Build Coastguard Worker} 134*d5c09012SAndroid Build Coastguard Worker 135*d5c09012SAndroid Build Coastguard Worker// The desired order for a specific property. 136*d5c09012SAndroid Build Coastguard Workermessage PropertyOrder { 137*d5c09012SAndroid Build Coastguard Worker // The sort direction. 138*d5c09012SAndroid Build Coastguard Worker enum Direction { 139*d5c09012SAndroid Build Coastguard Worker // Unspecified. This value must not be used. 140*d5c09012SAndroid Build Coastguard Worker DIRECTION_UNSPECIFIED = 0; 141*d5c09012SAndroid Build Coastguard Worker 142*d5c09012SAndroid Build Coastguard Worker // Ascending. 143*d5c09012SAndroid Build Coastguard Worker ASCENDING = 1; 144*d5c09012SAndroid Build Coastguard Worker 145*d5c09012SAndroid Build Coastguard Worker // Descending. 146*d5c09012SAndroid Build Coastguard Worker DESCENDING = 2; 147*d5c09012SAndroid Build Coastguard Worker } 148*d5c09012SAndroid Build Coastguard Worker 149*d5c09012SAndroid Build Coastguard Worker // The property to order by. 150*d5c09012SAndroid Build Coastguard Worker PropertyReference property = 1; 151*d5c09012SAndroid Build Coastguard Worker 152*d5c09012SAndroid Build Coastguard Worker // The direction to order by. Defaults to `ASCENDING`. 153*d5c09012SAndroid Build Coastguard Worker Direction direction = 2; 154*d5c09012SAndroid Build Coastguard Worker} 155*d5c09012SAndroid Build Coastguard Worker 156*d5c09012SAndroid Build Coastguard Worker// A holder for any type of filter. 157*d5c09012SAndroid Build Coastguard Workermessage Filter { 158*d5c09012SAndroid Build Coastguard Worker // The type of filter. 159*d5c09012SAndroid Build Coastguard Worker oneof filter_type { 160*d5c09012SAndroid Build Coastguard Worker // A composite filter. 161*d5c09012SAndroid Build Coastguard Worker CompositeFilter composite_filter = 1; 162*d5c09012SAndroid Build Coastguard Worker 163*d5c09012SAndroid Build Coastguard Worker // A filter on a property. 164*d5c09012SAndroid Build Coastguard Worker PropertyFilter property_filter = 2; 165*d5c09012SAndroid Build Coastguard Worker } 166*d5c09012SAndroid Build Coastguard Worker} 167*d5c09012SAndroid Build Coastguard Worker 168*d5c09012SAndroid Build Coastguard Worker// A filter that merges multiple other filters using the given operator. 169*d5c09012SAndroid Build Coastguard Workermessage CompositeFilter { 170*d5c09012SAndroid Build Coastguard Worker // A composite filter operator. 171*d5c09012SAndroid Build Coastguard Worker enum Operator { 172*d5c09012SAndroid Build Coastguard Worker // Unspecified. This value must not be used. 173*d5c09012SAndroid Build Coastguard Worker OPERATOR_UNSPECIFIED = 0; 174*d5c09012SAndroid Build Coastguard Worker 175*d5c09012SAndroid Build Coastguard Worker // The results are required to satisfy each of the combined filters. 176*d5c09012SAndroid Build Coastguard Worker AND = 1; 177*d5c09012SAndroid Build Coastguard Worker } 178*d5c09012SAndroid Build Coastguard Worker 179*d5c09012SAndroid Build Coastguard Worker // The operator for combining multiple filters. 180*d5c09012SAndroid Build Coastguard Worker Operator op = 1; 181*d5c09012SAndroid Build Coastguard Worker 182*d5c09012SAndroid Build Coastguard Worker // The list of filters to combine. 183*d5c09012SAndroid Build Coastguard Worker // Must contain at least one filter. 184*d5c09012SAndroid Build Coastguard Worker repeated Filter filters = 2; 185*d5c09012SAndroid Build Coastguard Worker} 186*d5c09012SAndroid Build Coastguard Worker 187*d5c09012SAndroid Build Coastguard Worker// A filter on a specific property. 188*d5c09012SAndroid Build Coastguard Workermessage PropertyFilter { 189*d5c09012SAndroid Build Coastguard Worker // A property filter operator. 190*d5c09012SAndroid Build Coastguard Worker enum Operator { 191*d5c09012SAndroid Build Coastguard Worker // Unspecified. This value must not be used. 192*d5c09012SAndroid Build Coastguard Worker OPERATOR_UNSPECIFIED = 0; 193*d5c09012SAndroid Build Coastguard Worker 194*d5c09012SAndroid Build Coastguard Worker // Less than. 195*d5c09012SAndroid Build Coastguard Worker LESS_THAN = 1; 196*d5c09012SAndroid Build Coastguard Worker 197*d5c09012SAndroid Build Coastguard Worker // Less than or equal. 198*d5c09012SAndroid Build Coastguard Worker LESS_THAN_OR_EQUAL = 2; 199*d5c09012SAndroid Build Coastguard Worker 200*d5c09012SAndroid Build Coastguard Worker // Greater than. 201*d5c09012SAndroid Build Coastguard Worker GREATER_THAN = 3; 202*d5c09012SAndroid Build Coastguard Worker 203*d5c09012SAndroid Build Coastguard Worker // Greater than or equal. 204*d5c09012SAndroid Build Coastguard Worker GREATER_THAN_OR_EQUAL = 4; 205*d5c09012SAndroid Build Coastguard Worker 206*d5c09012SAndroid Build Coastguard Worker // Equal. 207*d5c09012SAndroid Build Coastguard Worker EQUAL = 5; 208*d5c09012SAndroid Build Coastguard Worker 209*d5c09012SAndroid Build Coastguard Worker // Has ancestor. 210*d5c09012SAndroid Build Coastguard Worker HAS_ANCESTOR = 11; 211*d5c09012SAndroid Build Coastguard Worker } 212*d5c09012SAndroid Build Coastguard Worker 213*d5c09012SAndroid Build Coastguard Worker // The property to filter by. 214*d5c09012SAndroid Build Coastguard Worker PropertyReference property = 1; 215*d5c09012SAndroid Build Coastguard Worker 216*d5c09012SAndroid Build Coastguard Worker // The operator to filter by. 217*d5c09012SAndroid Build Coastguard Worker Operator op = 2; 218*d5c09012SAndroid Build Coastguard Worker 219*d5c09012SAndroid Build Coastguard Worker // The value to compare the property to. 220*d5c09012SAndroid Build Coastguard Worker Value value = 3; 221*d5c09012SAndroid Build Coastguard Worker} 222*d5c09012SAndroid Build Coastguard Worker 223*d5c09012SAndroid Build Coastguard Worker// A [GQL 224*d5c09012SAndroid Build Coastguard Worker// query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). 225*d5c09012SAndroid Build Coastguard Workermessage GqlQuery { 226*d5c09012SAndroid Build Coastguard Worker // A string of the format described 227*d5c09012SAndroid Build Coastguard Worker // [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). 228*d5c09012SAndroid Build Coastguard Worker string query_string = 1; 229*d5c09012SAndroid Build Coastguard Worker 230*d5c09012SAndroid Build Coastguard Worker // When false, the query string must not contain any literals and instead must 231*d5c09012SAndroid Build Coastguard Worker // bind all values. For example, 232*d5c09012SAndroid Build Coastguard Worker // `SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while 233*d5c09012SAndroid Build Coastguard Worker // `SELECT * FROM Kind WHERE a = @value` is. 234*d5c09012SAndroid Build Coastguard Worker bool allow_literals = 2; 235*d5c09012SAndroid Build Coastguard Worker 236*d5c09012SAndroid Build Coastguard Worker // For each non-reserved named binding site in the query string, there must be 237*d5c09012SAndroid Build Coastguard Worker // a named parameter with that name, but not necessarily the inverse. 238*d5c09012SAndroid Build Coastguard Worker // 239*d5c09012SAndroid Build Coastguard Worker // Key must match regex `[A-Za-z_$][A-Za-z_$0-9]*`, must not match regex 240*d5c09012SAndroid Build Coastguard Worker // `__.*__`, and must not be `""`. 241*d5c09012SAndroid Build Coastguard Worker map<string, GqlQueryParameter> named_bindings = 5; 242*d5c09012SAndroid Build Coastguard Worker 243*d5c09012SAndroid Build Coastguard Worker // Numbered binding site @1 references the first numbered parameter, 244*d5c09012SAndroid Build Coastguard Worker // effectively using 1-based indexing, rather than the usual 0. 245*d5c09012SAndroid Build Coastguard Worker // 246*d5c09012SAndroid Build Coastguard Worker // For each binding site numbered i in `query_string`, there must be an i-th 247*d5c09012SAndroid Build Coastguard Worker // numbered parameter. The inverse must also be true. 248*d5c09012SAndroid Build Coastguard Worker repeated GqlQueryParameter positional_bindings = 4; 249*d5c09012SAndroid Build Coastguard Worker} 250*d5c09012SAndroid Build Coastguard Worker 251*d5c09012SAndroid Build Coastguard Worker// A binding parameter for a GQL query. 252*d5c09012SAndroid Build Coastguard Workermessage GqlQueryParameter { 253*d5c09012SAndroid Build Coastguard Worker // The type of parameter. 254*d5c09012SAndroid Build Coastguard Worker oneof parameter_type { 255*d5c09012SAndroid Build Coastguard Worker // A value parameter. 256*d5c09012SAndroid Build Coastguard Worker Value value = 2; 257*d5c09012SAndroid Build Coastguard Worker 258*d5c09012SAndroid Build Coastguard Worker // A query cursor. Query cursors are returned in query 259*d5c09012SAndroid Build Coastguard Worker // result batches. 260*d5c09012SAndroid Build Coastguard Worker bytes cursor = 3; 261*d5c09012SAndroid Build Coastguard Worker } 262*d5c09012SAndroid Build Coastguard Worker} 263*d5c09012SAndroid Build Coastguard Worker 264*d5c09012SAndroid Build Coastguard Worker// A batch of results produced by a query. 265*d5c09012SAndroid Build Coastguard Workermessage QueryResultBatch { 266*d5c09012SAndroid Build Coastguard Worker // The possible values for the `more_results` field. 267*d5c09012SAndroid Build Coastguard Worker enum MoreResultsType { 268*d5c09012SAndroid Build Coastguard Worker // Unspecified. This value is never used. 269*d5c09012SAndroid Build Coastguard Worker MORE_RESULTS_TYPE_UNSPECIFIED = 0; 270*d5c09012SAndroid Build Coastguard Worker 271*d5c09012SAndroid Build Coastguard Worker // There may be additional batches to fetch from this query. 272*d5c09012SAndroid Build Coastguard Worker NOT_FINISHED = 1; 273*d5c09012SAndroid Build Coastguard Worker 274*d5c09012SAndroid Build Coastguard Worker // The query is finished, but there may be more results after the limit. 275*d5c09012SAndroid Build Coastguard Worker MORE_RESULTS_AFTER_LIMIT = 2; 276*d5c09012SAndroid Build Coastguard Worker 277*d5c09012SAndroid Build Coastguard Worker // The query is finished, but there may be more results after the end 278*d5c09012SAndroid Build Coastguard Worker // cursor. 279*d5c09012SAndroid Build Coastguard Worker MORE_RESULTS_AFTER_CURSOR = 4; 280*d5c09012SAndroid Build Coastguard Worker 281*d5c09012SAndroid Build Coastguard Worker // The query is finished, and there are no more results. 282*d5c09012SAndroid Build Coastguard Worker NO_MORE_RESULTS = 3; 283*d5c09012SAndroid Build Coastguard Worker } 284*d5c09012SAndroid Build Coastguard Worker 285*d5c09012SAndroid Build Coastguard Worker // The number of results skipped, typically because of an offset. 286*d5c09012SAndroid Build Coastguard Worker int32 skipped_results = 6; 287*d5c09012SAndroid Build Coastguard Worker 288*d5c09012SAndroid Build Coastguard Worker // A cursor that points to the position after the last skipped result. 289*d5c09012SAndroid Build Coastguard Worker // Will be set when `skipped_results` != 0. 290*d5c09012SAndroid Build Coastguard Worker bytes skipped_cursor = 3; 291*d5c09012SAndroid Build Coastguard Worker 292*d5c09012SAndroid Build Coastguard Worker // The result type for every entity in `entity_results`. 293*d5c09012SAndroid Build Coastguard Worker EntityResult.ResultType entity_result_type = 1; 294*d5c09012SAndroid Build Coastguard Worker 295*d5c09012SAndroid Build Coastguard Worker // The results for this batch. 296*d5c09012SAndroid Build Coastguard Worker repeated EntityResult entity_results = 2; 297*d5c09012SAndroid Build Coastguard Worker 298*d5c09012SAndroid Build Coastguard Worker // A cursor that points to the position after the last result in the batch. 299*d5c09012SAndroid Build Coastguard Worker bytes end_cursor = 4; 300*d5c09012SAndroid Build Coastguard Worker 301*d5c09012SAndroid Build Coastguard Worker // The state of the query after the current batch. 302*d5c09012SAndroid Build Coastguard Worker MoreResultsType more_results = 5; 303*d5c09012SAndroid Build Coastguard Worker 304*d5c09012SAndroid Build Coastguard Worker // The version number of the snapshot this batch was returned from. 305*d5c09012SAndroid Build Coastguard Worker // This applies to the range of results from the query's `start_cursor` (or 306*d5c09012SAndroid Build Coastguard Worker // the beginning of the query if no cursor was given) to this batch's 307*d5c09012SAndroid Build Coastguard Worker // `end_cursor` (not the query's `end_cursor`). 308*d5c09012SAndroid Build Coastguard Worker // 309*d5c09012SAndroid Build Coastguard Worker // In a single transaction, subsequent query result batches for the same query 310*d5c09012SAndroid Build Coastguard Worker // can have a greater snapshot version number. Each batch's snapshot version 311*d5c09012SAndroid Build Coastguard Worker // is valid for all preceding batches. 312*d5c09012SAndroid Build Coastguard Worker // The value will be zero for eventually consistent queries. 313*d5c09012SAndroid Build Coastguard Worker int64 snapshot_version = 7; 314*d5c09012SAndroid Build Coastguard Worker} 315