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