372 const auto scan_node =
dynamic_cast<const RelScan*
>(ra_node);
375 CHECK_EQ(
size_t(0), scan_node->inputCount());
376 return n_outputs(scan_node, scan_node->size());
378 const auto project_node =
dynamic_cast<const RelProject*
>(ra_node);
381 CHECK_EQ(
size_t(1), project_node->inputCount());
382 return n_outputs(project_node, project_node->size());
384 const auto filter_node =
dynamic_cast<const RelFilter*
>(ra_node);
387 CHECK_EQ(
size_t(1), filter_node->inputCount());
389 return n_outputs(filter_node, prev_out.size());
391 const auto aggregate_node =
dynamic_cast<const RelAggregate*
>(ra_node);
392 if (aggregate_node) {
394 CHECK_EQ(
size_t(1), aggregate_node->inputCount());
395 return n_outputs(aggregate_node, aggregate_node->size());
397 const auto compound_node =
dynamic_cast<const RelCompound*
>(ra_node);
400 CHECK_EQ(
size_t(1), compound_node->inputCount());
401 return n_outputs(compound_node, compound_node->size());
403 const auto join_node =
dynamic_cast<const RelJoin*
>(ra_node);
407 CHECK_EQ(
size_t(2), join_node->inputCount());
412 lhs_out.insert(lhs_out.end(), rhs_out.begin(), rhs_out.end());
415 const auto table_func_node =
dynamic_cast<const RelTableFunction*
>(ra_node);
416 if (table_func_node) {
418 return n_outputs(table_func_node, table_func_node->size());
420 const auto sort_node =
dynamic_cast<const RelSort*
>(ra_node);
423 CHECK_EQ(
size_t(1), sort_node->inputCount());
425 return n_outputs(sort_node, prev_out.size());
427 const auto logical_values_node =
dynamic_cast<const RelLogicalValues*
>(ra_node);
428 if (logical_values_node) {
429 CHECK_EQ(
size_t(0), logical_values_node->inputCount());
430 return n_outputs(logical_values_node, logical_values_node->size());
432 const auto logical_union_node =
dynamic_cast<const RelLogicalUnion*
>(ra_node);
433 if (logical_union_node) {
434 return n_outputs(logical_union_node, logical_union_node->size());
std::string toString(const Executor::ExtModuleKinds &kind)
std::vector< RexInput > n_outputs(const RelAlgNode *node, const size_t n)
RANodeOutput get_node_output(const RelAlgNode *ra_node)