371 const auto scan_node =
dynamic_cast<const RelScan*
>(ra_node);
374 CHECK_EQ(
size_t(0), scan_node->inputCount());
375 return n_outputs(scan_node, scan_node->size());
377 const auto project_node =
dynamic_cast<const RelProject*
>(ra_node);
380 CHECK_EQ(
size_t(1), project_node->inputCount());
381 return n_outputs(project_node, project_node->size());
383 const auto filter_node =
dynamic_cast<const RelFilter*
>(ra_node);
386 CHECK_EQ(
size_t(1), filter_node->inputCount());
388 return n_outputs(filter_node, prev_out.size());
390 const auto aggregate_node =
dynamic_cast<const RelAggregate*
>(ra_node);
391 if (aggregate_node) {
393 CHECK_EQ(
size_t(1), aggregate_node->inputCount());
394 return n_outputs(aggregate_node, aggregate_node->size());
396 const auto compound_node =
dynamic_cast<const RelCompound*
>(ra_node);
399 CHECK_EQ(
size_t(1), compound_node->inputCount());
400 return n_outputs(compound_node, compound_node->size());
402 const auto join_node =
dynamic_cast<const RelJoin*
>(ra_node);
406 CHECK_EQ(
size_t(2), join_node->inputCount());
411 lhs_out.insert(lhs_out.end(), rhs_out.begin(), rhs_out.end());
414 const auto table_func_node =
dynamic_cast<const RelTableFunction*
>(ra_node);
415 if (table_func_node) {
417 return n_outputs(table_func_node, table_func_node->size());
419 const auto sort_node =
dynamic_cast<const RelSort*
>(ra_node);
422 CHECK_EQ(
size_t(1), sort_node->inputCount());
424 return n_outputs(sort_node, prev_out.size());
426 const auto logical_values_node =
dynamic_cast<const RelLogicalValues*
>(ra_node);
427 if (logical_values_node) {
428 CHECK_EQ(
size_t(0), logical_values_node->inputCount());
429 return n_outputs(logical_values_node, logical_values_node->size());
431 const auto logical_union_node =
dynamic_cast<const RelLogicalUnion*
>(ra_node);
432 if (logical_union_node) {
433 return n_outputs(logical_union_node, logical_union_node->size());
std::string toString(const ExecutorDeviceType &device_type)
std::vector< RexInput > n_outputs(const RelAlgNode *node, const size_t n)
RANodeOutput get_node_output(const RelAlgNode *ra_node)