From 9b1cdd3230fbc506b28e4b69e20b95bed8e6c90d Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Tue, 17 Oct 2023 19:14:13 +0800 Subject: [PATCH] [fix](planner) mark join slot should always be nullable (#25433) --- .../src/main/java/org/apache/doris/analysis/Analyzer.java | 5 ++++- .../main/java/org/apache/doris/analysis/StmtRewriter.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java index e3e8196379..e93d622df5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java @@ -994,7 +994,10 @@ public class Analyzer { newTblName == null ? "table list" : newTblName.toString()); } - Column col = d.getTable() == null ? new Column(colName, ScalarType.BOOLEAN) : d.getTable().getColumn(colName); + Column col = (d.getTable() == null) + ? new Column(colName, ScalarType.BOOLEAN, + globalState.markTuples.get(d.getAlias()) != null) + : d.getTable().getColumn(colName); if (col == null) { ErrorReport.reportAnalysisException(ErrorCode.ERR_BAD_FIELD_ERROR, colName, newTblName == null ? d.getTable().getName() : newTblName.toString()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java index 6e3ec2b50c..d80328683d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java @@ -529,7 +529,7 @@ public class StmtRewriter { String slotName = stmt.getColumnAliasGenerator().getNextAlias(); markSlot.setType(ScalarType.BOOLEAN); markSlot.setIsMaterialized(true); - markSlot.setIsNullable(false); + markSlot.setIsNullable(true); markSlot.setColumn(new Column(slotName, ScalarType.BOOLEAN)); SlotRef markRef = new SlotRef(markSlot); markRef.setTblName(new TableName(null, null, markTuple.getAlias()));