1// Copyright 2020 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Code generated by protoc-gen-go. DO NOT EDIT.
16// versions:
17// 	protoc-gen-go v1.25.0
18// 	protoc        v3.13.0
19// source: google/spanner/v1/keys.proto
20
21package spanner
22
23import (
24	reflect "reflect"
25	sync "sync"
26
27	proto "github.com/golang/protobuf/proto"
28	_ "google.golang.org/genproto/googleapis/api/annotations"
29	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
30	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
31	structpb "google.golang.org/protobuf/types/known/structpb"
32)
33
34const (
35	// Verify that this generated code is sufficiently up-to-date.
36	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
37	// Verify that runtime/protoimpl is sufficiently up-to-date.
38	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
39)
40
41// This is a compile-time assertion that a sufficiently up-to-date version
42// of the legacy proto package is being used.
43const _ = proto.ProtoPackageIsVersion4
44
45// KeyRange represents a range of rows in a table or index.
46//
47// A range has a start key and an end key. These keys can be open or
48// closed, indicating if the range includes rows with that key.
49//
50// Keys are represented by lists, where the ith value in the list
51// corresponds to the ith component of the table or index primary key.
52// Individual values are encoded as described
53// [here][google.spanner.v1.TypeCode].
54//
55// For example, consider the following table definition:
56//
57//     CREATE TABLE UserEvents (
58//       UserName STRING(MAX),
59//       EventDate STRING(10)
60//     ) PRIMARY KEY(UserName, EventDate);
61//
62// The following keys name rows in this table:
63//
64//     ["Bob", "2014-09-23"]
65//     ["Alfred", "2015-06-12"]
66//
67// Since the `UserEvents` table's `PRIMARY KEY` clause names two
68// columns, each `UserEvents` key has two elements; the first is the
69// `UserName`, and the second is the `EventDate`.
70//
71// Key ranges with multiple components are interpreted
72// lexicographically by component using the table or index key's declared
73// sort order. For example, the following range returns all events for
74// user `"Bob"` that occurred in the year 2015:
75//
76//     "start_closed": ["Bob", "2015-01-01"]
77//     "end_closed": ["Bob", "2015-12-31"]
78//
79// Start and end keys can omit trailing key components. This affects the
80// inclusion and exclusion of rows that exactly match the provided key
81// components: if the key is closed, then rows that exactly match the
82// provided components are included; if the key is open, then rows
83// that exactly match are not included.
84//
85// For example, the following range includes all events for `"Bob"` that
86// occurred during and after the year 2000:
87//
88//     "start_closed": ["Bob", "2000-01-01"]
89//     "end_closed": ["Bob"]
90//
91// The next example retrieves all events for `"Bob"`:
92//
93//     "start_closed": ["Bob"]
94//     "end_closed": ["Bob"]
95//
96// To retrieve events before the year 2000:
97//
98//     "start_closed": ["Bob"]
99//     "end_open": ["Bob", "2000-01-01"]
100//
101// The following range includes all rows in the table:
102//
103//     "start_closed": []
104//     "end_closed": []
105//
106// This range returns all users whose `UserName` begins with any
107// character from A to C:
108//
109//     "start_closed": ["A"]
110//     "end_open": ["D"]
111//
112// This range returns all users whose `UserName` begins with B:
113//
114//     "start_closed": ["B"]
115//     "end_open": ["C"]
116//
117// Key ranges honor column sort order. For example, suppose a table is
118// defined as follows:
119//
120//     CREATE TABLE DescendingSortedTable {
121//       Key INT64,
122//       ...
123//     ) PRIMARY KEY(Key DESC);
124//
125// The following range retrieves all rows with key values between 1
126// and 100 inclusive:
127//
128//     "start_closed": ["100"]
129//     "end_closed": ["1"]
130//
131// Note that 100 is passed as the start, and 1 is passed as the end,
132// because `Key` is a descending column in the schema.
133type KeyRange struct {
134	state         protoimpl.MessageState
135	sizeCache     protoimpl.SizeCache
136	unknownFields protoimpl.UnknownFields
137
138	// The start key must be provided. It can be either closed or open.
139	//
140	// Types that are assignable to StartKeyType:
141	//	*KeyRange_StartClosed
142	//	*KeyRange_StartOpen
143	StartKeyType isKeyRange_StartKeyType `protobuf_oneof:"start_key_type"`
144	// The end key must be provided. It can be either closed or open.
145	//
146	// Types that are assignable to EndKeyType:
147	//	*KeyRange_EndClosed
148	//	*KeyRange_EndOpen
149	EndKeyType isKeyRange_EndKeyType `protobuf_oneof:"end_key_type"`
150}
151
152func (x *KeyRange) Reset() {
153	*x = KeyRange{}
154	if protoimpl.UnsafeEnabled {
155		mi := &file_google_spanner_v1_keys_proto_msgTypes[0]
156		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
157		ms.StoreMessageInfo(mi)
158	}
159}
160
161func (x *KeyRange) String() string {
162	return protoimpl.X.MessageStringOf(x)
163}
164
165func (*KeyRange) ProtoMessage() {}
166
167func (x *KeyRange) ProtoReflect() protoreflect.Message {
168	mi := &file_google_spanner_v1_keys_proto_msgTypes[0]
169	if protoimpl.UnsafeEnabled && x != nil {
170		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
171		if ms.LoadMessageInfo() == nil {
172			ms.StoreMessageInfo(mi)
173		}
174		return ms
175	}
176	return mi.MessageOf(x)
177}
178
179// Deprecated: Use KeyRange.ProtoReflect.Descriptor instead.
180func (*KeyRange) Descriptor() ([]byte, []int) {
181	return file_google_spanner_v1_keys_proto_rawDescGZIP(), []int{0}
182}
183
184func (m *KeyRange) GetStartKeyType() isKeyRange_StartKeyType {
185	if m != nil {
186		return m.StartKeyType
187	}
188	return nil
189}
190
191func (x *KeyRange) GetStartClosed() *structpb.ListValue {
192	if x, ok := x.GetStartKeyType().(*KeyRange_StartClosed); ok {
193		return x.StartClosed
194	}
195	return nil
196}
197
198func (x *KeyRange) GetStartOpen() *structpb.ListValue {
199	if x, ok := x.GetStartKeyType().(*KeyRange_StartOpen); ok {
200		return x.StartOpen
201	}
202	return nil
203}
204
205func (m *KeyRange) GetEndKeyType() isKeyRange_EndKeyType {
206	if m != nil {
207		return m.EndKeyType
208	}
209	return nil
210}
211
212func (x *KeyRange) GetEndClosed() *structpb.ListValue {
213	if x, ok := x.GetEndKeyType().(*KeyRange_EndClosed); ok {
214		return x.EndClosed
215	}
216	return nil
217}
218
219func (x *KeyRange) GetEndOpen() *structpb.ListValue {
220	if x, ok := x.GetEndKeyType().(*KeyRange_EndOpen); ok {
221		return x.EndOpen
222	}
223	return nil
224}
225
226type isKeyRange_StartKeyType interface {
227	isKeyRange_StartKeyType()
228}
229
230type KeyRange_StartClosed struct {
231	// If the start is closed, then the range includes all rows whose
232	// first `len(start_closed)` key columns exactly match `start_closed`.
233	StartClosed *structpb.ListValue `protobuf:"bytes,1,opt,name=start_closed,json=startClosed,proto3,oneof"`
234}
235
236type KeyRange_StartOpen struct {
237	// If the start is open, then the range excludes rows whose first
238	// `len(start_open)` key columns exactly match `start_open`.
239	StartOpen *structpb.ListValue `protobuf:"bytes,2,opt,name=start_open,json=startOpen,proto3,oneof"`
240}
241
242func (*KeyRange_StartClosed) isKeyRange_StartKeyType() {}
243
244func (*KeyRange_StartOpen) isKeyRange_StartKeyType() {}
245
246type isKeyRange_EndKeyType interface {
247	isKeyRange_EndKeyType()
248}
249
250type KeyRange_EndClosed struct {
251	// If the end is closed, then the range includes all rows whose
252	// first `len(end_closed)` key columns exactly match `end_closed`.
253	EndClosed *structpb.ListValue `protobuf:"bytes,3,opt,name=end_closed,json=endClosed,proto3,oneof"`
254}
255
256type KeyRange_EndOpen struct {
257	// If the end is open, then the range excludes rows whose first
258	// `len(end_open)` key columns exactly match `end_open`.
259	EndOpen *structpb.ListValue `protobuf:"bytes,4,opt,name=end_open,json=endOpen,proto3,oneof"`
260}
261
262func (*KeyRange_EndClosed) isKeyRange_EndKeyType() {}
263
264func (*KeyRange_EndOpen) isKeyRange_EndKeyType() {}
265
266// `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All
267// the keys are expected to be in the same table or index. The keys need
268// not be sorted in any particular way.
269//
270// If the same key is specified multiple times in the set (for example
271// if two ranges, two keys, or a key and a range overlap), Cloud Spanner
272// behaves as if the key were only specified once.
273type KeySet struct {
274	state         protoimpl.MessageState
275	sizeCache     protoimpl.SizeCache
276	unknownFields protoimpl.UnknownFields
277
278	// A list of specific keys. Entries in `keys` should have exactly as
279	// many elements as there are columns in the primary or index key
280	// with which this `KeySet` is used.  Individual key values are
281	// encoded as described [here][google.spanner.v1.TypeCode].
282	Keys []*structpb.ListValue `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
283	// A list of key ranges. See [KeyRange][google.spanner.v1.KeyRange] for more information about
284	// key range specifications.
285	Ranges []*KeyRange `protobuf:"bytes,2,rep,name=ranges,proto3" json:"ranges,omitempty"`
286	// For convenience `all` can be set to `true` to indicate that this
287	// `KeySet` matches all keys in the table or index. Note that any keys
288	// specified in `keys` or `ranges` are only yielded once.
289	All bool `protobuf:"varint,3,opt,name=all,proto3" json:"all,omitempty"`
290}
291
292func (x *KeySet) Reset() {
293	*x = KeySet{}
294	if protoimpl.UnsafeEnabled {
295		mi := &file_google_spanner_v1_keys_proto_msgTypes[1]
296		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
297		ms.StoreMessageInfo(mi)
298	}
299}
300
301func (x *KeySet) String() string {
302	return protoimpl.X.MessageStringOf(x)
303}
304
305func (*KeySet) ProtoMessage() {}
306
307func (x *KeySet) ProtoReflect() protoreflect.Message {
308	mi := &file_google_spanner_v1_keys_proto_msgTypes[1]
309	if protoimpl.UnsafeEnabled && x != nil {
310		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
311		if ms.LoadMessageInfo() == nil {
312			ms.StoreMessageInfo(mi)
313		}
314		return ms
315	}
316	return mi.MessageOf(x)
317}
318
319// Deprecated: Use KeySet.ProtoReflect.Descriptor instead.
320func (*KeySet) Descriptor() ([]byte, []int) {
321	return file_google_spanner_v1_keys_proto_rawDescGZIP(), []int{1}
322}
323
324func (x *KeySet) GetKeys() []*structpb.ListValue {
325	if x != nil {
326		return x.Keys
327	}
328	return nil
329}
330
331func (x *KeySet) GetRanges() []*KeyRange {
332	if x != nil {
333		return x.Ranges
334	}
335	return nil
336}
337
338func (x *KeySet) GetAll() bool {
339	if x != nil {
340		return x.All
341	}
342	return false
343}
344
345var File_google_spanner_v1_keys_proto protoreflect.FileDescriptor
346
347var file_google_spanner_v1_keys_proto_rawDesc = []byte{
348	0x0a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72,
349	0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11,
350	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76,
351	0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
352	0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
353	0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
354	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x02,
355	0x0a, 0x08, 0x4b, 0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x74,
356	0x61, 0x72, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
357	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
358	0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0b,
359	0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0a, 0x73,
360	0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
361	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
362	0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73,
363	0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x3b, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f,
364	0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
365	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c,
366	0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x43,
367	0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x70, 0x65,
368	0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
369	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61,
370	0x6c, 0x75, 0x65, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x42, 0x10,
371	0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65,
372	0x42, 0x0e, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65,
373	0x22, 0x7f, 0x0a, 0x06, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x6b, 0x65,
374	0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
375	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56,
376	0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x61,
377	0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f,
378	0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
379	0x65, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12,
380	0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c,
381	0x6c, 0x42, 0xaf, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
382	0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x4b, 0x65, 0x79,
383	0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
384	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70,
385	0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f,
386	0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x70, 0x61, 0x6e, 0x6e,
387	0x65, 0x72, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75,
388	0x64, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x47,
389	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x70, 0x61, 0x6e,
390	0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a,
391	0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a,
392	0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
393}
394
395var (
396	file_google_spanner_v1_keys_proto_rawDescOnce sync.Once
397	file_google_spanner_v1_keys_proto_rawDescData = file_google_spanner_v1_keys_proto_rawDesc
398)
399
400func file_google_spanner_v1_keys_proto_rawDescGZIP() []byte {
401	file_google_spanner_v1_keys_proto_rawDescOnce.Do(func() {
402		file_google_spanner_v1_keys_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_spanner_v1_keys_proto_rawDescData)
403	})
404	return file_google_spanner_v1_keys_proto_rawDescData
405}
406
407var file_google_spanner_v1_keys_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
408var file_google_spanner_v1_keys_proto_goTypes = []interface{}{
409	(*KeyRange)(nil),           // 0: google.spanner.v1.KeyRange
410	(*KeySet)(nil),             // 1: google.spanner.v1.KeySet
411	(*structpb.ListValue)(nil), // 2: google.protobuf.ListValue
412}
413var file_google_spanner_v1_keys_proto_depIdxs = []int32{
414	2, // 0: google.spanner.v1.KeyRange.start_closed:type_name -> google.protobuf.ListValue
415	2, // 1: google.spanner.v1.KeyRange.start_open:type_name -> google.protobuf.ListValue
416	2, // 2: google.spanner.v1.KeyRange.end_closed:type_name -> google.protobuf.ListValue
417	2, // 3: google.spanner.v1.KeyRange.end_open:type_name -> google.protobuf.ListValue
418	2, // 4: google.spanner.v1.KeySet.keys:type_name -> google.protobuf.ListValue
419	0, // 5: google.spanner.v1.KeySet.ranges:type_name -> google.spanner.v1.KeyRange
420	6, // [6:6] is the sub-list for method output_type
421	6, // [6:6] is the sub-list for method input_type
422	6, // [6:6] is the sub-list for extension type_name
423	6, // [6:6] is the sub-list for extension extendee
424	0, // [0:6] is the sub-list for field type_name
425}
426
427func init() { file_google_spanner_v1_keys_proto_init() }
428func file_google_spanner_v1_keys_proto_init() {
429	if File_google_spanner_v1_keys_proto != nil {
430		return
431	}
432	if !protoimpl.UnsafeEnabled {
433		file_google_spanner_v1_keys_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
434			switch v := v.(*KeyRange); i {
435			case 0:
436				return &v.state
437			case 1:
438				return &v.sizeCache
439			case 2:
440				return &v.unknownFields
441			default:
442				return nil
443			}
444		}
445		file_google_spanner_v1_keys_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
446			switch v := v.(*KeySet); i {
447			case 0:
448				return &v.state
449			case 1:
450				return &v.sizeCache
451			case 2:
452				return &v.unknownFields
453			default:
454				return nil
455			}
456		}
457	}
458	file_google_spanner_v1_keys_proto_msgTypes[0].OneofWrappers = []interface{}{
459		(*KeyRange_StartClosed)(nil),
460		(*KeyRange_StartOpen)(nil),
461		(*KeyRange_EndClosed)(nil),
462		(*KeyRange_EndOpen)(nil),
463	}
464	type x struct{}
465	out := protoimpl.TypeBuilder{
466		File: protoimpl.DescBuilder{
467			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
468			RawDescriptor: file_google_spanner_v1_keys_proto_rawDesc,
469			NumEnums:      0,
470			NumMessages:   2,
471			NumExtensions: 0,
472			NumServices:   0,
473		},
474		GoTypes:           file_google_spanner_v1_keys_proto_goTypes,
475		DependencyIndexes: file_google_spanner_v1_keys_proto_depIdxs,
476		MessageInfos:      file_google_spanner_v1_keys_proto_msgTypes,
477	}.Build()
478	File_google_spanner_v1_keys_proto = out.File
479	file_google_spanner_v1_keys_proto_rawDesc = nil
480	file_google_spanner_v1_keys_proto_goTypes = nil
481	file_google_spanner_v1_keys_proto_depIdxs = nil
482}
483