153 const auto scan_node =
dynamic_cast<const RelScan*
>(ra_node);
156 CHECK_EQ(
size_t(0), scan_node->inputCount());
157 return n_outputs(scan_node, scan_node->size());
159 const auto project_node =
dynamic_cast<const RelProject*
>(ra_node);
162 CHECK_EQ(
size_t(1), project_node->inputCount());
163 return n_outputs(project_node, project_node->size());
165 const auto filter_node =
dynamic_cast<const RelFilter*
>(ra_node);
168 CHECK_EQ(
size_t(1), filter_node->inputCount());
170 return n_outputs(filter_node, prev_out.size());
172 const auto aggregate_node =
dynamic_cast<const RelAggregate*
>(ra_node);
173 if (aggregate_node) {
175 CHECK_EQ(
size_t(1), aggregate_node->inputCount());
176 return n_outputs(aggregate_node, aggregate_node->size());
178 const auto compound_node =
dynamic_cast<const RelCompound*
>(ra_node);
181 CHECK_EQ(
size_t(1), compound_node->inputCount());
182 return n_outputs(compound_node, compound_node->size());
184 const auto join_node =
dynamic_cast<const RelJoin*
>(ra_node);
188 CHECK_EQ(
size_t(2), join_node->inputCount());
193 lhs_out.insert(lhs_out.end(), rhs_out.begin(), rhs_out.end());
196 const auto table_func_node =
dynamic_cast<const RelTableFunction*
>(ra_node);
197 if (table_func_node) {
199 return n_outputs(table_func_node, table_func_node->size());
201 const auto sort_node =
dynamic_cast<const RelSort*
>(ra_node);
204 CHECK_EQ(
size_t(1), sort_node->inputCount());
206 return n_outputs(sort_node, prev_out.size());
208 const auto logical_values_node =
dynamic_cast<const RelLogicalValues*
>(ra_node);
209 if (logical_values_node) {
210 CHECK_EQ(
size_t(0), logical_values_node->inputCount());
211 return n_outputs(logical_values_node, logical_values_node->size());
213 const auto logical_union_node =
dynamic_cast<const RelLogicalUnion*
>(ra_node);
214 if (logical_union_node) {
215 return n_outputs(logical_union_node, logical_union_node->size());
virtual std::string toString() const =0
RANodeOutput get_node_output(const RelAlgNode *ra_node)
std::vector< RexInput > n_outputs(const RelAlgNode *node, const size_t n)