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.22.0 18// protoc v3.11.2 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 _struct "github.com/golang/protobuf/ptypes/struct" 29 _ "google.golang.org/genproto/googleapis/api/annotations" 30 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 31 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 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() *_struct.ListValue { 192 if x, ok := x.GetStartKeyType().(*KeyRange_StartClosed); ok { 193 return x.StartClosed 194 } 195 return nil 196} 197 198func (x *KeyRange) GetStartOpen() *_struct.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() *_struct.ListValue { 213 if x, ok := x.GetEndKeyType().(*KeyRange_EndClosed); ok { 214 return x.EndClosed 215 } 216 return nil 217} 218 219func (x *KeyRange) GetEndOpen() *_struct.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 *_struct.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 *_struct.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 *_struct.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 *_struct.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 []*_struct.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() []*_struct.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, 0x92, 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 391} 392 393var ( 394 file_google_spanner_v1_keys_proto_rawDescOnce sync.Once 395 file_google_spanner_v1_keys_proto_rawDescData = file_google_spanner_v1_keys_proto_rawDesc 396) 397 398func file_google_spanner_v1_keys_proto_rawDescGZIP() []byte { 399 file_google_spanner_v1_keys_proto_rawDescOnce.Do(func() { 400 file_google_spanner_v1_keys_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_spanner_v1_keys_proto_rawDescData) 401 }) 402 return file_google_spanner_v1_keys_proto_rawDescData 403} 404 405var file_google_spanner_v1_keys_proto_msgTypes = make([]protoimpl.MessageInfo, 2) 406var file_google_spanner_v1_keys_proto_goTypes = []interface{}{ 407 (*KeyRange)(nil), // 0: google.spanner.v1.KeyRange 408 (*KeySet)(nil), // 1: google.spanner.v1.KeySet 409 (*_struct.ListValue)(nil), // 2: google.protobuf.ListValue 410} 411var file_google_spanner_v1_keys_proto_depIdxs = []int32{ 412 2, // 0: google.spanner.v1.KeyRange.start_closed:type_name -> google.protobuf.ListValue 413 2, // 1: google.spanner.v1.KeyRange.start_open:type_name -> google.protobuf.ListValue 414 2, // 2: google.spanner.v1.KeyRange.end_closed:type_name -> google.protobuf.ListValue 415 2, // 3: google.spanner.v1.KeyRange.end_open:type_name -> google.protobuf.ListValue 416 2, // 4: google.spanner.v1.KeySet.keys:type_name -> google.protobuf.ListValue 417 0, // 5: google.spanner.v1.KeySet.ranges:type_name -> google.spanner.v1.KeyRange 418 6, // [6:6] is the sub-list for method output_type 419 6, // [6:6] is the sub-list for method input_type 420 6, // [6:6] is the sub-list for extension type_name 421 6, // [6:6] is the sub-list for extension extendee 422 0, // [0:6] is the sub-list for field type_name 423} 424 425func init() { file_google_spanner_v1_keys_proto_init() } 426func file_google_spanner_v1_keys_proto_init() { 427 if File_google_spanner_v1_keys_proto != nil { 428 return 429 } 430 if !protoimpl.UnsafeEnabled { 431 file_google_spanner_v1_keys_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 432 switch v := v.(*KeyRange); i { 433 case 0: 434 return &v.state 435 case 1: 436 return &v.sizeCache 437 case 2: 438 return &v.unknownFields 439 default: 440 return nil 441 } 442 } 443 file_google_spanner_v1_keys_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 444 switch v := v.(*KeySet); i { 445 case 0: 446 return &v.state 447 case 1: 448 return &v.sizeCache 449 case 2: 450 return &v.unknownFields 451 default: 452 return nil 453 } 454 } 455 } 456 file_google_spanner_v1_keys_proto_msgTypes[0].OneofWrappers = []interface{}{ 457 (*KeyRange_StartClosed)(nil), 458 (*KeyRange_StartOpen)(nil), 459 (*KeyRange_EndClosed)(nil), 460 (*KeyRange_EndOpen)(nil), 461 } 462 type x struct{} 463 out := protoimpl.TypeBuilder{ 464 File: protoimpl.DescBuilder{ 465 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 466 RawDescriptor: file_google_spanner_v1_keys_proto_rawDesc, 467 NumEnums: 0, 468 NumMessages: 2, 469 NumExtensions: 0, 470 NumServices: 0, 471 }, 472 GoTypes: file_google_spanner_v1_keys_proto_goTypes, 473 DependencyIndexes: file_google_spanner_v1_keys_proto_depIdxs, 474 MessageInfos: file_google_spanner_v1_keys_proto_msgTypes, 475 }.Build() 476 File_google_spanner_v1_keys_proto = out.File 477 file_google_spanner_v1_keys_proto_rawDesc = nil 478 file_google_spanner_v1_keys_proto_goTypes = nil 479 file_google_spanner_v1_keys_proto_depIdxs = nil 480} 481