| // 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. |
| |
| 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; |
| |
| // 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; |
| } |
| |
| // 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; |
| } |
| |
| 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 SaveQueryResultMessage { |
| required uint64 query_id = 1; |
| required int32 relation_id = 2; |
| repeated fixed64 blocks = 3 [packed=true]; |
| |
| required uint32 cli_id = 4; // tmb::client_id. |
| } |
| |
| message SaveQueryResultResponseMessage { |
| required uint64 query_id = 1; |
| required int32 relation_id = 2; |
| required uint32 cli_id = 3; // tmb::client_id. |
| required uint64 shiftboss_index = 4; |
| } |
| |
| message QueryExecutionSuccessMessage { |
| optional CatalogRelationSchema result_relation = 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 LocateBlockResponseMessage { |
| repeated uint32 block_domains = 1; |
| } |
| |
| message GetPeerDomainNetworkAddressesResponseMessage { |
| repeated string domain_network_addresses = 1; |
| } |