[bugfix](export command) Export exceptions when use legacy optimizer (#31020)

This commit is contained in:
Guangdong Liu
2024-02-18 12:14:47 +08:00
committed by yiguolei
parent 33aaacf2fa
commit 753ff10840
2 changed files with 13 additions and 2 deletions

View File

@ -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,

View File

@ -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