blob: abc47cf6c5863672bd4b293bcfe0a53fa8499cab [file] [log] [blame]
// 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;
}