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

Method Init

be/src/exec/grouping-aggregator.cc:98–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

96 resource_profile_(taggregator.resource_profile){};
97
98Status GroupingAggregatorConfig::Init(
99 const TAggregator& taggregator, FragmentState* state, PlanNode* pnode) {
100 RETURN_IF_ERROR(ScalarExpr::Create(
101 taggregator.grouping_exprs, input_row_desc_, state, &grouping_exprs_));
102
103 // Construct build exprs from intermediate_row_desc_
104 for (int i = 0; i < grouping_exprs_.size(); ++i) {
105 SlotDescriptor* desc = intermediate_tuple_desc_->slots()[i];
106 DCHECK(desc->type().type == TYPE_NULL || desc->type() == grouping_exprs_[i]->type());
107 // Use SlotRef::TypeSafeCreate() to avoid TYPE_NULL SlotRefs.
108 SlotRef* build_expr = state->obj_pool()->Add(SlotRef::TypeSafeCreate(desc));
109 build_exprs_.push_back(build_expr);
110 // Not an entry point because all hash table callers support codegen.
111 RETURN_IF_ERROR(
112 build_expr->Init(intermediate_row_desc_, /* is_entry_point */ false, state));
113 if (build_expr->type().IsVarLenStringType()) string_grouping_exprs_.push_back(i);
114 }
115
116 RETURN_IF_ERROR(AggregatorConfig::Init(taggregator, state, pnode));
117 for (int i = 0; i < aggregate_functions_.size(); ++i) {
118 needs_serialize_ |= aggregate_functions_[i]->SupportsSerialize();
119 }
120
121 hash_table_config_ = state->obj_pool()->Add(new HashTableConfig(
122 build_exprs_, grouping_exprs_, true, vector<bool>(build_exprs_.size(), true)));
123 return Status::OK();
124}
125
126void GroupingAggregatorConfig::Close() {
127 ScalarExpr::Close(build_exprs_);

Callers 2

PrepareMethod · 0.45
OpenMethod · 0.45

Calls 9

CreateClass · 0.85
OKFunction · 0.85
push_backMethod · 0.80
IsVarLenStringTypeMethod · 0.80
SupportsSerializeMethod · 0.80
sizeMethod · 0.45
typeMethod · 0.45
AddMethod · 0.45
obj_poolMethod · 0.45

Tested by

no test coverage detected