diff --git a/src/validator/ExplainValidator.cpp b/src/validator/ExplainValidator.cpp
index 1910e3d27c8b03bba21cff76714bfca4d01a02ec..ef20f8c31adacf29142770ea3e5ee9ad2e443dff 100644
--- a/src/validator/ExplainValidator.cpp
+++ b/src/validator/ExplainValidator.cpp
@@ -66,11 +66,9 @@ Status ExplainValidator::validateImpl() {
 }
 
 Status ExplainValidator::toPlan() {
-    auto subPlanStatus = Planner::toPlan(validator_->getAstContext());
-    NG_RETURN_IF_ERROR(subPlanStatus);
-    auto subPlan = std::move(subPlanStatus).value();
-    root_ = subPlan.root;
-    tail_ = subPlan.tail;
+    // The execution plan has been generated in validateImpl function
+    root_ = validator_->root();
+    tail_ = validator_->tail();
     VLOG(1) << "root: " << root_->kind() << " tail: " << tail_->kind();
     return Status::OK();
 }