| 64 | IcebergDeleteNode::~IcebergDeleteNode() {} |
| 65 | |
| 66 | Status IcebergDeleteNode::Prepare(RuntimeState* state) { |
| 67 | SCOPED_TIMER(runtime_profile_->total_time_counter()); |
| 68 | |
| 69 | RETURN_IF_ERROR(BlockingJoinNode::Prepare(state)); |
| 70 | runtime_state_ = state; |
| 71 | if (!UseSeparateBuild(state->query_options())) { |
| 72 | const IcebergDeleteBuilderConfig& builder_config = |
| 73 | *static_cast<const IcebergDeletePlanNode&>(plan_node_).id_builder_config_; |
| 74 | builder_ = builder_config.CreateSink(buffer_pool_client(), |
| 75 | resource_profile_.spillable_buffer_size, resource_profile_.max_row_buffer_size, |
| 76 | state); |
| 77 | RETURN_IF_ERROR(builder_->Prepare(state, mem_tracker())); |
| 78 | runtime_profile()->PrependChild(builder_->profile()); |
| 79 | } |
| 80 | |
| 81 | auto& tuple_descs = probe_row_desc().tuple_descriptors(); |
| 82 | auto& slot_descs = tuple_descs[0]->slots(); |
| 83 | |
| 84 | for (auto& slot : slot_descs) { |
| 85 | if (slot->virtual_column_type() == TVirtualColumnType::FILE_POSITION) { |
| 86 | pos_offset_ = slot->tuple_offset(); |
| 87 | } |
| 88 | if (slot->virtual_column_type() == TVirtualColumnType::INPUT_FILE_NAME) { |
| 89 | file_path_offset_ = slot->tuple_offset(); |
| 90 | } |
| 91 | } |
| 92 | |
| 93 | prepare_succeeded_ = true; |
| 94 | return Status::OK(); |
| 95 | } |
| 96 | |
| 97 | Status IcebergDeleteNode::Open(RuntimeState* state) { |
| 98 | SCOPED_TIMER(runtime_profile_->total_time_counter()); |
nothing calls this directly
no test coverage detected