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