MCPcopy Create free account
hub / github.com/apache/impala / Init

Method Init

be/src/exec/union-node.cc:36–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34using namespace impala;
35
36Status UnionPlanNode::Init(const TPlanNode& tnode, FragmentState* state) {
37 RETURN_IF_ERROR(PlanNode::Init(tnode, state));
38 DCHECK(tnode_->__isset.union_node);
39 DCHECK_EQ(conjuncts_.size(), 0);
40 tuple_desc_ = state->desc_tbl().GetTupleDescriptor(tnode_->union_node.tuple_id);
41 DCHECK(tuple_desc_ != nullptr);
42 first_materialized_child_idx_ = tnode_->union_node.first_materialized_child_idx;
43 DCHECK_GT(first_materialized_child_idx_, -1);
44 const int64_t num_nonconst_scalar_expr_to_be_codegened =
45 state->NumScalarExprNeedsCodegen();
46 // Create const_exprs_lists_ from thrift exprs.
47 const vector<vector<TExpr>>& const_texpr_lists = tnode_->union_node.const_expr_lists;
48 for (const vector<TExpr>& texprs : const_texpr_lists) {
49 vector<ScalarExpr*> const_exprs;
50 RETURN_IF_ERROR(ScalarExpr::Create(texprs, *row_descriptor_, state, &const_exprs));
51 DCHECK_EQ(const_exprs.size(), tuple_desc_->slots().size());
52 const_exprs_lists_.push_back(const_exprs);
53 }
54 num_const_scalar_expr_to_be_codegened_ =
55 state->NumScalarExprNeedsCodegen() - num_nonconst_scalar_expr_to_be_codegened;
56 // Create child_exprs_lists_ from thrift exprs.
57 const vector<vector<TExpr>>& thrift_result_exprs = tnode_->union_node.result_expr_lists;
58 for (int i = 0; i < thrift_result_exprs.size(); ++i) {
59 const vector<TExpr>& texprs = thrift_result_exprs[i];
60 vector<ScalarExpr*> child_exprs;
61 RETURN_IF_ERROR(
62 ScalarExpr::Create(texprs, *children_[i]->row_descriptor_, state, &child_exprs));
63 child_exprs_lists_.push_back(child_exprs);
64 DCHECK_EQ(child_exprs.size(), tuple_desc_->slots().size());
65 }
66 codegend_union_materialize_batch_fns_ =
67 std::vector<CodegenFnPtr<UnionMaterializeBatchFn>>(child_exprs_lists_.size());
68 return Status::OK();
69}
70
71void UnionPlanNode::Close() {
72 for (const vector<ScalarExpr*>& const_exprs : const_exprs_lists_) {

Callers

nothing calls this directly

Calls 6

CreateClass · 0.85
OKFunction · 0.85
GetTupleDescriptorMethod · 0.80
push_backMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected