-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueryExecutionMessages.proto
More file actions
176 lines (143 loc) · 4.99 KB
/
Copy pathQueryExecutionMessages.proto
File metadata and controls
176 lines (143 loc) · 4.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
syntax = "proto2";
package quickstep.serialization;
import "catalog/Catalog.proto";
import "query_execution/QueryContext.proto";
import "relational_operators/WorkOrder.proto";
// Note: There are different types of completion messages for normal work orders
// rebuild work orders. This can be potentially helpful when we want to collect
// different statistics for executing different types of work orders.
// e.g. In select normal work order completion message, we could be interested
// in the selectivity of the block whose work order got execute. In rebuild work
// order completion message, we may be interested in adding the compression
// ratio or dictionary size of the rebuilt block.
// Next tag: 9.
message WorkOrderCompletionMessage {
enum WorkOrderType {
NORMAL = 0;
REBUILD = 1;
}
required WorkOrderType work_order_type = 1;
required uint64 operator_index = 2;
required uint64 worker_thread_index = 3;
required uint64 query_id = 4;
required uint64 partition_id = 8;
// Epoch time in microseconds.
optional uint64 execution_start_time = 5;
optional uint64 execution_end_time = 6;
// Required in the distributed version.
optional uint64 shiftboss_index = 7;
}
message CatalogRelationNewBlockMessage {
required int32 relation_id = 1;
required fixed64 block_id = 2;
// Used by PartitionAwareInsertDestination.
optional uint64 partition_id = 3;
required uint64 query_id = 4;
}
message DataPipelineMessage {
required uint64 operator_index = 1;
required fixed64 block_id = 2;
required int32 relation_id = 3;
required uint64 query_id = 4;
// Used by PartitionAwareInsertDestination.
optional uint64 partition_id = 5 [default = 0];
}
// Distributed version related messages.
message ShiftbossRegistrationMessage {
// The total Work Order processing capacity in Shiftboss, which equals to the
// sum of the capacity of each worker managed by Shiftboss.
required uint64 work_order_capacity = 1;
}
message ShiftbossRegistrationResponseMessage {
required uint64 shiftboss_index = 1;
required CatalogDatabase catalog_database = 2;
}
message SqlQueryMessage {
required string sql_query = 1;
}
message QueryInitiateMessage {
required uint64 query_id = 1;
required CatalogDatabase catalog_database_cache = 2;
required QueryContext query_context = 3;
}
message QueryInitiateResponseMessage {
required uint64 query_id = 1;
}
message WorkOrderMessage {
required uint64 query_id = 1;
required uint64 operator_index = 2;
required WorkOrder work_order = 3;
}
message InitiateRebuildMessage {
required uint64 query_id = 1;
required uint64 operator_index = 2;
required uint64 insert_destination_index = 3;
required int32 relation_id = 4;
}
message InitiateRebuildResponseMessage {
required uint64 query_id = 1;
required uint64 operator_index = 2;
required uint64 num_rebuild_work_orders = 3;
required uint64 shiftboss_index = 4;
}
message QueryTeardownMessage {
required uint64 query_id = 1;
}
message CommandResponseMessage {
required string command_response = 1;
}
message QueryExecutionSuccessMessage {
optional CatalogRelationSchema result_relation = 1;
}
message QueryResultTeardownMessage {
required int32 relation_id = 1;
}
message QueryExecutionErrorMessage {
required string error_message = 1;
}
// BlockLocator related messages.
message BlockDomainRegistrationMessage {
// Format IP:Port, i.e., "0.0.0.0:0".
required string domain_network_address = 1;
}
// Used for RegistrationResponse, Unregistration, and FailureReport.
message BlockDomainMessage {
required uint32 block_domain = 1;
}
// Used for the block locality based scheduling in ForemanDistributed.
message BlockDomainToShiftbossIndexMessage {
required uint32 block_domain = 1;
required uint64 shiftboss_index = 2;
}
// Used when StorageManager loads or evicts a block or a blob from its buffer
// pool.
message BlockLocationMessage {
required fixed64 block_id = 1;
required uint32 block_domain = 2;
}
message BlockMessage {
required fixed64 block_id = 1;
}
message GetAllDomainNetworkAddressesResponseMessage {
message DomainNetworkAddress {
required uint32 block_domain = 1;
required string network_address = 2;
}
repeated DomainNetworkAddress domain_network_addresses = 1;
}