1// Code generated by protoc-gen-go. DO NOT EDIT. 2// source: google/spanner/v1/query_plan.proto 3 4package spanner 5 6import ( 7 fmt "fmt" 8 math "math" 9 10 proto "github.com/golang/protobuf/proto" 11 _struct "github.com/golang/protobuf/ptypes/struct" 12 _ "google.golang.org/genproto/googleapis/api/annotations" 13) 14 15// Reference imports to suppress errors if they are not otherwise used. 16var _ = proto.Marshal 17var _ = fmt.Errorf 18var _ = math.Inf 19 20// This is a compile-time assertion to ensure that this generated file 21// is compatible with the proto package it is being compiled against. 22// A compilation error at this line likely means your copy of the 23// proto package needs to be updated. 24const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package 25 26// The kind of [PlanNode][google.spanner.v1.PlanNode]. Distinguishes between the two different kinds of 27// nodes that can appear in a query plan. 28type PlanNode_Kind int32 29 30const ( 31 // Not specified. 32 PlanNode_KIND_UNSPECIFIED PlanNode_Kind = 0 33 // Denotes a Relational operator node in the expression tree. Relational 34 // operators represent iterative processing of rows during query execution. 35 // For example, a `TableScan` operation that reads rows from a table. 36 PlanNode_RELATIONAL PlanNode_Kind = 1 37 // Denotes a Scalar node in the expression tree. Scalar nodes represent 38 // non-iterable entities in the query plan. For example, constants or 39 // arithmetic operators appearing inside predicate expressions or references 40 // to column names. 41 PlanNode_SCALAR PlanNode_Kind = 2 42) 43 44var PlanNode_Kind_name = map[int32]string{ 45 0: "KIND_UNSPECIFIED", 46 1: "RELATIONAL", 47 2: "SCALAR", 48} 49 50var PlanNode_Kind_value = map[string]int32{ 51 "KIND_UNSPECIFIED": 0, 52 "RELATIONAL": 1, 53 "SCALAR": 2, 54} 55 56func (x PlanNode_Kind) String() string { 57 return proto.EnumName(PlanNode_Kind_name, int32(x)) 58} 59 60func (PlanNode_Kind) EnumDescriptor() ([]byte, []int) { 61 return fileDescriptor_14e5ab0c0507d181, []int{0, 0} 62} 63 64// Node information for nodes appearing in a [QueryPlan.plan_nodes][google.spanner.v1.QueryPlan.plan_nodes]. 65type PlanNode struct { 66 // The `PlanNode`'s index in [node list][google.spanner.v1.QueryPlan.plan_nodes]. 67 Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` 68 // Used to determine the type of node. May be needed for visualizing 69 // different kinds of nodes differently. For example, If the node is a 70 // [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] node, it will have a condensed representation 71 // which can be used to directly embed a description of the node in its 72 // parent. 73 Kind PlanNode_Kind `protobuf:"varint,2,opt,name=kind,proto3,enum=google.spanner.v1.PlanNode_Kind" json:"kind,omitempty"` 74 // The display name for the node. 75 DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 76 // List of child node `index`es and their relationship to this parent. 77 ChildLinks []*PlanNode_ChildLink `protobuf:"bytes,4,rep,name=child_links,json=childLinks,proto3" json:"child_links,omitempty"` 78 // Condensed representation for [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] nodes. 79 ShortRepresentation *PlanNode_ShortRepresentation `protobuf:"bytes,5,opt,name=short_representation,json=shortRepresentation,proto3" json:"short_representation,omitempty"` 80 // Attributes relevant to the node contained in a group of key-value pairs. 81 // For example, a Parameter Reference node could have the following 82 // information in its metadata: 83 // 84 // { 85 // "parameter_reference": "param1", 86 // "parameter_type": "array" 87 // } 88 Metadata *_struct.Struct `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` 89 // The execution statistics associated with the node, contained in a group of 90 // key-value pairs. Only present if the plan was returned as a result of a 91 // profile query. For example, number of executions, number of rows/time per 92 // execution etc. 93 ExecutionStats *_struct.Struct `protobuf:"bytes,7,opt,name=execution_stats,json=executionStats,proto3" json:"execution_stats,omitempty"` 94 XXX_NoUnkeyedLiteral struct{} `json:"-"` 95 XXX_unrecognized []byte `json:"-"` 96 XXX_sizecache int32 `json:"-"` 97} 98 99func (m *PlanNode) Reset() { *m = PlanNode{} } 100func (m *PlanNode) String() string { return proto.CompactTextString(m) } 101func (*PlanNode) ProtoMessage() {} 102func (*PlanNode) Descriptor() ([]byte, []int) { 103 return fileDescriptor_14e5ab0c0507d181, []int{0} 104} 105 106func (m *PlanNode) XXX_Unmarshal(b []byte) error { 107 return xxx_messageInfo_PlanNode.Unmarshal(m, b) 108} 109func (m *PlanNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 110 return xxx_messageInfo_PlanNode.Marshal(b, m, deterministic) 111} 112func (m *PlanNode) XXX_Merge(src proto.Message) { 113 xxx_messageInfo_PlanNode.Merge(m, src) 114} 115func (m *PlanNode) XXX_Size() int { 116 return xxx_messageInfo_PlanNode.Size(m) 117} 118func (m *PlanNode) XXX_DiscardUnknown() { 119 xxx_messageInfo_PlanNode.DiscardUnknown(m) 120} 121 122var xxx_messageInfo_PlanNode proto.InternalMessageInfo 123 124func (m *PlanNode) GetIndex() int32 { 125 if m != nil { 126 return m.Index 127 } 128 return 0 129} 130 131func (m *PlanNode) GetKind() PlanNode_Kind { 132 if m != nil { 133 return m.Kind 134 } 135 return PlanNode_KIND_UNSPECIFIED 136} 137 138func (m *PlanNode) GetDisplayName() string { 139 if m != nil { 140 return m.DisplayName 141 } 142 return "" 143} 144 145func (m *PlanNode) GetChildLinks() []*PlanNode_ChildLink { 146 if m != nil { 147 return m.ChildLinks 148 } 149 return nil 150} 151 152func (m *PlanNode) GetShortRepresentation() *PlanNode_ShortRepresentation { 153 if m != nil { 154 return m.ShortRepresentation 155 } 156 return nil 157} 158 159func (m *PlanNode) GetMetadata() *_struct.Struct { 160 if m != nil { 161 return m.Metadata 162 } 163 return nil 164} 165 166func (m *PlanNode) GetExecutionStats() *_struct.Struct { 167 if m != nil { 168 return m.ExecutionStats 169 } 170 return nil 171} 172 173// Metadata associated with a parent-child relationship appearing in a 174// [PlanNode][google.spanner.v1.PlanNode]. 175type PlanNode_ChildLink struct { 176 // The node to which the link points. 177 ChildIndex int32 `protobuf:"varint,1,opt,name=child_index,json=childIndex,proto3" json:"child_index,omitempty"` 178 // The type of the link. For example, in Hash Joins this could be used to 179 // distinguish between the build child and the probe child, or in the case 180 // of the child being an output variable, to represent the tag associated 181 // with the output variable. 182 Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` 183 // Only present if the child node is [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] and corresponds 184 // to an output variable of the parent node. The field carries the name of 185 // the output variable. 186 // For example, a `TableScan` operator that reads rows from a table will 187 // have child links to the `SCALAR` nodes representing the output variables 188 // created for each column that is read by the operator. The corresponding 189 // `variable` fields will be set to the variable names assigned to the 190 // columns. 191 Variable string `protobuf:"bytes,3,opt,name=variable,proto3" json:"variable,omitempty"` 192 XXX_NoUnkeyedLiteral struct{} `json:"-"` 193 XXX_unrecognized []byte `json:"-"` 194 XXX_sizecache int32 `json:"-"` 195} 196 197func (m *PlanNode_ChildLink) Reset() { *m = PlanNode_ChildLink{} } 198func (m *PlanNode_ChildLink) String() string { return proto.CompactTextString(m) } 199func (*PlanNode_ChildLink) ProtoMessage() {} 200func (*PlanNode_ChildLink) Descriptor() ([]byte, []int) { 201 return fileDescriptor_14e5ab0c0507d181, []int{0, 0} 202} 203 204func (m *PlanNode_ChildLink) XXX_Unmarshal(b []byte) error { 205 return xxx_messageInfo_PlanNode_ChildLink.Unmarshal(m, b) 206} 207func (m *PlanNode_ChildLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 208 return xxx_messageInfo_PlanNode_ChildLink.Marshal(b, m, deterministic) 209} 210func (m *PlanNode_ChildLink) XXX_Merge(src proto.Message) { 211 xxx_messageInfo_PlanNode_ChildLink.Merge(m, src) 212} 213func (m *PlanNode_ChildLink) XXX_Size() int { 214 return xxx_messageInfo_PlanNode_ChildLink.Size(m) 215} 216func (m *PlanNode_ChildLink) XXX_DiscardUnknown() { 217 xxx_messageInfo_PlanNode_ChildLink.DiscardUnknown(m) 218} 219 220var xxx_messageInfo_PlanNode_ChildLink proto.InternalMessageInfo 221 222func (m *PlanNode_ChildLink) GetChildIndex() int32 { 223 if m != nil { 224 return m.ChildIndex 225 } 226 return 0 227} 228 229func (m *PlanNode_ChildLink) GetType() string { 230 if m != nil { 231 return m.Type 232 } 233 return "" 234} 235 236func (m *PlanNode_ChildLink) GetVariable() string { 237 if m != nil { 238 return m.Variable 239 } 240 return "" 241} 242 243// Condensed representation of a node and its subtree. Only present for 244// `SCALAR` [PlanNode(s)][google.spanner.v1.PlanNode]. 245type PlanNode_ShortRepresentation struct { 246 // A string representation of the expression subtree rooted at this node. 247 Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` 248 // A mapping of (subquery variable name) -> (subquery node id) for cases 249 // where the `description` string of this node references a `SCALAR` 250 // subquery contained in the expression subtree rooted at this node. The 251 // referenced `SCALAR` subquery may not necessarily be a direct child of 252 // this node. 253 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"` 254 XXX_NoUnkeyedLiteral struct{} `json:"-"` 255 XXX_unrecognized []byte `json:"-"` 256 XXX_sizecache int32 `json:"-"` 257} 258 259func (m *PlanNode_ShortRepresentation) Reset() { *m = PlanNode_ShortRepresentation{} } 260func (m *PlanNode_ShortRepresentation) String() string { return proto.CompactTextString(m) } 261func (*PlanNode_ShortRepresentation) ProtoMessage() {} 262func (*PlanNode_ShortRepresentation) Descriptor() ([]byte, []int) { 263 return fileDescriptor_14e5ab0c0507d181, []int{0, 1} 264} 265 266func (m *PlanNode_ShortRepresentation) XXX_Unmarshal(b []byte) error { 267 return xxx_messageInfo_PlanNode_ShortRepresentation.Unmarshal(m, b) 268} 269func (m *PlanNode_ShortRepresentation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 270 return xxx_messageInfo_PlanNode_ShortRepresentation.Marshal(b, m, deterministic) 271} 272func (m *PlanNode_ShortRepresentation) XXX_Merge(src proto.Message) { 273 xxx_messageInfo_PlanNode_ShortRepresentation.Merge(m, src) 274} 275func (m *PlanNode_ShortRepresentation) XXX_Size() int { 276 return xxx_messageInfo_PlanNode_ShortRepresentation.Size(m) 277} 278func (m *PlanNode_ShortRepresentation) XXX_DiscardUnknown() { 279 xxx_messageInfo_PlanNode_ShortRepresentation.DiscardUnknown(m) 280} 281 282var xxx_messageInfo_PlanNode_ShortRepresentation proto.InternalMessageInfo 283 284func (m *PlanNode_ShortRepresentation) GetDescription() string { 285 if m != nil { 286 return m.Description 287 } 288 return "" 289} 290 291func (m *PlanNode_ShortRepresentation) GetSubqueries() map[string]int32 { 292 if m != nil { 293 return m.Subqueries 294 } 295 return nil 296} 297 298// Contains an ordered list of nodes appearing in the query plan. 299type QueryPlan struct { 300 // The nodes in the query plan. Plan nodes are returned in pre-order starting 301 // with the plan root. Each [PlanNode][google.spanner.v1.PlanNode]'s `id` corresponds to its index in 302 // `plan_nodes`. 303 PlanNodes []*PlanNode `protobuf:"bytes,1,rep,name=plan_nodes,json=planNodes,proto3" json:"plan_nodes,omitempty"` 304 XXX_NoUnkeyedLiteral struct{} `json:"-"` 305 XXX_unrecognized []byte `json:"-"` 306 XXX_sizecache int32 `json:"-"` 307} 308 309func (m *QueryPlan) Reset() { *m = QueryPlan{} } 310func (m *QueryPlan) String() string { return proto.CompactTextString(m) } 311func (*QueryPlan) ProtoMessage() {} 312func (*QueryPlan) Descriptor() ([]byte, []int) { 313 return fileDescriptor_14e5ab0c0507d181, []int{1} 314} 315 316func (m *QueryPlan) XXX_Unmarshal(b []byte) error { 317 return xxx_messageInfo_QueryPlan.Unmarshal(m, b) 318} 319func (m *QueryPlan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 320 return xxx_messageInfo_QueryPlan.Marshal(b, m, deterministic) 321} 322func (m *QueryPlan) XXX_Merge(src proto.Message) { 323 xxx_messageInfo_QueryPlan.Merge(m, src) 324} 325func (m *QueryPlan) XXX_Size() int { 326 return xxx_messageInfo_QueryPlan.Size(m) 327} 328func (m *QueryPlan) XXX_DiscardUnknown() { 329 xxx_messageInfo_QueryPlan.DiscardUnknown(m) 330} 331 332var xxx_messageInfo_QueryPlan proto.InternalMessageInfo 333 334func (m *QueryPlan) GetPlanNodes() []*PlanNode { 335 if m != nil { 336 return m.PlanNodes 337 } 338 return nil 339} 340 341func init() { 342 proto.RegisterEnum("google.spanner.v1.PlanNode_Kind", PlanNode_Kind_name, PlanNode_Kind_value) 343 proto.RegisterType((*PlanNode)(nil), "google.spanner.v1.PlanNode") 344 proto.RegisterType((*PlanNode_ChildLink)(nil), "google.spanner.v1.PlanNode.ChildLink") 345 proto.RegisterType((*PlanNode_ShortRepresentation)(nil), "google.spanner.v1.PlanNode.ShortRepresentation") 346 proto.RegisterMapType((map[string]int32)(nil), "google.spanner.v1.PlanNode.ShortRepresentation.SubqueriesEntry") 347 proto.RegisterType((*QueryPlan)(nil), "google.spanner.v1.QueryPlan") 348} 349 350func init() { proto.RegisterFile("google/spanner/v1/query_plan.proto", fileDescriptor_14e5ab0c0507d181) } 351 352var fileDescriptor_14e5ab0c0507d181 = []byte{ 353 // 604 bytes of a gzipped FileDescriptorProto 354 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xdf, 0x6e, 0xd3, 0x3e, 355 0x18, 0xfd, 0xa5, 0x6b, 0xfb, 0x5b, 0xbf, 0xa2, 0xae, 0x78, 0x43, 0x8b, 0x0a, 0x12, 0xa1, 0x12, 356 0x52, 0xaf, 0x12, 0x75, 0xe3, 0x62, 0x1a, 0x42, 0xd0, 0x75, 0xdd, 0x54, 0xad, 0x2a, 0xc5, 0x81, 357 0x5d, 0xa0, 0x4a, 0x91, 0xdb, 0x98, 0xce, 0x6a, 0x6a, 0x87, 0x38, 0xa9, 0xd6, 0x97, 0xe0, 0x96, 358 0x77, 0xe0, 0x51, 0x78, 0x01, 0x5e, 0x07, 0xd9, 0xf9, 0xc3, 0x60, 0xa8, 0x12, 0x77, 0x9f, 0x7d, 359 0xce, 0x77, 0xe2, 0xef, 0x1c, 0x3b, 0xd0, 0x5e, 0x08, 0xb1, 0x08, 0xa8, 0x23, 0x43, 0xc2, 0x39, 360 0x8d, 0x9c, 0x75, 0xd7, 0xf9, 0x9c, 0xd0, 0x68, 0xe3, 0x85, 0x01, 0xe1, 0x76, 0x18, 0x89, 0x58, 361 0xa0, 0x87, 0x29, 0xc7, 0xce, 0x38, 0xf6, 0xba, 0xdb, 0x7a, 0x92, 0xb5, 0x69, 0xc2, 0x2c, 0xf9, 362 0xe4, 0xc8, 0x38, 0x4a, 0xe6, 0x71, 0xda, 0x50, 0xa0, 0x24, 0x64, 0x0e, 0xe1, 0x5c, 0xc4, 0x24, 363 0x66, 0x82, 0xcb, 0x14, 0x6d, 0x7f, 0xa9, 0xc2, 0xee, 0x24, 0x20, 0x7c, 0x2c, 0x7c, 0x8a, 0x0e, 364 0xa0, 0xc2, 0xb8, 0x4f, 0x6f, 0x4d, 0xc3, 0x32, 0x3a, 0x15, 0x9c, 0x2e, 0xd0, 0x0b, 0x28, 0x2f, 365 0x19, 0xf7, 0xcd, 0x92, 0x65, 0x74, 0x1a, 0x47, 0x96, 0x7d, 0xef, 0x00, 0x76, 0x2e, 0x60, 0x5f, 366 0x31, 0xee, 0x63, 0xcd, 0x46, 0xcf, 0xe0, 0x81, 0xcf, 0x64, 0x18, 0x90, 0x8d, 0xc7, 0xc9, 0x8a, 367 0x9a, 0x3b, 0x96, 0xd1, 0xa9, 0xe1, 0x7a, 0xb6, 0x37, 0x26, 0x2b, 0x8a, 0x2e, 0xa0, 0x3e, 0xbf, 368 0x61, 0x81, 0xef, 0x05, 0x8c, 0x2f, 0xa5, 0x59, 0xb6, 0x76, 0x3a, 0xf5, 0xa3, 0xe7, 0xdb, 0xf4, 369 0xfb, 0x8a, 0x3e, 0x62, 0x7c, 0x89, 0x61, 0x9e, 0x97, 0x12, 0xcd, 0xe0, 0x40, 0xde, 0x88, 0x28, 370 0xf6, 0x22, 0x1a, 0x46, 0x54, 0x52, 0x9e, 0x8e, 0x68, 0x56, 0x2c, 0xa3, 0x53, 0x3f, 0x72, 0xb6, 371 0x09, 0xba, 0xaa, 0x0f, 0xff, 0xd6, 0x86, 0xf7, 0xe5, 0xfd, 0x4d, 0x74, 0x0c, 0xbb, 0x2b, 0x1a, 372 0x13, 0x9f, 0xc4, 0xc4, 0xac, 0x6a, 0xdd, 0xc3, 0x5c, 0x37, 0xb7, 0xdd, 0x76, 0xb5, 0xed, 0xb8, 373 0x20, 0xa2, 0x37, 0xb0, 0x47, 0x6f, 0xe9, 0x3c, 0x51, 0x0a, 0x9e, 0x8c, 0x49, 0x2c, 0xcd, 0xff, 374 0xb7, 0xf7, 0x36, 0x0a, 0xbe, 0xab, 0xe8, 0xad, 0x29, 0xd4, 0x8a, 0x99, 0xd1, 0xd3, 0xdc, 0xaf, 375 0xbb, 0x21, 0xa5, 0x46, 0x0c, 0x75, 0x52, 0x08, 0xca, 0xf1, 0x26, 0xa4, 0x3a, 0xa9, 0x1a, 0xd6, 376 0x35, 0x6a, 0xc1, 0xee, 0x9a, 0x44, 0x8c, 0xcc, 0x82, 0x3c, 0x83, 0x62, 0xdd, 0xfa, 0x61, 0xc0, 377 0xfe, 0x5f, 0x1c, 0x40, 0x16, 0xd4, 0x7d, 0x2a, 0xe7, 0x11, 0x0b, 0xb5, 0x8f, 0x46, 0x16, 0xdd, 378 0xaf, 0x2d, 0xe4, 0x01, 0xc8, 0x64, 0xa6, 0x2e, 0x27, 0xa3, 0xd2, 0x2c, 0xe9, 0xe4, 0x5e, 0xff, 379 0xa3, 0xd1, 0xb6, 0x5b, 0x28, 0x0c, 0x78, 0x1c, 0x6d, 0xf0, 0x1d, 0xc9, 0xd6, 0x2b, 0xd8, 0xfb, 380 0x03, 0x46, 0x4d, 0xd8, 0x59, 0xd2, 0x4d, 0x76, 0x1a, 0x55, 0xaa, 0xfb, 0xba, 0x26, 0x41, 0x92, 381 0x0e, 0x5c, 0xc1, 0xe9, 0xe2, 0xb4, 0x74, 0x62, 0xb4, 0x4f, 0xa0, 0xac, 0xee, 0x22, 0x3a, 0x80, 382 0xe6, 0xd5, 0x70, 0x7c, 0xee, 0x7d, 0x18, 0xbb, 0x93, 0x41, 0x7f, 0x78, 0x31, 0x1c, 0x9c, 0x37, 383 0xff, 0x43, 0x0d, 0x00, 0x3c, 0x18, 0xf5, 0xde, 0x0f, 0xdf, 0x8e, 0x7b, 0xa3, 0xa6, 0x81, 0x00, 384 0xaa, 0x6e, 0xbf, 0x37, 0xea, 0xe1, 0x66, 0xa9, 0x7d, 0x09, 0xb5, 0x77, 0xea, 0xcd, 0xa9, 0x93, 385 0xa3, 0x53, 0x00, 0xf5, 0xf4, 0x3c, 0x2e, 0x7c, 0x2a, 0x4d, 0x43, 0x8f, 0xf9, 0x78, 0xcb, 0x98, 386 0xb8, 0x16, 0x66, 0x95, 0x3c, 0xfb, 0x6a, 0xc0, 0xa3, 0xb9, 0x58, 0xdd, 0x67, 0x9f, 0x35, 0x8a, 387 0x0f, 0x4c, 0x54, 0xfc, 0x13, 0xe3, 0xe3, 0x49, 0x46, 0x5a, 0x88, 0x80, 0xf0, 0x85, 0x2d, 0xa2, 388 0x85, 0xb3, 0xa0, 0x5c, 0x5f, 0x0e, 0x27, 0x85, 0x48, 0xc8, 0xe4, 0x9d, 0xff, 0xc2, 0xcb, 0xac, 389 0xfc, 0x56, 0x3a, 0xbc, 0x4c, 0x5b, 0xfb, 0x81, 0x48, 0x7c, 0xdb, 0xcd, 0xbe, 0x72, 0xdd, 0xfd, 390 0x9e, 0x23, 0x53, 0x8d, 0x4c, 0x33, 0x64, 0x7a, 0xdd, 0x9d, 0x55, 0xb5, 0xf0, 0xf1, 0xcf, 0x00, 391 0x00, 0x00, 0xff, 0xff, 0xd6, 0xe5, 0x2e, 0x1d, 0x6f, 0x04, 0x00, 0x00, 392} 393