aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/googleapis/google/spanner/v1/keys.proto
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/spanner/v1/keys.proto')
-rw-r--r--third_party/googleapis/google/spanner/v1/keys.proto162
1 files changed, 162 insertions, 0 deletions
diff --git a/third_party/googleapis/google/spanner/v1/keys.proto b/third_party/googleapis/google/spanner/v1/keys.proto
new file mode 100644
index 0000000000..2bfae6314d
--- /dev/null
+++ b/third_party/googleapis/google/spanner/v1/keys.proto
@@ -0,0 +1,162 @@
+// Copyright 2017 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.spanner.v1;
+
+import "google/api/annotations.proto";
+import "google/protobuf/struct.proto";
+
+option csharp_namespace = "Google.Cloud.Spanner.V1";
+option go_package = "google.golang.org/genproto/googleapis/spanner/v1;spanner";
+option java_multiple_files = true;
+option java_outer_classname = "KeysProto";
+option java_package = "com.google.spanner.v1";
+
+
+// KeyRange represents a range of rows in a table or index.
+//
+// A range has a start key and an end key. These keys can be open or
+// closed, indicating if the range includes rows with that key.
+//
+// Keys are represented by lists, where the ith value in the list
+// corresponds to the ith component of the table or index primary key.
+// Individual values are encoded as described [here][google.spanner.v1.TypeCode].
+//
+// For example, consider the following table definition:
+//
+// CREATE TABLE UserEvents (
+// UserName STRING(MAX),
+// EventDate STRING(10)
+// ) PRIMARY KEY(UserName, EventDate);
+//
+// The following keys name rows in this table:
+//
+// ["Bob", "2014-09-23"]
+// ["Alfred", "2015-06-12"]
+//
+// Since the `UserEvents` table's `PRIMARY KEY` clause names two
+// columns, each `UserEvents` key has two elements; the first is the
+// `UserName`, and the second is the `EventDate`.
+//
+// Key ranges with multiple components are interpreted
+// lexicographically by component using the table or index key's declared
+// sort order. For example, the following range returns all events for
+// user `"Bob"` that occurred in the year 2015:
+//
+// "start_closed": ["Bob", "2015-01-01"]
+// "end_closed": ["Bob", "2015-12-31"]
+//
+// Start and end keys can omit trailing key components. This affects the
+// inclusion and exclusion of rows that exactly match the provided key
+// components: if the key is closed, then rows that exactly match the
+// provided components are included; if the key is open, then rows
+// that exactly match are not included.
+//
+// For example, the following range includes all events for `"Bob"` that
+// occurred during and after the year 2000:
+//
+// "start_closed": ["Bob", "2000-01-01"]
+// "end_closed": ["Bob"]
+//
+// The next example retrieves all events for `"Bob"`:
+//
+// "start_closed": ["Bob"]
+// "end_closed": ["Bob"]
+//
+// To retrieve events before the year 2000:
+//
+// "start_closed": ["Bob"]
+// "end_open": ["Bob", "2000-01-01"]
+//
+// The following range includes all rows in the table:
+//
+// "start_closed": []
+// "end_closed": []
+//
+// This range returns all users whose `UserName` begins with any
+// character from A to C:
+//
+// "start_closed": ["A"]
+// "end_open": ["D"]
+//
+// This range returns all users whose `UserName` begins with B:
+//
+// "start_closed": ["B"]
+// "end_open": ["C"]
+//
+// Key ranges honor column sort order. For example, suppose a table is
+// defined as follows:
+//
+// CREATE TABLE DescendingSortedTable {
+// Key INT64,
+// ...
+// ) PRIMARY KEY(Key DESC);
+//
+// The following range retrieves all rows with key values between 1
+// and 100 inclusive:
+//
+// "start_closed": ["100"]
+// "end_closed": ["1"]
+//
+// Note that 100 is passed as the start, and 1 is passed as the end,
+// because `Key` is a descending column in the schema.
+message KeyRange {
+ // The start key must be provided. It can be either closed or open.
+ oneof start_key_type {
+ // If the start is closed, then the range includes all rows whose
+ // first `len(start_closed)` key columns exactly match `start_closed`.
+ google.protobuf.ListValue start_closed = 1;
+
+ // If the start is open, then the range excludes rows whose first
+ // `len(start_open)` key columns exactly match `start_open`.
+ google.protobuf.ListValue start_open = 2;
+ }
+
+ // The end key must be provided. It can be either closed or open.
+ oneof end_key_type {
+ // If the end is closed, then the range includes all rows whose
+ // first `len(end_closed)` key columns exactly match `end_closed`.
+ google.protobuf.ListValue end_closed = 3;
+
+ // If the end is open, then the range excludes rows whose first
+ // `len(end_open)` key columns exactly match `end_open`.
+ google.protobuf.ListValue end_open = 4;
+ }
+}
+
+// `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All
+// the keys are expected to be in the same table or index. The keys need
+// not be sorted in any particular way.
+//
+// If the same key is specified multiple times in the set (for example
+// if two ranges, two keys, or a key and a range overlap), Cloud Spanner
+// behaves as if the key were only specified once.
+message KeySet {
+ // A list of specific keys. Entries in `keys` should have exactly as
+ // many elements as there are columns in the primary or index key
+ // with which this `KeySet` is used. Individual key values are
+ // encoded as described [here][google.spanner.v1.TypeCode].
+ repeated google.protobuf.ListValue keys = 1;
+
+ // A list of key ranges. See [KeyRange][google.spanner.v1.KeyRange] for more information about
+ // key range specifications.
+ repeated KeyRange ranges = 2;
+
+ // For convenience `all` can be set to `true` to indicate that this
+ // `KeySet` matches all keys in the table or index. Note that any keys
+ // specified in `keys` or `ranges` are only yielded once.
+ bool all = 3;
+}