Deserialized Window Aggr WorkOrder.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/85e02de4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/85e02de4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/85e02de4 Branch: refs/heads/LIP-for-tpch Commit: 85e02de49205409accfef3737dadfe95aad1f5c0 Parents: 658cb61 Author: Zuyu Zhang <zu...@twitter.com> Authored: Mon Aug 8 23:14:08 2016 -0700 Committer: Zuyu Zhang <zu...@twitter.com> Committed: Mon Aug 8 23:14:08 2016 -0700 ---------------------------------------------------------------------- relational_operators/CMakeLists.txt | 1 + relational_operators/WorkOrderFactory.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/85e02de4/relational_operators/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/relational_operators/CMakeLists.txt b/relational_operators/CMakeLists.txt index 9696392..43a42f9 100644 --- a/relational_operators/CMakeLists.txt +++ b/relational_operators/CMakeLists.txt @@ -467,6 +467,7 @@ target_link_libraries(quickstep_relationaloperators_WorkOrderFactory quickstep_relationaloperators_TableGeneratorOperator quickstep_relationaloperators_TextScanOperator quickstep_relationaloperators_UpdateOperator + quickstep_relationaloperators_WindowAggregationOperator quickstep_relationaloperators_WorkOrder_proto quickstep_storage_StorageBlockInfo quickstep_utility_Macros http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/85e02de4/relational_operators/WorkOrderFactory.cpp ---------------------------------------------------------------------- diff --git a/relational_operators/WorkOrderFactory.cpp b/relational_operators/WorkOrderFactory.cpp index f920cac..721d735 100644 --- a/relational_operators/WorkOrderFactory.cpp +++ b/relational_operators/WorkOrderFactory.cpp @@ -46,6 +46,7 @@ #include "relational_operators/TableGeneratorOperator.hpp" #include "relational_operators/TextScanOperator.hpp" #include "relational_operators/UpdateOperator.hpp" +#include "relational_operators/WindowAggregationOperator.hpp" #include "relational_operators/WorkOrder.pb.h" #include "storage/StorageBlockInfo.hpp" @@ -419,6 +420,22 @@ WorkOrder* WorkOrderFactory::ReconstructFromProto(const serialization::WorkOrder shiftboss_client_id, bus); } + case serialization::WINDOW_AGGREGATION: { + LOG(INFO) << "Creating WindowAggregationWorkOrder"; + vector<block_id> blocks; + for (int i = 0; i < proto.ExtensionSize(serialization::WindowAggregationWorkOrder::block_ids); ++i) { + blocks.push_back( + proto.GetExtension(serialization::WindowAggregationWorkOrder::block_ids, i)); + } + + return new WindowAggregationWorkOrder( + proto.query_id(), + query_context->getWindowAggregationState( + proto.GetExtension(serialization::WindowAggregationWorkOrder::window_aggr_state_index)), + move(blocks), + query_context->getInsertDestination( + proto.GetExtension(serialization::FinalizeAggregationWorkOrder::insert_destination_index))); + } default: LOG(FATAL) << "Unknown WorkOrder Type in WorkOrderFactory::ReconstructFromProto"; } @@ -697,6 +714,14 @@ bool WorkOrderFactory::ProtoIsValid(const serialization::WorkOrder &proto, proto.HasExtension(serialization::UpdateWorkOrder::operator_index) && proto.HasExtension(serialization::UpdateWorkOrder::block_id); } + case serialization::WINDOW_AGGREGATION: { + return proto.HasExtension(serialization::WindowAggregationWorkOrder::window_aggr_state_index) && + query_context.isValidWindowAggregationStateId( + proto.GetExtension(serialization::WindowAggregationWorkOrder::window_aggr_state_index)) && + proto.HasExtension(serialization::WindowAggregationWorkOrder::insert_destination_index) && + query_context.isValidInsertDestinationId( + proto.GetExtension(serialization::WindowAggregationWorkOrder::insert_destination_index)); + } default: return false; }