[fix](mtmv) mtmv getPlanBySql should not reuse ctx's StatementContext (#39690) (#39719)

pick from master #39690
This commit is contained in:
morrySnow
2024-08-21 19:20:40 +08:00
committed by GitHub
parent 80a27ca1bd
commit 2890a98b18

View File

@ -28,6 +28,7 @@ import org.apache.doris.common.Pair;
import org.apache.doris.datasource.CatalogIf;
import org.apache.doris.mysql.privilege.Auth;
import org.apache.doris.nereids.NereidsPlanner;
import org.apache.doris.nereids.StatementContext;
import org.apache.doris.nereids.exceptions.ParseException;
import org.apache.doris.nereids.glue.LogicalPlanAdapter;
import org.apache.doris.nereids.parser.NereidsParser;
@ -152,7 +153,13 @@ public class MTMVPlanUtil {
}
StatementBase parsedStmt = statements.get(0);
LogicalPlan logicalPlan = ((LogicalPlanAdapter) parsedStmt).getLogicalPlan();
NereidsPlanner planner = new NereidsPlanner(ctx.getStatementContext());
return planner.planWithLock(logicalPlan, PhysicalProperties.ANY, ExplainLevel.NONE);
StatementContext original = ctx.getStatementContext();
ctx.setStatementContext(new StatementContext());
try {
NereidsPlanner planner = new NereidsPlanner(ctx.getStatementContext());
return planner.planWithLock(logicalPlan, PhysicalProperties.ANY, ExplainLevel.NONE);
} finally {
ctx.setStatementContext(original);
}
}
}