google-cloud-spanner-v1 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +12 -0
  3. data/AUTHENTICATION.md +169 -0
  4. data/LICENSE.md +203 -0
  5. data/README.md +75 -0
  6. data/lib/google-cloud-spanner-v1.rb +21 -0
  7. data/lib/google/cloud/spanner/v1.rb +35 -0
  8. data/lib/google/cloud/spanner/v1/spanner.rb +52 -0
  9. data/lib/google/cloud/spanner/v1/spanner/client.rb +1947 -0
  10. data/lib/google/cloud/spanner/v1/spanner/credentials.rb +52 -0
  11. data/lib/google/cloud/spanner/v1/spanner/paths.rb +73 -0
  12. data/lib/google/cloud/spanner/v1/version.rb +28 -0
  13. data/lib/google/spanner/v1/keys_pb.rb +37 -0
  14. data/lib/google/spanner/v1/mutation_pb.rb +42 -0
  15. data/lib/google/spanner/v1/query_plan_pb.rb +51 -0
  16. data/lib/google/spanner/v1/result_set_pb.rb +51 -0
  17. data/lib/google/spanner/v1/spanner_pb.rb +182 -0
  18. data/lib/google/spanner/v1/spanner_services_pb.rb +180 -0
  19. data/lib/google/spanner/v1/transaction_pb.rb +59 -0
  20. data/lib/google/spanner/v1/type_pb.rb +47 -0
  21. data/proto_docs/README.md +4 -0
  22. data/proto_docs/google/api/field_behavior.rb +59 -0
  23. data/proto_docs/google/api/resource.rb +247 -0
  24. data/proto_docs/google/protobuf/any.rb +138 -0
  25. data/proto_docs/google/protobuf/duration.rb +98 -0
  26. data/proto_docs/google/protobuf/empty.rb +36 -0
  27. data/proto_docs/google/protobuf/struct.rb +96 -0
  28. data/proto_docs/google/protobuf/timestamp.rb +120 -0
  29. data/proto_docs/google/rpc/status.rb +46 -0
  30. data/proto_docs/google/spanner/v1/keys.rb +162 -0
  31. data/proto_docs/google/spanner/v1/mutation.rb +110 -0
  32. data/proto_docs/google/spanner/v1/query_plan.rb +148 -0
  33. data/proto_docs/google/spanner/v1/result_set.rb +208 -0
  34. data/proto_docs/google/spanner/v1/spanner.rb +681 -0
  35. data/proto_docs/google/spanner/v1/transaction.rb +457 -0
  36. data/proto_docs/google/spanner/v1/type.rb +127 -0
  37. metadata +218 -0
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Rpc
22
+ # The `Status` type defines a logical error model that is suitable for
23
+ # different programming environments, including REST APIs and RPC APIs. It is
24
+ # used by [gRPC](https://github.com/grpc). Each `Status` message contains
25
+ # three pieces of data: error code, error message, and error details.
26
+ #
27
+ # You can find out more about this error model and how to work with it in the
28
+ # [API Design Guide](https://cloud.google.com/apis/design/errors).
29
+ # @!attribute [rw] code
30
+ # @return [::Integer]
31
+ # The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
32
+ # @!attribute [rw] message
33
+ # @return [::String]
34
+ # A developer-facing error message, which should be in English. Any
35
+ # user-facing error message should be localized and sent in the
36
+ # {::Google::Rpc::Status#details google.rpc.Status.details} field, or localized by the client.
37
+ # @!attribute [rw] details
38
+ # @return [::Array<::Google::Protobuf::Any>]
39
+ # A list of messages that carry the error details. There is a common set of
40
+ # message types for APIs to use.
41
+ class Status
42
+ include ::Google::Protobuf::MessageExts
43
+ extend ::Google::Protobuf::MessageExts::ClassMethods
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Cloud
22
+ module Spanner
23
+ module V1
24
+ # KeyRange represents a range of rows in a table or index.
25
+ #
26
+ # A range has a start key and an end key. These keys can be open or
27
+ # closed, indicating if the range includes rows with that key.
28
+ #
29
+ # Keys are represented by lists, where the ith value in the list
30
+ # corresponds to the ith component of the table or index primary key.
31
+ # Individual values are encoded as described
32
+ # {::Google::Cloud::Spanner::V1::TypeCode here}.
33
+ #
34
+ # For example, consider the following table definition:
35
+ #
36
+ # CREATE TABLE UserEvents (
37
+ # UserName STRING(MAX),
38
+ # EventDate STRING(10)
39
+ # ) PRIMARY KEY(UserName, EventDate);
40
+ #
41
+ # The following keys name rows in this table:
42
+ #
43
+ # ["Bob", "2014-09-23"]
44
+ # ["Alfred", "2015-06-12"]
45
+ #
46
+ # Since the `UserEvents` table's `PRIMARY KEY` clause names two
47
+ # columns, each `UserEvents` key has two elements; the first is the
48
+ # `UserName`, and the second is the `EventDate`.
49
+ #
50
+ # Key ranges with multiple components are interpreted
51
+ # lexicographically by component using the table or index key's declared
52
+ # sort order. For example, the following range returns all events for
53
+ # user `"Bob"` that occurred in the year 2015:
54
+ #
55
+ # "start_closed": ["Bob", "2015-01-01"]
56
+ # "end_closed": ["Bob", "2015-12-31"]
57
+ #
58
+ # Start and end keys can omit trailing key components. This affects the
59
+ # inclusion and exclusion of rows that exactly match the provided key
60
+ # components: if the key is closed, then rows that exactly match the
61
+ # provided components are included; if the key is open, then rows
62
+ # that exactly match are not included.
63
+ #
64
+ # For example, the following range includes all events for `"Bob"` that
65
+ # occurred during and after the year 2000:
66
+ #
67
+ # "start_closed": ["Bob", "2000-01-01"]
68
+ # "end_closed": ["Bob"]
69
+ #
70
+ # The next example retrieves all events for `"Bob"`:
71
+ #
72
+ # "start_closed": ["Bob"]
73
+ # "end_closed": ["Bob"]
74
+ #
75
+ # To retrieve events before the year 2000:
76
+ #
77
+ # "start_closed": ["Bob"]
78
+ # "end_open": ["Bob", "2000-01-01"]
79
+ #
80
+ # The following range includes all rows in the table:
81
+ #
82
+ # "start_closed": []
83
+ # "end_closed": []
84
+ #
85
+ # This range returns all users whose `UserName` begins with any
86
+ # character from A to C:
87
+ #
88
+ # "start_closed": ["A"]
89
+ # "end_open": ["D"]
90
+ #
91
+ # This range returns all users whose `UserName` begins with B:
92
+ #
93
+ # "start_closed": ["B"]
94
+ # "end_open": ["C"]
95
+ #
96
+ # Key ranges honor column sort order. For example, suppose a table is
97
+ # defined as follows:
98
+ #
99
+ # CREATE TABLE DescendingSortedTable {
100
+ # Key INT64,
101
+ # ...
102
+ # ) PRIMARY KEY(Key DESC);
103
+ #
104
+ # The following range retrieves all rows with key values between 1
105
+ # and 100 inclusive:
106
+ #
107
+ # "start_closed": ["100"]
108
+ # "end_closed": ["1"]
109
+ #
110
+ # Note that 100 is passed as the start, and 1 is passed as the end,
111
+ # because `Key` is a descending column in the schema.
112
+ # @!attribute [rw] start_closed
113
+ # @return [::Google::Protobuf::ListValue]
114
+ # If the start is closed, then the range includes all rows whose
115
+ # first `len(start_closed)` key columns exactly match `start_closed`.
116
+ # @!attribute [rw] start_open
117
+ # @return [::Google::Protobuf::ListValue]
118
+ # If the start is open, then the range excludes rows whose first
119
+ # `len(start_open)` key columns exactly match `start_open`.
120
+ # @!attribute [rw] end_closed
121
+ # @return [::Google::Protobuf::ListValue]
122
+ # If the end is closed, then the range includes all rows whose
123
+ # first `len(end_closed)` key columns exactly match `end_closed`.
124
+ # @!attribute [rw] end_open
125
+ # @return [::Google::Protobuf::ListValue]
126
+ # If the end is open, then the range excludes rows whose first
127
+ # `len(end_open)` key columns exactly match `end_open`.
128
+ class KeyRange
129
+ include ::Google::Protobuf::MessageExts
130
+ extend ::Google::Protobuf::MessageExts::ClassMethods
131
+ end
132
+
133
+ # `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All
134
+ # the keys are expected to be in the same table or index. The keys need
135
+ # not be sorted in any particular way.
136
+ #
137
+ # If the same key is specified multiple times in the set (for example
138
+ # if two ranges, two keys, or a key and a range overlap), Cloud Spanner
139
+ # behaves as if the key were only specified once.
140
+ # @!attribute [rw] keys
141
+ # @return [::Array<::Google::Protobuf::ListValue>]
142
+ # A list of specific keys. Entries in `keys` should have exactly as
143
+ # many elements as there are columns in the primary or index key
144
+ # with which this `KeySet` is used. Individual key values are
145
+ # encoded as described {::Google::Cloud::Spanner::V1::TypeCode here}.
146
+ # @!attribute [rw] ranges
147
+ # @return [::Array<::Google::Cloud::Spanner::V1::KeyRange>]
148
+ # A list of key ranges. See {::Google::Cloud::Spanner::V1::KeyRange KeyRange} for more information about
149
+ # key range specifications.
150
+ # @!attribute [rw] all
151
+ # @return [::Boolean]
152
+ # For convenience `all` can be set to `true` to indicate that this
153
+ # `KeySet` matches all keys in the table or index. Note that any keys
154
+ # specified in `keys` or `ranges` are only yielded once.
155
+ class KeySet
156
+ include ::Google::Protobuf::MessageExts
157
+ extend ::Google::Protobuf::MessageExts::ClassMethods
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Cloud
22
+ module Spanner
23
+ module V1
24
+ # A modification to one or more Cloud Spanner rows. Mutations can be
25
+ # applied to a Cloud Spanner database by sending them in a
26
+ # {::Google::Cloud::Spanner::V1::Spanner::Client#commit Commit} call.
27
+ # @!attribute [rw] insert
28
+ # @return [::Google::Cloud::Spanner::V1::Mutation::Write]
29
+ # Insert new rows in a table. If any of the rows already exist,
30
+ # the write or transaction fails with error `ALREADY_EXISTS`.
31
+ # @!attribute [rw] update
32
+ # @return [::Google::Cloud::Spanner::V1::Mutation::Write]
33
+ # Update existing rows in a table. If any of the rows does not
34
+ # already exist, the transaction fails with error `NOT_FOUND`.
35
+ # @!attribute [rw] insert_or_update
36
+ # @return [::Google::Cloud::Spanner::V1::Mutation::Write]
37
+ # Like {::Google::Cloud::Spanner::V1::Mutation#insert insert}, except that if the row already exists, then
38
+ # its column values are overwritten with the ones provided. Any
39
+ # column values not explicitly written are preserved.
40
+ #
41
+ # When using {::Google::Cloud::Spanner::V1::Mutation#insert_or_update insert_or_update}, just as when using {::Google::Cloud::Spanner::V1::Mutation#insert insert}, all `NOT
42
+ # NULL` columns in the table must be given a value. This holds true
43
+ # even when the row already exists and will therefore actually be updated.
44
+ # @!attribute [rw] replace
45
+ # @return [::Google::Cloud::Spanner::V1::Mutation::Write]
46
+ # Like {::Google::Cloud::Spanner::V1::Mutation#insert insert}, except that if the row already exists, it is
47
+ # deleted, and the column values provided are inserted
48
+ # instead. Unlike {::Google::Cloud::Spanner::V1::Mutation#insert_or_update insert_or_update}, this means any values not
49
+ # explicitly written become `NULL`.
50
+ #
51
+ # In an interleaved table, if you create the child table with the
52
+ # `ON DELETE CASCADE` annotation, then replacing a parent row
53
+ # also deletes the child rows. Otherwise, you must delete the
54
+ # child rows before you replace the parent row.
55
+ # @!attribute [rw] delete
56
+ # @return [::Google::Cloud::Spanner::V1::Mutation::Delete]
57
+ # Delete rows from a table. Succeeds whether or not the named
58
+ # rows were present.
59
+ class Mutation
60
+ include ::Google::Protobuf::MessageExts
61
+ extend ::Google::Protobuf::MessageExts::ClassMethods
62
+
63
+ # Arguments to {::Google::Cloud::Spanner::V1::Mutation#insert insert}, {::Google::Cloud::Spanner::V1::Mutation#update update}, {::Google::Cloud::Spanner::V1::Mutation#insert_or_update insert_or_update}, and
64
+ # {::Google::Cloud::Spanner::V1::Mutation#replace replace} operations.
65
+ # @!attribute [rw] table
66
+ # @return [::String]
67
+ # Required. The table whose rows will be written.
68
+ # @!attribute [rw] columns
69
+ # @return [::Array<::String>]
70
+ # The names of the columns in {::Google::Cloud::Spanner::V1::Mutation::Write#table table} to be written.
71
+ #
72
+ # The list of columns must contain enough columns to allow
73
+ # Cloud Spanner to derive values for all primary key columns in the
74
+ # row(s) to be modified.
75
+ # @!attribute [rw] values
76
+ # @return [::Array<::Google::Protobuf::ListValue>]
77
+ # The values to be written. `values` can contain more than one
78
+ # list of values. If it does, then multiple rows are written, one
79
+ # for each entry in `values`. Each list in `values` must have
80
+ # exactly as many entries as there are entries in {::Google::Cloud::Spanner::V1::Mutation::Write#columns columns}
81
+ # above. Sending multiple lists is equivalent to sending multiple
82
+ # `Mutation`s, each containing one `values` entry and repeating
83
+ # {::Google::Cloud::Spanner::V1::Mutation::Write#table table} and {::Google::Cloud::Spanner::V1::Mutation::Write#columns columns}. Individual values in each list are
84
+ # encoded as described {::Google::Cloud::Spanner::V1::TypeCode here}.
85
+ class Write
86
+ include ::Google::Protobuf::MessageExts
87
+ extend ::Google::Protobuf::MessageExts::ClassMethods
88
+ end
89
+
90
+ # Arguments to {::Google::Cloud::Spanner::V1::Mutation#delete delete} operations.
91
+ # @!attribute [rw] table
92
+ # @return [::String]
93
+ # Required. The table whose rows will be deleted.
94
+ # @!attribute [rw] key_set
95
+ # @return [::Google::Cloud::Spanner::V1::KeySet]
96
+ # Required. The primary keys of the rows within {::Google::Cloud::Spanner::V1::Mutation::Delete#table table} to delete. The
97
+ # primary keys must be specified in the order in which they appear in the
98
+ # `PRIMARY KEY()` clause of the table's equivalent DDL statement (the DDL
99
+ # statement used to create the table).
100
+ # Delete is idempotent. The transaction will succeed even if some or all
101
+ # rows do not exist.
102
+ class Delete
103
+ include ::Google::Protobuf::MessageExts
104
+ extend ::Google::Protobuf::MessageExts::ClassMethods
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,148 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Cloud
22
+ module Spanner
23
+ module V1
24
+ # Node information for nodes appearing in a {::Google::Cloud::Spanner::V1::QueryPlan#plan_nodes QueryPlan.plan_nodes}.
25
+ # @!attribute [rw] index
26
+ # @return [::Integer]
27
+ # The `PlanNode`'s index in {::Google::Cloud::Spanner::V1::QueryPlan#plan_nodes node list}.
28
+ # @!attribute [rw] kind
29
+ # @return [::Google::Cloud::Spanner::V1::PlanNode::Kind]
30
+ # Used to determine the type of node. May be needed for visualizing
31
+ # different kinds of nodes differently. For example, If the node is a
32
+ # {::Google::Cloud::Spanner::V1::PlanNode::Kind::SCALAR SCALAR} node, it will have a condensed representation
33
+ # which can be used to directly embed a description of the node in its
34
+ # parent.
35
+ # @!attribute [rw] display_name
36
+ # @return [::String]
37
+ # The display name for the node.
38
+ # @!attribute [rw] child_links
39
+ # @return [::Array<::Google::Cloud::Spanner::V1::PlanNode::ChildLink>]
40
+ # List of child node `index`es and their relationship to this parent.
41
+ # @!attribute [rw] short_representation
42
+ # @return [::Google::Cloud::Spanner::V1::PlanNode::ShortRepresentation]
43
+ # Condensed representation for {::Google::Cloud::Spanner::V1::PlanNode::Kind::SCALAR SCALAR} nodes.
44
+ # @!attribute [rw] metadata
45
+ # @return [::Google::Protobuf::Struct]
46
+ # Attributes relevant to the node contained in a group of key-value pairs.
47
+ # For example, a Parameter Reference node could have the following
48
+ # information in its metadata:
49
+ #
50
+ # {
51
+ # "parameter_reference": "param1",
52
+ # "parameter_type": "array"
53
+ # }
54
+ # @!attribute [rw] execution_stats
55
+ # @return [::Google::Protobuf::Struct]
56
+ # The execution statistics associated with the node, contained in a group of
57
+ # key-value pairs. Only present if the plan was returned as a result of a
58
+ # profile query. For example, number of executions, number of rows/time per
59
+ # execution etc.
60
+ class PlanNode
61
+ include ::Google::Protobuf::MessageExts
62
+ extend ::Google::Protobuf::MessageExts::ClassMethods
63
+
64
+ # Metadata associated with a parent-child relationship appearing in a
65
+ # {::Google::Cloud::Spanner::V1::PlanNode PlanNode}.
66
+ # @!attribute [rw] child_index
67
+ # @return [::Integer]
68
+ # The node to which the link points.
69
+ # @!attribute [rw] type
70
+ # @return [::String]
71
+ # The type of the link. For example, in Hash Joins this could be used to
72
+ # distinguish between the build child and the probe child, or in the case
73
+ # of the child being an output variable, to represent the tag associated
74
+ # with the output variable.
75
+ # @!attribute [rw] variable
76
+ # @return [::String]
77
+ # Only present if the child node is {::Google::Cloud::Spanner::V1::PlanNode::Kind::SCALAR SCALAR} and corresponds
78
+ # to an output variable of the parent node. The field carries the name of
79
+ # the output variable.
80
+ # For example, a `TableScan` operator that reads rows from a table will
81
+ # have child links to the `SCALAR` nodes representing the output variables
82
+ # created for each column that is read by the operator. The corresponding
83
+ # `variable` fields will be set to the variable names assigned to the
84
+ # columns.
85
+ class ChildLink
86
+ include ::Google::Protobuf::MessageExts
87
+ extend ::Google::Protobuf::MessageExts::ClassMethods
88
+ end
89
+
90
+ # Condensed representation of a node and its subtree. Only present for
91
+ # `SCALAR` [PlanNode(s)][google.spanner.v1.PlanNode].
92
+ # @!attribute [rw] description
93
+ # @return [::String]
94
+ # A string representation of the expression subtree rooted at this node.
95
+ # @!attribute [rw] subqueries
96
+ # @return [::Google::Protobuf::Map{::String => ::Integer}]
97
+ # A mapping of (subquery variable name) -> (subquery node id) for cases
98
+ # where the `description` string of this node references a `SCALAR`
99
+ # subquery contained in the expression subtree rooted at this node. The
100
+ # referenced `SCALAR` subquery may not necessarily be a direct child of
101
+ # this node.
102
+ class ShortRepresentation
103
+ include ::Google::Protobuf::MessageExts
104
+ extend ::Google::Protobuf::MessageExts::ClassMethods
105
+
106
+ # @!attribute [rw] key
107
+ # @return [::String]
108
+ # @!attribute [rw] value
109
+ # @return [::Integer]
110
+ class SubqueriesEntry
111
+ include ::Google::Protobuf::MessageExts
112
+ extend ::Google::Protobuf::MessageExts::ClassMethods
113
+ end
114
+ end
115
+
116
+ # The kind of {::Google::Cloud::Spanner::V1::PlanNode PlanNode}. Distinguishes between the two different kinds of
117
+ # nodes that can appear in a query plan.
118
+ module Kind
119
+ # Not specified.
120
+ KIND_UNSPECIFIED = 0
121
+
122
+ # Denotes a Relational operator node in the expression tree. Relational
123
+ # operators represent iterative processing of rows during query execution.
124
+ # For example, a `TableScan` operation that reads rows from a table.
125
+ RELATIONAL = 1
126
+
127
+ # Denotes a Scalar node in the expression tree. Scalar nodes represent
128
+ # non-iterable entities in the query plan. For example, constants or
129
+ # arithmetic operators appearing inside predicate expressions or references
130
+ # to column names.
131
+ SCALAR = 2
132
+ end
133
+ end
134
+
135
+ # Contains an ordered list of nodes appearing in the query plan.
136
+ # @!attribute [rw] plan_nodes
137
+ # @return [::Array<::Google::Cloud::Spanner::V1::PlanNode>]
138
+ # The nodes in the query plan. Plan nodes are returned in pre-order starting
139
+ # with the plan root. Each {::Google::Cloud::Spanner::V1::PlanNode PlanNode}'s `id` corresponds to its index in
140
+ # `plan_nodes`.
141
+ class QueryPlan
142
+ include ::Google::Protobuf::MessageExts
143
+ extend ::Google::Protobuf::MessageExts::ClassMethods
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end