| 172 | } |
| 173 | |
| 174 | Status DataSink::Prepare(RuntimeState* state, MemTracker* parent_mem_tracker) { |
| 175 | DCHECK(parent_mem_tracker != nullptr); |
| 176 | DCHECK(profile_ != nullptr); |
| 177 | mem_tracker_.reset(new MemTracker(profile_, -1, name_, parent_mem_tracker)); |
| 178 | expr_mem_tracker_.reset( |
| 179 | new MemTracker(-1, Substitute("$0 Exprs", name_), mem_tracker_.get(), false)); |
| 180 | expr_perm_pool_.reset(new MemPool(expr_mem_tracker_.get())); |
| 181 | expr_results_pool_.reset(new MemPool(expr_mem_tracker_.get())); |
| 182 | RETURN_IF_ERROR(ScalarExprEvaluator::Create(output_exprs_, state, state->obj_pool(), |
| 183 | expr_perm_pool_.get(), expr_results_pool_.get(), &output_expr_evals_)); |
| 184 | return Status::OK(); |
| 185 | } |
| 186 | |
| 187 | Status DataSink::Open(RuntimeState* state) { |
| 188 | DCHECK_EQ(output_exprs_.size(), output_expr_evals_.size()); |