From 4ec6e3ee816692628c48429f238dc0389747e047 Mon Sep 17 00:00:00 2001 From: yiguolei <676222867@qq.com> Date: Wed, 29 Jun 2022 20:37:51 +0800 Subject: [PATCH] [refactor] Remove debug action since it is never used. (#10484) Co-authored-by: yiguolei --- be/src/exec/analytic_eval_node.cpp | 1 - be/src/exec/assert_num_rows_node.cpp | 1 - be/src/exec/broker_scan_node.cpp | 2 - be/src/exec/cross_join_node.cpp | 1 - be/src/exec/csv_scan_node.cpp | 3 - be/src/exec/es_http_scan_node.cpp | 2 - be/src/exec/except_node.cpp | 1 - be/src/exec/exchange_node.cpp | 1 - be/src/exec/exec_node.cpp | 56 ------------------- be/src/exec/exec_node.h | 18 ------ be/src/exec/hash_join_node.cpp | 3 - be/src/exec/intersect_node.cpp | 1 - be/src/exec/merge_node.cpp | 1 - be/src/exec/mysql_scan_node.cpp | 3 - be/src/exec/odbc_scan_node.cpp | 3 - be/src/exec/olap_scan_node.cpp | 3 - be/src/exec/partitioned_aggregation_node.cc | 1 - be/src/exec/schema_scan_node.cpp | 2 - be/src/exec/select_node.cpp | 2 - be/src/exec/set_operation_node.cpp | 2 - be/src/exec/spill_sort_node.cc | 2 - be/src/exec/table_function_node.cpp | 2 - be/src/exec/topn_node.cpp | 1 - be/src/exec/union_node.cpp | 3 - be/src/runtime/plan_fragment_executor.cpp | 7 --- be/src/vec/exec/file_scan_node.cpp | 2 - be/src/vec/exec/join/vhash_join_node.cpp | 1 - be/src/vec/exec/vanalytic_eval_node.cpp | 1 - be/src/vec/exec/vassert_num_rows_node.cpp | 1 - be/src/vec/exec/vbroker_scan_node.cpp | 2 - be/src/vec/exec/ves_http_scan_node.cpp | 2 - be/src/vec/exec/vmysql_scan_node.cpp | 3 - be/src/vec/exec/vodbc_scan_node.cpp | 4 -- be/src/vec/exec/volap_scan_node.cpp | 3 - be/src/vec/exec/vrepeat_node.cpp | 2 - be/src/vec/exec/vschema_scan_node.cpp | 3 - be/src/vec/exec/vselect_node.cpp | 2 - .../exec/vtable_valued_function_scannode.cpp | 4 -- be/src/vec/exec/vunion_node.cpp | 1 - gensrc/thrift/PaloInternalService.thrift | 8 +-- 40 files changed, 4 insertions(+), 157 deletions(-) diff --git a/be/src/exec/analytic_eval_node.cpp b/be/src/exec/analytic_eval_node.cpp index 9b2c6803db..7a104a724e 100644 --- a/be/src/exec/analytic_eval_node.cpp +++ b/be/src/exec/analytic_eval_node.cpp @@ -817,7 +817,6 @@ inline int64_t AnalyticEvalNode::num_output_rows_ready() const { Status AnalyticEvalNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); //RETURN_IF_ERROR(QueryMaintenance(state)); RETURN_IF_ERROR(state->check_query_state("Analytic eval, while get_next.")); diff --git a/be/src/exec/assert_num_rows_node.cpp b/be/src/exec/assert_num_rows_node.cpp index e101b245ea..c91d7ef085 100644 --- a/be/src/exec/assert_num_rows_node.cpp +++ b/be/src/exec/assert_num_rows_node.cpp @@ -57,7 +57,6 @@ Status AssertNumRowsNode::open(RuntimeState* state) { } Status AssertNumRowsNode::get_next(RuntimeState* state, RowBatch* output_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); output_batch->reset(); diff --git a/be/src/exec/broker_scan_node.cpp b/be/src/exec/broker_scan_node.cpp index fb47d2b821..fce8757e65 100644 --- a/be/src/exec/broker_scan_node.cpp +++ b/be/src/exec/broker_scan_node.cpp @@ -93,7 +93,6 @@ Status BrokerScanNode::open(RuntimeState* state) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); RETURN_IF_ERROR(ExecNode::open(state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(start_scanners()); @@ -196,7 +195,6 @@ Status BrokerScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _scan_finished.store(true); _queue_writer_cond.notify_all(); diff --git a/be/src/exec/cross_join_node.cpp b/be/src/exec/cross_join_node.cpp index 38084768b8..8488ebfc49 100644 --- a/be/src/exec/cross_join_node.cpp +++ b/be/src/exec/cross_join_node.cpp @@ -82,7 +82,6 @@ void CrossJoinNode::init_get_next(TupleRow* first_left_row) { } Status CrossJoinNode::get_next(RuntimeState* state, RowBatch* output_batch, bool* eos) { - // RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT, state)); RETURN_IF_CANCELLED(state); *eos = false; // TOOD(zhaochun) diff --git a/be/src/exec/csv_scan_node.cpp b/be/src/exec/csv_scan_node.cpp index 1b0e406c82..66169935d7 100644 --- a/be/src/exec/csv_scan_node.cpp +++ b/be/src/exec/csv_scan_node.cpp @@ -220,7 +220,6 @@ Status CsvScanNode::open(RuntimeState* state) { _runtime_state = state; - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(_csv_scanner->open()); @@ -237,7 +236,6 @@ Status CsvScanNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos return Status::InternalError("used before initialize."); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); @@ -318,7 +316,6 @@ Status CsvScanNode::close(RuntimeState* state) { return Status::OK(); } VLOG_CRITICAL << "CsvScanNode::Close"; - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); diff --git a/be/src/exec/es_http_scan_node.cpp b/be/src/exec/es_http_scan_node.cpp index ee762a68f4..f31059cb3b 100644 --- a/be/src/exec/es_http_scan_node.cpp +++ b/be/src/exec/es_http_scan_node.cpp @@ -125,7 +125,6 @@ Status EsHttpScanNode::open(RuntimeState* state) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); RETURN_IF_ERROR(ExecNode::open(state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); // if conjunct is constant, compute direct and set eos = true @@ -286,7 +285,6 @@ Status EsHttpScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _scan_finished.store(true); _queue_writer_cond.notify_all(); diff --git a/be/src/exec/except_node.cpp b/be/src/exec/except_node.cpp index 79ce14fa3d..03fc7b229f 100644 --- a/be/src/exec/except_node.cpp +++ b/be/src/exec/except_node.cpp @@ -85,7 +85,6 @@ Status ExceptNode::open(RuntimeState* state) { } Status ExceptNode::get_next(RuntimeState* state, RowBatch* out_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); diff --git a/be/src/exec/exchange_node.cpp b/be/src/exec/exchange_node.cpp index f1c221b65c..e510f7af28 100644 --- a/be/src/exec/exchange_node.cpp +++ b/be/src/exec/exchange_node.cpp @@ -133,7 +133,6 @@ Status ExchangeNode::fill_input_row_batch(RuntimeState* state) { } Status ExchangeNode::get_next(RuntimeState* state, RowBatch* output_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); diff --git a/be/src/exec/exec_node.cpp b/be/src/exec/exec_node.cpp index 54d2fdbea6..5da036505a 100644 --- a/be/src/exec/exec_node.cpp +++ b/be/src/exec/exec_node.cpp @@ -144,8 +144,6 @@ ExecNode::ExecNode(ObjectPool* pool, const TPlanNode& tnode, const DescriptorTbl _tuple_ids(tnode.row_tuples), _row_descriptor(descs, tnode.row_tuples, tnode.nullable_tuples), _resource_profile(tnode.resource_profile), - _debug_phase(TExecNodePhase::INVALID), - _debug_action(TDebugAction::WAIT), _limit(tnode.limit), _num_rows_returned(0), _rows_returned_counter(nullptr), @@ -200,7 +198,6 @@ Status ExecNode::init(const TPlanNode& tnode, RuntimeState* state) { } Status ExecNode::prepare(RuntimeState* state) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::PREPARE)); DCHECK(_runtime_profile.get() != nullptr); _rows_returned_counter = ADD_COUNTER(_runtime_profile, "RowsReturned", TUnit::UNIT); _rows_returned_rate = runtime_profile()->add_derived_counter( @@ -231,7 +228,6 @@ Status ExecNode::prepare(RuntimeState* state) { Status ExecNode::open(RuntimeState* state) { SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(_mem_tracker); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); if (_vconjunct_ctx_ptr) { RETURN_IF_ERROR((*_vconjunct_ctx_ptr)->open(state)); } @@ -259,7 +255,6 @@ Status ExecNode::close(RuntimeState* state) { return Status::OK(); } _is_closed = true; - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); if (_rows_returned_counter != nullptr) { COUNTER_SET(_rows_returned_counter, _num_rows_returned); @@ -611,19 +606,6 @@ Status ExecNode::create_node(RuntimeState* state, ObjectPool* pool, const TPlanN return Status::OK(); } -void ExecNode::set_debug_options(int node_id, TExecNodePhase::type phase, TDebugAction::type action, - ExecNode* root) { - if (root->_id == node_id) { - root->_debug_phase = phase; - root->_debug_action = action; - return; - } - - for (int i = 0; i < root->_children.size(); ++i) { - set_debug_options(node_id, phase, action, root->_children[i]); - } -} - std::string ExecNode::debug_string() const { std::stringstream out; this->debug_string(0, &out); @@ -700,26 +682,6 @@ void ExecNode::init_runtime_profile(const std::string& name) { _runtime_profile->set_metadata(_id); } -Status ExecNode::exec_debug_action(TExecNodePhase::type phase) { - DCHECK(phase != TExecNodePhase::INVALID); - - if (_debug_phase != phase) { - return Status::OK(); - } - - if (_debug_action == TDebugAction::FAIL) { - return Status::InternalError("Debug Action: FAIL"); - } - - if (_debug_action == TDebugAction::WAIT) { - while (true) { - sleep(1); - } - } - - return Status::OK(); -} - Status ExecNode::claim_buffer_reservation(RuntimeState* state) { DCHECK(!_buffer_pool_client.is_registered()); BufferPool* buffer_pool = ExecEnv::GetInstance()->buffer_pool(); @@ -772,24 +734,6 @@ void ExecNode::reached_limit(vectorized::Block* block, bool* eos) { COUNTER_SET(_rows_returned_counter, _num_rows_returned); } -/* -Status ExecNode::enable_deny_reservation_debug_action() { - DCHECK_EQ(debug_action_, TDebugAction::SET_DENY_RESERVATION_PROBABILITY); - DCHECK(_buffer_pool_client.is_registered()); - // Parse [0.0, 1.0] probability. - StringParser::ParseResult parse_result; - double probability = StringParser::StringToFloat( - debug_action_param_.c_str(), debug_action_param_.size(), &parse_result); - if (parse_result != StringParser::PARSE_SUCCESS || probability < 0.0 - || probability > 1.0) { - return Status::InternalError(strings::Substitute( - "Invalid SET_DENY_RESERVATION_PROBABILITY param: '$0'", debug_action_param_)); - } - _buffer_pool_client.SetDebugDenyIncreaseReservation(probability); - return Status::OK()(); -} -*/ - Status ExecNode::QueryMaintenance(RuntimeState* state, const std::string& msg) { // TODO chenhao , when introduce latest AnalyticEvalNode open it // ScalarExprEvaluator::FreeLocalAllocations(evals_to_free_); diff --git a/be/src/exec/exec_node.h b/be/src/exec/exec_node.h index 35e495d158..fe3ab8b8e3 100644 --- a/be/src/exec/exec_node.h +++ b/be/src/exec/exec_node.h @@ -142,10 +142,6 @@ public: static Status create_tree(RuntimeState* state, ObjectPool* pool, const TPlan& plan, const DescriptorTbl& descs, ExecNode** root); - // Set debug action for node with given id in 'tree' - static void set_debug_options(int node_id, TExecNodePhase::type phase, - TDebugAction::type action, ExecNode* tree); - // Collect all nodes of given 'node_type' that are part of this subtree, and return in // 'nodes'. void collect_nodes(TPlanNodeType::type node_type, std::vector* nodes); @@ -227,11 +223,6 @@ protected: // and add block rows for profile void reached_limit(vectorized::Block* block, bool* eos); - /// Enable the increase reservation denial probability on 'buffer_pool_client_' based on - /// the 'debug_action_' set on this node. Returns an error if 'debug_action_param_' is - /// invalid. - //Status enable_deny_reservation_debug_action(); - /// Extends blocking queue for row batches. Row batches have a property that /// they must be processed in the order they were produced, even in cancellation /// paths. Preceding row batches can contain ptrs to memory in subsequent row batches @@ -291,11 +282,6 @@ protected: /// Resource information sent from the frontend. const TBackendResourceProfile _resource_profile; - // debug-only: if _debug_action is not INVALID, node will perform action in - // _debug_phase - TExecNodePhase::type _debug_phase; - TDebugAction::type _debug_action; - int64_t _limit; // -1: no limit int64_t _num_rows_returned; @@ -349,10 +335,6 @@ protected: void init_runtime_profile(const std::string& name); - // Executes _debug_action if phase matches _debug_phase. - // 'phase' must not be INVALID. - Status exec_debug_action(TExecNodePhase::type phase); - // Appends option to '_runtime_exec_options' void add_runtime_exec_option(const std::string& option); diff --git a/be/src/exec/hash_join_node.cpp b/be/src/exec/hash_join_node.cpp index da822b9142..383007d112 100644 --- a/be/src/exec/hash_join_node.cpp +++ b/be/src/exec/hash_join_node.cpp @@ -160,7 +160,6 @@ Status HashJoinNode::close(RuntimeState* state) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); // Must reset _probe_batch in close() to release resources _probe_batch.reset(nullptr); @@ -220,7 +219,6 @@ Status HashJoinNode::construct_hash_table(RuntimeState* state) { Status HashJoinNode::open(RuntimeState* state) { RETURN_IF_ERROR(ExecNode::open(state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); RETURN_IF_CANCELLED(state); @@ -302,7 +300,6 @@ Status HashJoinNode::open(RuntimeState* state) { } Status HashJoinNode::get_next(RuntimeState* state, RowBatch* out_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); // In most cases, no additional memory overhead will be applied for at this stage, // but if the expression calculation in this node needs to apply for additional memory, diff --git a/be/src/exec/intersect_node.cpp b/be/src/exec/intersect_node.cpp index 3aac0adfd7..68fa46c288 100644 --- a/be/src/exec/intersect_node.cpp +++ b/be/src/exec/intersect_node.cpp @@ -84,7 +84,6 @@ Status IntersectNode::open(RuntimeState* state) { } Status IntersectNode::get_next(RuntimeState* state, RowBatch* out_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); diff --git a/be/src/exec/merge_node.cpp b/be/src/exec/merge_node.cpp index 5fe2259059..f57fa38686 100644 --- a/be/src/exec/merge_node.cpp +++ b/be/src/exec/merge_node.cpp @@ -110,7 +110,6 @@ Status MergeNode::open(RuntimeState* state) { } Status MergeNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); diff --git a/be/src/exec/mysql_scan_node.cpp b/be/src/exec/mysql_scan_node.cpp index 641c10a582..3e161c1df9 100644 --- a/be/src/exec/mysql_scan_node.cpp +++ b/be/src/exec/mysql_scan_node.cpp @@ -113,7 +113,6 @@ Status MysqlScanNode::open(RuntimeState* state) { return Status::InternalError("used before initialize."); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(_mysql_scanner->open()); RETURN_IF_ERROR(_mysql_scanner->query(_table_name, _columns, _filters, _limit)); @@ -158,7 +157,6 @@ Status MysqlScanNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* e return Status::InternalError("used before initialize."); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); @@ -244,7 +242,6 @@ Status MysqlScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _tuple_pool.reset(); diff --git a/be/src/exec/odbc_scan_node.cpp b/be/src/exec/odbc_scan_node.cpp index 8ea597b0f4..3d6f7f65e7 100644 --- a/be/src/exec/odbc_scan_node.cpp +++ b/be/src/exec/odbc_scan_node.cpp @@ -105,7 +105,6 @@ Status OdbcScanNode::open(RuntimeState* state) { return Status::InternalError("used before initialize."); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(_odbc_scanner->open()); RETURN_IF_ERROR(_odbc_scanner->query()); @@ -138,7 +137,6 @@ Status OdbcScanNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eo return Status::InternalError("used before initialize."); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); @@ -234,7 +232,6 @@ Status OdbcScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _tuple_pool.reset(); diff --git a/be/src/exec/olap_scan_node.cpp b/be/src/exec/olap_scan_node.cpp index f1d698ed7a..d21b795e1d 100644 --- a/be/src/exec/olap_scan_node.cpp +++ b/be/src/exec/olap_scan_node.cpp @@ -272,7 +272,6 @@ Status OlapScanNode::open(RuntimeState* state) { } Status OlapScanNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); @@ -389,8 +388,6 @@ Status OlapScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); - // change done status { std::unique_lock l(_row_batches_lock); diff --git a/be/src/exec/partitioned_aggregation_node.cc b/be/src/exec/partitioned_aggregation_node.cc index 9bd0d7dd1e..083c9c8a4f 100644 --- a/be/src/exec/partitioned_aggregation_node.cc +++ b/be/src/exec/partitioned_aggregation_node.cc @@ -422,7 +422,6 @@ Status PartitionedAggregationNode::CopyStringData(const SlotDescriptor& slot_des Status PartitionedAggregationNode::GetNextInternal(RuntimeState* state, RowBatch* row_batch, bool* eos) { SCOPED_TIMER(_runtime_profile->total_time_counter()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(state->check_query_state("New partitioned aggregation, while getting next.")); // clear tmp expr result alocations diff --git a/be/src/exec/schema_scan_node.cpp b/be/src/exec/schema_scan_node.cpp index befb694a13..d2332f219f 100644 --- a/be/src/exec/schema_scan_node.cpp +++ b/be/src/exec/schema_scan_node.cpp @@ -194,7 +194,6 @@ Status SchemaScanNode::open(RuntimeState* state) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(ExecNode::open(state)); @@ -303,7 +302,6 @@ Status SchemaScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _tuple_pool.reset(); diff --git a/be/src/exec/select_node.cpp b/be/src/exec/select_node.cpp index a0c8cebb84..e59557e8e7 100644 --- a/be/src/exec/select_node.cpp +++ b/be/src/exec/select_node.cpp @@ -42,14 +42,12 @@ Status SelectNode::prepare(RuntimeState* state) { Status SelectNode::open(RuntimeState* state) { SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_ERROR(ExecNode::open(state)); RETURN_IF_ERROR(child(0)->open(state)); return Status::OK(); } Status SelectNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); diff --git a/be/src/exec/set_operation_node.cpp b/be/src/exec/set_operation_node.cpp index b5ed4b0133..8126b380f4 100644 --- a/be/src/exec/set_operation_node.cpp +++ b/be/src/exec/set_operation_node.cpp @@ -75,7 +75,6 @@ Status SetOperationNode::close(RuntimeState* state) { Expr::close(exprs, state); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); // Must reset _probe_batch in close() to release resources _probe_batch.reset(nullptr); @@ -136,7 +135,6 @@ bool SetOperationNode::equals(TupleRow* row, TupleRow* other) { Status SetOperationNode::open(RuntimeState* state) { RETURN_IF_ERROR(ExecNode::open(state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); SCOPED_SWITCH_THREAD_LOCAL_MEM_TRACKER_ERR_CB( diff --git a/be/src/exec/spill_sort_node.cc b/be/src/exec/spill_sort_node.cc index 32f1217e5b..9c839598d8 100644 --- a/be/src/exec/spill_sort_node.cc +++ b/be/src/exec/spill_sort_node.cc @@ -83,8 +83,6 @@ Status SpillSortNode::open(RuntimeState* state) { Status SpillSortNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); - // RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT, state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(state->check_query_state("Spill sort, while getting next.")); diff --git a/be/src/exec/table_function_node.cpp b/be/src/exec/table_function_node.cpp index 311ef9007c..e95914bd22 100644 --- a/be/src/exec/table_function_node.cpp +++ b/be/src/exec/table_function_node.cpp @@ -196,7 +196,6 @@ bool TableFunctionNode::_roll_table_functions(int last_eos_idx) { // The outer loop is to get the next batch from child node. // And the inner loop is to expand the row by table functions, and output row by row. Status TableFunctionNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); @@ -375,7 +374,6 @@ Status TableFunctionNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); Expr::close(_fn_ctxs, state); vectorized::VExpr::close(_vfn_ctxs, state); diff --git a/be/src/exec/topn_node.cpp b/be/src/exec/topn_node.cpp index e9494ec102..4ce44e4ce4 100644 --- a/be/src/exec/topn_node.cpp +++ b/be/src/exec/topn_node.cpp @@ -131,7 +131,6 @@ Status TopNNode::open(RuntimeState* state) { Status TopNNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(state->check_query_state("Top n, before moving result to row_batch.")); diff --git a/be/src/exec/union_node.cpp b/be/src/exec/union_node.cpp index 2de9ff0fd3..75efcaa1f1 100644 --- a/be/src/exec/union_node.cpp +++ b/be/src/exec/union_node.cpp @@ -236,10 +236,7 @@ Status UnionNode::get_next_const(RuntimeState* state, RowBatch* row_batch) { Status UnionNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); - // TODO(zc) - // RETURN_IF_ERROR(QueryMaintenance(state)); if (_to_close_child_idx != -1) { // The previous child needs to be closed if passthrough was enabled for it. In the non diff --git a/be/src/runtime/plan_fragment_executor.cpp b/be/src/runtime/plan_fragment_executor.cpp index 2745215bfb..908dba4057 100644 --- a/be/src/runtime/plan_fragment_executor.cpp +++ b/be/src/runtime/plan_fragment_executor.cpp @@ -129,13 +129,6 @@ Status PlanFragmentExecutor::prepare(const TExecPlanFragmentParams& request, *desc_tbl, &_plan)); _runtime_state->set_fragment_root_id(_plan->id()); - if (params.__isset.debug_node_id) { - DCHECK(params.__isset.debug_action); - DCHECK(params.__isset.debug_phase); - ExecNode::set_debug_options(params.debug_node_id, params.debug_phase, params.debug_action, - _plan); - } - // set #senders of exchange nodes before calling Prepare() std::vector exch_nodes; _plan->collect_nodes(TPlanNodeType::EXCHANGE_NODE, &exch_nodes); diff --git a/be/src/vec/exec/file_scan_node.cpp b/be/src/vec/exec/file_scan_node.cpp index b01fc739e2..10ecfde835 100644 --- a/be/src/vec/exec/file_scan_node.cpp +++ b/be/src/vec/exec/file_scan_node.cpp @@ -86,7 +86,6 @@ Status FileScanNode::open(RuntimeState* state) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); RETURN_IF_ERROR(ExecNode::open(state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(start_scanners()); @@ -197,7 +196,6 @@ Status FileScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _scan_finished.store(true); _queue_writer_cond.notify_all(); diff --git a/be/src/vec/exec/join/vhash_join_node.cpp b/be/src/vec/exec/join/vhash_join_node.cpp index e625c6c883..4c75eb99bd 100644 --- a/be/src/vec/exec/join/vhash_join_node.cpp +++ b/be/src/vec/exec/join/vhash_join_node.cpp @@ -974,7 +974,6 @@ Status HashJoinNode::open(RuntimeState* state) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); RETURN_IF_ERROR(ExecNode::open(state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(VExpr::open(_build_expr_ctxs, state)); diff --git a/be/src/vec/exec/vanalytic_eval_node.cpp b/be/src/vec/exec/vanalytic_eval_node.cpp index 37b2406e6f..49d9b11d51 100644 --- a/be/src/vec/exec/vanalytic_eval_node.cpp +++ b/be/src/vec/exec/vanalytic_eval_node.cpp @@ -250,7 +250,6 @@ Status VAnalyticEvalNode::get_next(RuntimeState* state, RowBatch* row_batch, boo Status VAnalyticEvalNode::get_next(RuntimeState* state, vectorized::Block* block, bool* eos) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); if (_input_eos && _output_block_index == _input_blocks.size()) { diff --git a/be/src/vec/exec/vassert_num_rows_node.cpp b/be/src/vec/exec/vassert_num_rows_node.cpp index e07983a23c..9bc7db4077 100644 --- a/be/src/vec/exec/vassert_num_rows_node.cpp +++ b/be/src/vec/exec/vassert_num_rows_node.cpp @@ -47,7 +47,6 @@ Status VAssertNumRowsNode::open(RuntimeState* state) { } Status VAssertNumRowsNode::get_next(RuntimeState* state, Block* block, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); SCOPED_TIMER(_runtime_profile->total_time_counter()); RETURN_IF_ERROR(child(0)->get_next(state, block, eos)); _num_rows_returned += block->rows(); diff --git a/be/src/vec/exec/vbroker_scan_node.cpp b/be/src/vec/exec/vbroker_scan_node.cpp index d6e926a7b8..0d639b7077 100644 --- a/be/src/vec/exec/vbroker_scan_node.cpp +++ b/be/src/vec/exec/vbroker_scan_node.cpp @@ -89,7 +89,6 @@ Status VBrokerScanNode::open(RuntimeState* state) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); RETURN_IF_ERROR(ExecNode::open(state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(start_scanners()); @@ -200,7 +199,6 @@ Status VBrokerScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _scan_finished.store(true); _queue_writer_cond.notify_all(); diff --git a/be/src/vec/exec/ves_http_scan_node.cpp b/be/src/vec/exec/ves_http_scan_node.cpp index 9f7d04c1e8..b5dcf02840 100644 --- a/be/src/vec/exec/ves_http_scan_node.cpp +++ b/be/src/vec/exec/ves_http_scan_node.cpp @@ -123,7 +123,6 @@ Status VEsHttpScanNode::open(RuntimeState* state) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); RETURN_IF_ERROR(ExecNode::open(state)); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); // if conjunct is constant, compute direct and set eos = true @@ -336,7 +335,6 @@ Status VEsHttpScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _scan_finished.store(true); _queue_writer_cond.notify_all(); diff --git a/be/src/vec/exec/vmysql_scan_node.cpp b/be/src/vec/exec/vmysql_scan_node.cpp index 58e4355b3e..3ba8a4e3b4 100644 --- a/be/src/vec/exec/vmysql_scan_node.cpp +++ b/be/src/vec/exec/vmysql_scan_node.cpp @@ -111,7 +111,6 @@ Status VMysqlScanNode::open(RuntimeState* state) { return Status::InternalError("used before initialize."); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(_mysql_scanner->open()); RETURN_IF_ERROR(_mysql_scanner->query(_table_name, _columns, _filters, _limit)); @@ -150,7 +149,6 @@ Status VMysqlScanNode::get_next(RuntimeState* state, vectorized::Block* block, b if (state == NULL || block == NULL || eos == NULL) return Status::InternalError("input is NULL pointer"); if (!_is_init) return Status::InternalError("used before initialize."); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); bool mem_reuse = block->mem_reuse(); DCHECK(block->rows() == 0); @@ -239,7 +237,6 @@ Status VMysqlScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _tuple_pool.reset(); diff --git a/be/src/vec/exec/vodbc_scan_node.cpp b/be/src/vec/exec/vodbc_scan_node.cpp index 7ff1d7e8d1..f536df22bd 100644 --- a/be/src/vec/exec/vodbc_scan_node.cpp +++ b/be/src/vec/exec/vodbc_scan_node.cpp @@ -98,7 +98,6 @@ Status VOdbcScanNode::open(RuntimeState* state) { return Status::InternalError("used before initialize."); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(_odbc_scanner->open()); RETURN_IF_ERROR(_odbc_scanner->query()); @@ -130,8 +129,6 @@ Status VOdbcScanNode::get_next(RuntimeState* state, Block* block, bool* eos) { if (!is_init()) { return Status::InternalError("used before initialize."); } - - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); auto odbc_scanner = get_odbc_scanner(); @@ -223,7 +220,6 @@ Status VOdbcScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _tuple_pool.reset(); diff --git a/be/src/vec/exec/volap_scan_node.cpp b/be/src/vec/exec/volap_scan_node.cpp index cd7e39492b..c18023a88c 100644 --- a/be/src/vec/exec/volap_scan_node.cpp +++ b/be/src/vec/exec/volap_scan_node.cpp @@ -1511,8 +1511,6 @@ Status VOlapScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); - // change done status { std::unique_lock l(_blocks_lock); @@ -1557,7 +1555,6 @@ Status VOlapScanNode::close(RuntimeState* state) { } Status VOlapScanNode::get_next(RuntimeState* state, Block* block, bool* eos) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker()); diff --git a/be/src/vec/exec/vrepeat_node.cpp b/be/src/vec/exec/vrepeat_node.cpp index 85eb1784b1..636ad5dd43 100644 --- a/be/src/vec/exec/vrepeat_node.cpp +++ b/be/src/vec/exec/vrepeat_node.cpp @@ -176,8 +176,6 @@ Status VRepeatNode::get_next(RuntimeState* state, Block* block, bool* eos) { if (state == nullptr || block == nullptr || eos == nullptr) { return Status::InternalError("input is NULL pointer"); } - - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); DCHECK(_repeat_id_idx >= 0); for (const std::vector& v : _grouping_list) { diff --git a/be/src/vec/exec/vschema_scan_node.cpp b/be/src/vec/exec/vschema_scan_node.cpp index 07e8d638f5..4df6bc4151 100644 --- a/be/src/vec/exec/vschema_scan_node.cpp +++ b/be/src/vec/exec/vschema_scan_node.cpp @@ -105,7 +105,6 @@ Status VSchemaScanNode::open(RuntimeState* state) { SCOPED_TIMER(_runtime_profile->total_time_counter()); SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); RETURN_IF_ERROR(ExecNode::open(state)); @@ -238,7 +237,6 @@ Status VSchemaScanNode::get_next(RuntimeState* state, vectorized::Block* block, if (state == NULL || block == NULL || eos == NULL) return Status::InternalError("input is NULL pointer"); if (!_is_init) return Status::InternalError("used before initialize."); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); std::vector columns(_slot_num); bool schema_eos = false; @@ -459,7 +457,6 @@ Status VSchemaScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); SCOPED_TIMER(_runtime_profile->total_time_counter()); _tuple_pool.reset(); diff --git a/be/src/vec/exec/vselect_node.cpp b/be/src/vec/exec/vselect_node.cpp index 7482024d63..b81b19c1ad 100644 --- a/be/src/vec/exec/vselect_node.cpp +++ b/be/src/vec/exec/vselect_node.cpp @@ -32,7 +32,6 @@ Status VSelectNode::prepare(RuntimeState* state) { } Status VSelectNode::open(RuntimeState* state) { - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_ERROR(ExecNode::open(state)); RETURN_IF_ERROR(child(0)->open(state)); return Status::OK(); @@ -44,7 +43,6 @@ Status VSelectNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos Status VSelectNode::get_next(RuntimeState* state, vectorized::Block* block, bool* eos) { SCOPED_TIMER(_runtime_profile->total_time_counter()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); do { RETURN_IF_CANCELLED(state); diff --git a/be/src/vec/exec/vtable_valued_function_scannode.cpp b/be/src/vec/exec/vtable_valued_function_scannode.cpp index 8f810b17c3..ba015c5877 100644 --- a/be/src/vec/exec/vtable_valued_function_scannode.cpp +++ b/be/src/vec/exec/vtable_valued_function_scannode.cpp @@ -80,8 +80,6 @@ Status VTableValuedFunctionScanNode::open(RuntimeState* state) { if (!_is_init) { return Status::InternalError("used before initialize."); } - - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::OPEN)); RETURN_IF_CANCELLED(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); @@ -98,7 +96,6 @@ Status VTableValuedFunctionScanNode::get_next(RuntimeState* state, vectorized::B if (state == nullptr || block == nullptr || eos == nullptr) { return Status::InternalError("input is NULL pointer"); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); Status res = _table_func->get_next(state, block, eos); RETURN_IF_ERROR(VExprContext::filter_block(_vconjunct_ctx_ptr, block, block->columns())); @@ -110,7 +107,6 @@ Status VTableValuedFunctionScanNode::close(RuntimeState* state) { if (is_closed()) { return Status::OK(); } - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::CLOSE)); _table_func->close(state); SCOPED_TIMER(_runtime_profile->total_time_counter()); diff --git a/be/src/vec/exec/vunion_node.cpp b/be/src/vec/exec/vunion_node.cpp index 15494c24f9..b713d4f1a1 100644 --- a/be/src/vec/exec/vunion_node.cpp +++ b/be/src/vec/exec/vunion_node.cpp @@ -214,7 +214,6 @@ Status VUnionNode::get_next_const(RuntimeState* state, Block* block) { Status VUnionNode::get_next(RuntimeState* state, Block* block, bool* eos) { SCOPED_TIMER(_runtime_profile->total_time_counter()); - RETURN_IF_ERROR(exec_debug_action(TExecNodePhase::GETNEXT)); RETURN_IF_CANCELLED(state); // RETURN_IF_ERROR(QueryMaintenance(state)); diff --git a/gensrc/thrift/PaloInternalService.thrift b/gensrc/thrift/PaloInternalService.thrift index aa1576b95a..e2b73efd84 100644 --- a/gensrc/thrift/PaloInternalService.thrift +++ b/gensrc/thrift/PaloInternalService.thrift @@ -94,7 +94,7 @@ struct TQueryOptions { 8: optional i32 max_io_buffers = 0 9: optional bool allow_unsupported_formats = 0 10: optional i64 default_order_by_limit = -1 - 11: optional string debug_action = "" + // 11: optional string debug_action = "" // Never used 12: optional i64 mem_limit = 2147483648 13: optional bool abort_on_default_limit_exceeded = 0 14: optional i32 query_timeout = 3600 @@ -227,9 +227,9 @@ struct TPlanFragmentExecParams { 5: list destinations // Debug options: perform some action in a particular phase of a particular node - 6: optional Types.TPlanNodeId debug_node_id - 7: optional PlanNodes.TExecNodePhase debug_phase - 8: optional PlanNodes.TDebugAction debug_action + // 6: optional Types.TPlanNodeId debug_node_id // Never used + // 7: optional PlanNodes.TExecNodePhase debug_phase // Never used + // 8: optional PlanNodes.TDebugAction debug_action // Never used // Id of this fragment in its role as a sender. 9: optional i32 sender_id