Skip to content

Commit

Permalink
fix the execution plan containing NodeLabelFiler always results in em…
Browse files Browse the repository at this point in the history
…pty (#4370)
  • Loading branch information
ted-wq-x authored Oct 17, 2024
1 parent dfb9e74 commit b3bfc6e
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/include/optimizer/logical_operator_visitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ class LogicalOperatorVisitor {
return op;
}

virtual void visitNodeLabelFilter(planner::LogicalOperator* /*op*/) {}
virtual std::shared_ptr<planner::LogicalOperator> visitNodeLabelFilterReplace(
std::shared_ptr<planner::LogicalOperator> op) {
return op;
}

virtual void visitFlatten(planner::LogicalOperator* /*op*/) {}
virtual std::shared_ptr<planner::LogicalOperator> visitFlattenReplace(
std::shared_ptr<planner::LogicalOperator> op) {
Expand Down
1 change: 1 addition & 0 deletions src/include/optimizer/projection_push_down_optimizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class ProjectionPushDownOptimizer : public LogicalOperatorVisitor {
void visitExtend(planner::LogicalOperator* op) override;
void visitAccumulate(planner::LogicalOperator* op) override;
void visitFilter(planner::LogicalOperator* op) override;
void visitNodeLabelFilter(planner::LogicalOperator* op) override;
void visitHashJoin(planner::LogicalOperator* op) override;
void visitIntersect(planner::LogicalOperator* op) override;
void visitProjection(planner::LogicalOperator* op) override;
Expand Down
6 changes: 6 additions & 0 deletions src/optimizer/logical_operator_visitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ void LogicalOperatorVisitor::visitOperatorSwitch(LogicalOperator* op) {
case LogicalOperatorType::FILTER: {
visitFilter(op);
} break;
case LogicalOperatorType::NODE_LABEL_FILTER: {
visitNodeLabelFilter(op);
} break;
case LogicalOperatorType::FLATTEN: {
visitFlatten(op);
} break;
Expand Down Expand Up @@ -123,6 +126,9 @@ std::shared_ptr<LogicalOperator> LogicalOperatorVisitor::visitOperatorReplaceSwi
case LogicalOperatorType::FILTER: {
return visitFilterReplace(op);
}
case LogicalOperatorType::NODE_LABEL_FILTER: {
return visitNodeLabelFilterReplace(op);
}
case LogicalOperatorType::FLATTEN: {
return visitFlattenReplace(op);
}
Expand Down
6 changes: 6 additions & 0 deletions src/optimizer/projection_push_down_optimizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "planner/operator/logical_filter.h"
#include "planner/operator/logical_hash_join.h"
#include "planner/operator/logical_intersect.h"
#include "planner/operator/logical_node_label_filter.h"
#include "planner/operator/logical_order_by.h"
#include "planner/operator/logical_projection.h"
#include "planner/operator/logical_table_function_call.h"
Expand Down Expand Up @@ -84,6 +85,11 @@ void ProjectionPushDownOptimizer::visitFilter(LogicalOperator* op) {
collectExpressionsInUse(filter.getPredicate());
}

void ProjectionPushDownOptimizer::visitNodeLabelFilter(LogicalOperator* op) {
auto& filter = op->constCast<LogicalNodeLabelFilter>();
collectExpressionsInUse(filter.getNodeID());
}

void ProjectionPushDownOptimizer::visitHashJoin(LogicalOperator* op) {
auto& hashJoin = op->constCast<LogicalHashJoin>();
for (auto& [probeJoinKey, buildJoinKey] : hashJoin.getJoinConditions()) {
Expand Down

0 comments on commit b3bfc6e

Please sign in to comment.