From 753ff10840084b378de8a3b6b3c5801273f2c159 Mon Sep 17 00:00:00 2001 From: Guangdong Liu Date: Sun, 18 Feb 2024 12:14:47 +0800 Subject: [PATCH] [bugfix](export command) Export exceptions when use legacy optimizer (#31020) --- .../org/apache/doris/load/ExportTaskExecutor.java | 11 ++++++++++- .../nereids/trees/plans/commands/ExportCommand.java | 4 +++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/ExportTaskExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/load/ExportTaskExecutor.java index 3f7c17fef6..48f9b2ca1a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/ExportTaskExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/ExportTaskExecutor.java @@ -33,6 +33,7 @@ import org.apache.doris.nereids.glue.LogicalPlanAdapter; import org.apache.doris.nereids.trees.plans.logical.LogicalPlan; import org.apache.doris.qe.AutoCloseConnectContext; import org.apache.doris.qe.ConnectContext; +import org.apache.doris.qe.OriginStatement; import org.apache.doris.qe.QueryState.MysqlStateType; import org.apache.doris.qe.StmtExecutor; import org.apache.doris.scheduler.exception.JobException; @@ -41,6 +42,7 @@ import org.apache.doris.thrift.TUniqueId; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import java.util.List; import java.util.Map; @@ -134,7 +136,14 @@ public class ExportTaskExecutor implements TransientTaskExecutor { } try (AutoCloseConnectContext r = buildConnectContext()) { - stmtExecutor = new StmtExecutor(r.connectContext, selectStmtLists.get(idx)); + + StatementBase statementBase = selectStmtLists.get(idx); + OriginStatement originStatement = new OriginStatement( + StringUtils.isEmpty(statementBase.getOrigStmt().originStmt) + ? exportJob.getOrigStmt().originStmt : statementBase.getOrigStmt().originStmt, idx); + statementBase.setOrigStmt(originStatement); + stmtExecutor = new StmtExecutor(r.connectContext, statementBase); + stmtExecutor.execute(); if (r.connectContext.getState().getStateType() == MysqlStateType.ERR) { exportJob.updateExportJobState(ExportJobState.CANCELLED, taskId, null, diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java index b43fc9348c..713ff6b276 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ExportCommand.java @@ -246,7 +246,9 @@ public class ExportCommand extends Command implements ForwardWithSync { exportJob.setTableName(tblName); exportJob.setExportTable(table); exportJob.setTableId(table.getId()); - + if (ctx.getExecutor() != null) { + exportJob.setOrigStmt(ctx.getExecutor().getOriginStmt()); + } // set partitions exportJob.setPartitionNames(this.partitionsNames); // set where expression