// Append a flattened version of this plan node, including all children, to 'container'. private void treeToThriftHelper(TPlan container) { TPlanNode msg = new TPlanNode(); msg.node_id = id_.asInt(); msg.limit = limit_; TExecStats estimatedStats = new TExecStats(); estimatedStats.setCardinality(cardinality_); estimatedStats.setMemory_used(perHostMemCost_); msg.setLabel(getDisplayLabel()); msg.setLabel_detail(getDisplayLabelDetail()); msg.setEstimated_stats(estimatedStats); msg.setRow_tuples(Lists.<Integer>newArrayListWithCapacity(tupleIds_.size())); msg.setNullable_tuples(Lists.<Boolean>newArrayListWithCapacity(tupleIds_.size())); for (TupleId tid : tupleIds_) { msg.addToRow_tuples(tid.asInt()); msg.addToNullable_tuples(nullableTupleIds_.contains(tid)); } for (Expr e : conjuncts_) { msg.addToConjuncts(e.treeToThrift()); } toThrift(msg); container.addToNodes(msg); // For the purpose of the BE consider ExchangeNodes to have no children. if (this instanceof ExchangeNode) { msg.num_children = 0; return; } else { msg.num_children = children_.size(); for (PlanNode child : children_) { child.treeToThriftHelper(container); } } }
protected final String getDisplayLabel() { return String.format("%s:%s", id_.toString(), displayName_); }