| 730 | } |
| 731 | |
| 732 | void TopNNode::DebugString(int indentation_level, stringstream* out) const { |
| 733 | *out << string(indentation_level * 2, ' '); |
| 734 | const TopNPlanNode& pnode = static_cast<const TopNPlanNode&>(plan_node_); |
| 735 | const TSortInfo& tsort_info = pnode.tnode_->sort_node.sort_info; |
| 736 | |
| 737 | *out << "TopNNode(" << ScalarExpr::DebugString(pnode.ordering_exprs_); |
| 738 | for (int i = 0; i < tsort_info.is_asc_order.size(); ++i) { |
| 739 | *out << (i > 0 ? " " : "") << (tsort_info.is_asc_order[i] ? "asc" : "desc") |
| 740 | << " nulls " << (tsort_info.nulls_first[i] ? "first" : "last"); |
| 741 | } |
| 742 | |
| 743 | ExecNode::DebugString(indentation_level, out); |
| 744 | *out << ")"; |
| 745 | } |
| 746 | |
| 747 | TopNNode::Heap::Heap(const TupleRowComparator& c, int64_t capacity, bool include_ties) : |
| 748 | capacity_(capacity), include_ties_(include_ties), priority_queue_(c) {} |