| 27 | } |
| 28 | |
| 29 | static void validateHintCompleteness(const BoundJoinHintNode& root, const QueryGraph& queryGraph) { |
| 30 | binder::expression_set set; |
| 31 | collectHintPattern(root, set); |
| 32 | for (auto& nodeOrRel : queryGraph.getAllPatterns()) { |
| 33 | if (nodeOrRel->getVariableName().empty()) { |
| 34 | throw BinderException( |
| 35 | "Cannot hint join order in a match patter with anonymous node or relationship."); |
| 36 | } |
| 37 | if (!set.contains(nodeOrRel)) { |
| 38 | throw BinderException( |
| 39 | std::format("Cannot find {} in join hint.", nodeOrRel->toString())); |
| 40 | } |
| 41 | } |
| 42 | } |
| 43 | |
| 44 | static bool isAnyGraphNodePattern(const NodeOrRelExpression& pattern, |
| 45 | main::ClientContext* context) { |
no test coverage detected