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.25.0-devel 18// protoc v3.13.0 19// source: google/spanner/v1/query_plan.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// The kind of [PlanNode][google.spanner.v1.PlanNode]. Distinguishes between the two different kinds of 46// nodes that can appear in a query plan. 47type PlanNode_Kind int32 48 49const ( 50 // Not specified. 51 PlanNode_KIND_UNSPECIFIED PlanNode_Kind = 0 52 // Denotes a Relational operator node in the expression tree. Relational 53 // operators represent iterative processing of rows during query execution. 54 // For example, a `TableScan` operation that reads rows from a table. 55 PlanNode_RELATIONAL PlanNode_Kind = 1 56 // Denotes a Scalar node in the expression tree. Scalar nodes represent 57 // non-iterable entities in the query plan. For example, constants or 58 // arithmetic operators appearing inside predicate expressions or references 59 // to column names. 60 PlanNode_SCALAR PlanNode_Kind = 2 61) 62 63// Enum value maps for PlanNode_Kind. 64var ( 65 PlanNode_Kind_name = map[int32]string{ 66 0: "KIND_UNSPECIFIED", 67 1: "RELATIONAL", 68 2: "SCALAR", 69 } 70 PlanNode_Kind_value = map[string]int32{ 71 "KIND_UNSPECIFIED": 0, 72 "RELATIONAL": 1, 73 "SCALAR": 2, 74 } 75) 76 77func (x PlanNode_Kind) Enum() *PlanNode_Kind { 78 p := new(PlanNode_Kind) 79 *p = x 80 return p 81} 82 83func (x PlanNode_Kind) String() string { 84 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 85} 86 87func (PlanNode_Kind) Descriptor() protoreflect.EnumDescriptor { 88 return file_google_spanner_v1_query_plan_proto_enumTypes[0].Descriptor() 89} 90 91func (PlanNode_Kind) Type() protoreflect.EnumType { 92 return &file_google_spanner_v1_query_plan_proto_enumTypes[0] 93} 94 95func (x PlanNode_Kind) Number() protoreflect.EnumNumber { 96 return protoreflect.EnumNumber(x) 97} 98 99// Deprecated: Use PlanNode_Kind.Descriptor instead. 100func (PlanNode_Kind) EnumDescriptor() ([]byte, []int) { 101 return file_google_spanner_v1_query_plan_proto_rawDescGZIP(), []int{0, 0} 102} 103 104// Node information for nodes appearing in a [QueryPlan.plan_nodes][google.spanner.v1.QueryPlan.plan_nodes]. 105type PlanNode struct { 106 state protoimpl.MessageState 107 sizeCache protoimpl.SizeCache 108 unknownFields protoimpl.UnknownFields 109 110 // The `PlanNode`'s index in [node list][google.spanner.v1.QueryPlan.plan_nodes]. 111 Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` 112 // Used to determine the type of node. May be needed for visualizing 113 // different kinds of nodes differently. For example, If the node is a 114 // [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] node, it will have a condensed representation 115 // which can be used to directly embed a description of the node in its 116 // parent. 117 Kind PlanNode_Kind `protobuf:"varint,2,opt,name=kind,proto3,enum=google.spanner.v1.PlanNode_Kind" json:"kind,omitempty"` 118 // The display name for the node. 119 DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 120 // List of child node `index`es and their relationship to this parent. 121 ChildLinks []*PlanNode_ChildLink `protobuf:"bytes,4,rep,name=child_links,json=childLinks,proto3" json:"child_links,omitempty"` 122 // Condensed representation for [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] nodes. 123 ShortRepresentation *PlanNode_ShortRepresentation `protobuf:"bytes,5,opt,name=short_representation,json=shortRepresentation,proto3" json:"short_representation,omitempty"` 124 // Attributes relevant to the node contained in a group of key-value pairs. 125 // For example, a Parameter Reference node could have the following 126 // information in its metadata: 127 // 128 // { 129 // "parameter_reference": "param1", 130 // "parameter_type": "array" 131 // } 132 Metadata *structpb.Struct `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` 133 // The execution statistics associated with the node, contained in a group of 134 // key-value pairs. Only present if the plan was returned as a result of a 135 // profile query. For example, number of executions, number of rows/time per 136 // execution etc. 137 ExecutionStats *structpb.Struct `protobuf:"bytes,7,opt,name=execution_stats,json=executionStats,proto3" json:"execution_stats,omitempty"` 138} 139 140func (x *PlanNode) Reset() { 141 *x = PlanNode{} 142 if protoimpl.UnsafeEnabled { 143 mi := &file_google_spanner_v1_query_plan_proto_msgTypes[0] 144 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 145 ms.StoreMessageInfo(mi) 146 } 147} 148 149func (x *PlanNode) String() string { 150 return protoimpl.X.MessageStringOf(x) 151} 152 153func (*PlanNode) ProtoMessage() {} 154 155func (x *PlanNode) ProtoReflect() protoreflect.Message { 156 mi := &file_google_spanner_v1_query_plan_proto_msgTypes[0] 157 if protoimpl.UnsafeEnabled && x != nil { 158 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 159 if ms.LoadMessageInfo() == nil { 160 ms.StoreMessageInfo(mi) 161 } 162 return ms 163 } 164 return mi.MessageOf(x) 165} 166 167// Deprecated: Use PlanNode.ProtoReflect.Descriptor instead. 168func (*PlanNode) Descriptor() ([]byte, []int) { 169 return file_google_spanner_v1_query_plan_proto_rawDescGZIP(), []int{0} 170} 171 172func (x *PlanNode) GetIndex() int32 { 173 if x != nil { 174 return x.Index 175 } 176 return 0 177} 178 179func (x *PlanNode) GetKind() PlanNode_Kind { 180 if x != nil { 181 return x.Kind 182 } 183 return PlanNode_KIND_UNSPECIFIED 184} 185 186func (x *PlanNode) GetDisplayName() string { 187 if x != nil { 188 return x.DisplayName 189 } 190 return "" 191} 192 193func (x *PlanNode) GetChildLinks() []*PlanNode_ChildLink { 194 if x != nil { 195 return x.ChildLinks 196 } 197 return nil 198} 199 200func (x *PlanNode) GetShortRepresentation() *PlanNode_ShortRepresentation { 201 if x != nil { 202 return x.ShortRepresentation 203 } 204 return nil 205} 206 207func (x *PlanNode) GetMetadata() *structpb.Struct { 208 if x != nil { 209 return x.Metadata 210 } 211 return nil 212} 213 214func (x *PlanNode) GetExecutionStats() *structpb.Struct { 215 if x != nil { 216 return x.ExecutionStats 217 } 218 return nil 219} 220 221// Contains an ordered list of nodes appearing in the query plan. 222type QueryPlan struct { 223 state protoimpl.MessageState 224 sizeCache protoimpl.SizeCache 225 unknownFields protoimpl.UnknownFields 226 227 // The nodes in the query plan. Plan nodes are returned in pre-order starting 228 // with the plan root. Each [PlanNode][google.spanner.v1.PlanNode]'s `id` corresponds to its index in 229 // `plan_nodes`. 230 PlanNodes []*PlanNode `protobuf:"bytes,1,rep,name=plan_nodes,json=planNodes,proto3" json:"plan_nodes,omitempty"` 231} 232 233func (x *QueryPlan) Reset() { 234 *x = QueryPlan{} 235 if protoimpl.UnsafeEnabled { 236 mi := &file_google_spanner_v1_query_plan_proto_msgTypes[1] 237 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 238 ms.StoreMessageInfo(mi) 239 } 240} 241 242func (x *QueryPlan) String() string { 243 return protoimpl.X.MessageStringOf(x) 244} 245 246func (*QueryPlan) ProtoMessage() {} 247 248func (x *QueryPlan) ProtoReflect() protoreflect.Message { 249 mi := &file_google_spanner_v1_query_plan_proto_msgTypes[1] 250 if protoimpl.UnsafeEnabled && x != nil { 251 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 252 if ms.LoadMessageInfo() == nil { 253 ms.StoreMessageInfo(mi) 254 } 255 return ms 256 } 257 return mi.MessageOf(x) 258} 259 260// Deprecated: Use QueryPlan.ProtoReflect.Descriptor instead. 261func (*QueryPlan) Descriptor() ([]byte, []int) { 262 return file_google_spanner_v1_query_plan_proto_rawDescGZIP(), []int{1} 263} 264 265func (x *QueryPlan) GetPlanNodes() []*PlanNode { 266 if x != nil { 267 return x.PlanNodes 268 } 269 return nil 270} 271 272// Metadata associated with a parent-child relationship appearing in a 273// [PlanNode][google.spanner.v1.PlanNode]. 274type PlanNode_ChildLink struct { 275 state protoimpl.MessageState 276 sizeCache protoimpl.SizeCache 277 unknownFields protoimpl.UnknownFields 278 279 // The node to which the link points. 280 ChildIndex int32 `protobuf:"varint,1,opt,name=child_index,json=childIndex,proto3" json:"child_index,omitempty"` 281 // The type of the link. For example, in Hash Joins this could be used to 282 // distinguish between the build child and the probe child, or in the case 283 // of the child being an output variable, to represent the tag associated 284 // with the output variable. 285 Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` 286 // Only present if the child node is [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] and corresponds 287 // to an output variable of the parent node. The field carries the name of 288 // the output variable. 289 // For example, a `TableScan` operator that reads rows from a table will 290 // have child links to the `SCALAR` nodes representing the output variables 291 // created for each column that is read by the operator. The corresponding 292 // `variable` fields will be set to the variable names assigned to the 293 // columns. 294 Variable string `protobuf:"bytes,3,opt,name=variable,proto3" json:"variable,omitempty"` 295} 296 297func (x *PlanNode_ChildLink) Reset() { 298 *x = PlanNode_ChildLink{} 299 if protoimpl.UnsafeEnabled { 300 mi := &file_google_spanner_v1_query_plan_proto_msgTypes[2] 301 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 302 ms.StoreMessageInfo(mi) 303 } 304} 305 306func (x *PlanNode_ChildLink) String() string { 307 return protoimpl.X.MessageStringOf(x) 308} 309 310func (*PlanNode_ChildLink) ProtoMessage() {} 311 312func (x *PlanNode_ChildLink) ProtoReflect() protoreflect.Message { 313 mi := &file_google_spanner_v1_query_plan_proto_msgTypes[2] 314 if protoimpl.UnsafeEnabled && x != nil { 315 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 316 if ms.LoadMessageInfo() == nil { 317 ms.StoreMessageInfo(mi) 318 } 319 return ms 320 } 321 return mi.MessageOf(x) 322} 323 324// Deprecated: Use PlanNode_ChildLink.ProtoReflect.Descriptor instead. 325func (*PlanNode_ChildLink) Descriptor() ([]byte, []int) { 326 return file_google_spanner_v1_query_plan_proto_rawDescGZIP(), []int{0, 0} 327} 328 329func (x *PlanNode_ChildLink) GetChildIndex() int32 { 330 if x != nil { 331 return x.ChildIndex 332 } 333 return 0 334} 335 336func (x *PlanNode_ChildLink) GetType() string { 337 if x != nil { 338 return x.Type 339 } 340 return "" 341} 342 343func (x *PlanNode_ChildLink) GetVariable() string { 344 if x != nil { 345 return x.Variable 346 } 347 return "" 348} 349 350// Condensed representation of a node and its subtree. Only present for 351// `SCALAR` [PlanNode(s)][google.spanner.v1.PlanNode]. 352type PlanNode_ShortRepresentation struct { 353 state protoimpl.MessageState 354 sizeCache protoimpl.SizeCache 355 unknownFields protoimpl.UnknownFields 356 357 // A string representation of the expression subtree rooted at this node. 358 Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` 359 // A mapping of (subquery variable name) -> (subquery node id) for cases 360 // where the `description` string of this node references a `SCALAR` 361 // subquery contained in the expression subtree rooted at this node. The 362 // referenced `SCALAR` subquery may not necessarily be a direct child of 363 // this node. 364 Subqueries map[string]int32 `protobuf:"bytes,2,rep,name=subqueries,proto3" json:"subqueries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` 365} 366 367func (x *PlanNode_ShortRepresentation) Reset() { 368 *x = PlanNode_ShortRepresentation{} 369 if protoimpl.UnsafeEnabled { 370 mi := &file_google_spanner_v1_query_plan_proto_msgTypes[3] 371 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 372 ms.StoreMessageInfo(mi) 373 } 374} 375 376func (x *PlanNode_ShortRepresentation) String() string { 377 return protoimpl.X.MessageStringOf(x) 378} 379 380func (*PlanNode_ShortRepresentation) ProtoMessage() {} 381 382func (x *PlanNode_ShortRepresentation) ProtoReflect() protoreflect.Message { 383 mi := &file_google_spanner_v1_query_plan_proto_msgTypes[3] 384 if protoimpl.UnsafeEnabled && x != nil { 385 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 386 if ms.LoadMessageInfo() == nil { 387 ms.StoreMessageInfo(mi) 388 } 389 return ms 390 } 391 return mi.MessageOf(x) 392} 393 394// Deprecated: Use PlanNode_ShortRepresentation.ProtoReflect.Descriptor instead. 395func (*PlanNode_ShortRepresentation) Descriptor() ([]byte, []int) { 396 return file_google_spanner_v1_query_plan_proto_rawDescGZIP(), []int{0, 1} 397} 398 399func (x *PlanNode_ShortRepresentation) GetDescription() string { 400 if x != nil { 401 return x.Description 402 } 403 return "" 404} 405 406func (x *PlanNode_ShortRepresentation) GetSubqueries() map[string]int32 { 407 if x != nil { 408 return x.Subqueries 409 } 410 return nil 411} 412 413var File_google_spanner_v1_query_plan_proto protoreflect.FileDescriptor 414 415var file_google_spanner_v1_query_plan_proto_rawDesc = []byte{ 416 0x0a, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 417 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x70, 418 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 419 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 420 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 421 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 422 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 423 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x06, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 424 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 425 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x34, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 426 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 427 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 428 0x65, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 429 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 430 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 431 0x46, 0x0a, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x04, 432 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 433 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 434 0x65, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x0a, 0x63, 0x68, 0x69, 435 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x62, 0x0a, 0x14, 0x73, 0x68, 0x6f, 0x72, 0x74, 436 0x5f, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 437 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 438 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 439 0x64, 0x65, 0x2e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 440 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x70, 441 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x08, 0x6d, 442 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 443 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 444 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 445 0x12, 0x40, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 446 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 447 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 448 0x63, 0x74, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 449 0x74, 0x73, 0x1a, 0x5c, 0x0a, 0x09, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 450 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 451 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 452 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 453 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 454 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 455 0x1a, 0xd7, 0x01, 0x0a, 0x13, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 456 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 457 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 458 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x0a, 0x73, 0x75, 459 0x62, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 460 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 461 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x53, 0x68, 0x6f, 0x72, 462 0x74, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 463 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 464 0x0a, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x53, 465 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 466 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 467 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 468 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x04, 0x4b, 0x69, 469 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 470 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x4c, 0x41, 471 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x43, 0x41, 0x4c, 472 0x41, 0x52, 0x10, 0x02, 0x22, 0x47, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 473 0x6e, 0x12, 0x3a, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 474 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 475 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 476 0x64, 0x65, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0xb4, 0x01, 477 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 478 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 479 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 480 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 481 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 482 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x70, 0x61, 0x6e, 483 0x6e, 0x65, 0x72, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 484 0x75, 0x64, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 485 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x70, 0x61, 486 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 487 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 488 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 489} 490 491var ( 492 file_google_spanner_v1_query_plan_proto_rawDescOnce sync.Once 493 file_google_spanner_v1_query_plan_proto_rawDescData = file_google_spanner_v1_query_plan_proto_rawDesc 494) 495 496func file_google_spanner_v1_query_plan_proto_rawDescGZIP() []byte { 497 file_google_spanner_v1_query_plan_proto_rawDescOnce.Do(func() { 498 file_google_spanner_v1_query_plan_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_spanner_v1_query_plan_proto_rawDescData) 499 }) 500 return file_google_spanner_v1_query_plan_proto_rawDescData 501} 502 503var file_google_spanner_v1_query_plan_proto_enumTypes = make([]protoimpl.EnumInfo, 1) 504var file_google_spanner_v1_query_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 5) 505var file_google_spanner_v1_query_plan_proto_goTypes = []interface{}{ 506 (PlanNode_Kind)(0), // 0: google.spanner.v1.PlanNode.Kind 507 (*PlanNode)(nil), // 1: google.spanner.v1.PlanNode 508 (*QueryPlan)(nil), // 2: google.spanner.v1.QueryPlan 509 (*PlanNode_ChildLink)(nil), // 3: google.spanner.v1.PlanNode.ChildLink 510 (*PlanNode_ShortRepresentation)(nil), // 4: google.spanner.v1.PlanNode.ShortRepresentation 511 nil, // 5: google.spanner.v1.PlanNode.ShortRepresentation.SubqueriesEntry 512 (*structpb.Struct)(nil), // 6: google.protobuf.Struct 513} 514var file_google_spanner_v1_query_plan_proto_depIdxs = []int32{ 515 0, // 0: google.spanner.v1.PlanNode.kind:type_name -> google.spanner.v1.PlanNode.Kind 516 3, // 1: google.spanner.v1.PlanNode.child_links:type_name -> google.spanner.v1.PlanNode.ChildLink 517 4, // 2: google.spanner.v1.PlanNode.short_representation:type_name -> google.spanner.v1.PlanNode.ShortRepresentation 518 6, // 3: google.spanner.v1.PlanNode.metadata:type_name -> google.protobuf.Struct 519 6, // 4: google.spanner.v1.PlanNode.execution_stats:type_name -> google.protobuf.Struct 520 1, // 5: google.spanner.v1.QueryPlan.plan_nodes:type_name -> google.spanner.v1.PlanNode 521 5, // 6: google.spanner.v1.PlanNode.ShortRepresentation.subqueries:type_name -> google.spanner.v1.PlanNode.ShortRepresentation.SubqueriesEntry 522 7, // [7:7] is the sub-list for method output_type 523 7, // [7:7] is the sub-list for method input_type 524 7, // [7:7] is the sub-list for extension type_name 525 7, // [7:7] is the sub-list for extension extendee 526 0, // [0:7] is the sub-list for field type_name 527} 528 529func init() { file_google_spanner_v1_query_plan_proto_init() } 530func file_google_spanner_v1_query_plan_proto_init() { 531 if File_google_spanner_v1_query_plan_proto != nil { 532 return 533 } 534 if !protoimpl.UnsafeEnabled { 535 file_google_spanner_v1_query_plan_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 536 switch v := v.(*PlanNode); i { 537 case 0: 538 return &v.state 539 case 1: 540 return &v.sizeCache 541 case 2: 542 return &v.unknownFields 543 default: 544 return nil 545 } 546 } 547 file_google_spanner_v1_query_plan_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 548 switch v := v.(*QueryPlan); i { 549 case 0: 550 return &v.state 551 case 1: 552 return &v.sizeCache 553 case 2: 554 return &v.unknownFields 555 default: 556 return nil 557 } 558 } 559 file_google_spanner_v1_query_plan_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 560 switch v := v.(*PlanNode_ChildLink); i { 561 case 0: 562 return &v.state 563 case 1: 564 return &v.sizeCache 565 case 2: 566 return &v.unknownFields 567 default: 568 return nil 569 } 570 } 571 file_google_spanner_v1_query_plan_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 572 switch v := v.(*PlanNode_ShortRepresentation); i { 573 case 0: 574 return &v.state 575 case 1: 576 return &v.sizeCache 577 case 2: 578 return &v.unknownFields 579 default: 580 return nil 581 } 582 } 583 } 584 type x struct{} 585 out := protoimpl.TypeBuilder{ 586 File: protoimpl.DescBuilder{ 587 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 588 RawDescriptor: file_google_spanner_v1_query_plan_proto_rawDesc, 589 NumEnums: 1, 590 NumMessages: 5, 591 NumExtensions: 0, 592 NumServices: 0, 593 }, 594 GoTypes: file_google_spanner_v1_query_plan_proto_goTypes, 595 DependencyIndexes: file_google_spanner_v1_query_plan_proto_depIdxs, 596 EnumInfos: file_google_spanner_v1_query_plan_proto_enumTypes, 597 MessageInfos: file_google_spanner_v1_query_plan_proto_msgTypes, 598 }.Build() 599 File_google_spanner_v1_query_plan_proto = out.File 600 file_google_spanner_v1_query_plan_proto_rawDesc = nil 601 file_google_spanner_v1_query_plan_proto_goTypes = nil 602 file_google_spanner_v1_query_plan_proto_depIdxs = nil 603} 604