| 23 | namespace planner { |
| 24 | |
| 25 | static std::unordered_set<table_id_t> getBoundNodeTableIDSet(const RelExpression& rel, |
| 26 | ExtendDirection extendDirection) { |
| 27 | std::unordered_set<table_id_t> result; |
| 28 | for (auto entry : rel.getEntries()) { |
| 29 | auto& groupEntry = entry->constCast<RelGroupCatalogEntry>(); |
| 30 | switch (extendDirection) { |
| 31 | case ExtendDirection::FWD: { |
| 32 | result.merge(groupEntry.getBoundNodeTableIDSet(RelDataDirection::FWD)); |
| 33 | } break; |
| 34 | case ExtendDirection::BWD: { |
| 35 | result.merge(groupEntry.getBoundNodeTableIDSet(RelDataDirection::BWD)); |
| 36 | } break; |
| 37 | case ExtendDirection::BOTH: { |
| 38 | result.merge(groupEntry.getBoundNodeTableIDSet(RelDataDirection::FWD)); |
| 39 | result.merge(groupEntry.getBoundNodeTableIDSet(RelDataDirection::BWD)); |
| 40 | } break; |
| 41 | default: |
| 42 | UNREACHABLE_CODE; |
| 43 | } |
| 44 | } |
| 45 | return result; |
| 46 | } |
| 47 | |
| 48 | static std::unordered_set<table_id_t> getNbrNodeTableIDSet(const RelExpression& rel, |
| 49 | ExtendDirection extendDirection) { |
no test coverage detected