diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/LateralViewRef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/LateralViewRef.java index 83268549372088..6008db1a9470d8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/LateralViewRef.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/LateralViewRef.java @@ -176,5 +176,18 @@ private void checkScalarFunction(Expr child0) throws AnalysisException { throw new AnalysisException("Subquery is not allowed in lateral view"); } } + + @Override + public void reset() { + isAnalyzed = false; + expr.reset(); + fnExpr = null; + originSlotRefList = Lists.newArrayList(); + view = null; + explodeSlotRef = null; + // There is no need to call the reset function of @relatedTableRef here. + // The main reason is that @lateralViewRef itself is an attribute of @relatedTableRef + // The reset of @lateralViewRef happens in the reset() of @relatedTableRef. + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRef.java index 41bb72d63d419a..13324d109806b3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRef.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRef.java @@ -716,6 +716,11 @@ public void reset() { allMaterializedTupleIds_.clear(); correlatedTupleIds_.clear(); desc = null; + if (lateralViewRefs != null) { + for (LateralViewRef lateralViewRef : lateralViewRefs) { + lateralViewRef.reset(); + } + } } /**