diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java index 89b5138619a790..3094288fc7aad3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java @@ -61,6 +61,7 @@ public CastExpr(Type targetType, Expr e) { try { analyze(); } catch (AnalysisException ex) { + LOG.warn("Implicit casts fail", ex); Preconditions.checkState(false, "Implicit casts should never throw analysis exception."); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/TupleIsNullPredicate.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/TupleIsNullPredicate.java index fedf720b3cdda1..3fb45566e07d93 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/TupleIsNullPredicate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/TupleIsNullPredicate.java @@ -146,7 +146,7 @@ public static Expr wrapExpr(Expr expr, List tids, Analyzer analyzer) * Throws an InternalException if expr evaluation in the BE failed. */ private static boolean requiresNullWrapping(Expr expr, Analyzer analyzer) { - if (expr.isConstant()) { + if (expr.isConstant() || expr.getType().isNull()) { return false; } return true; diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java index 396cd35dcd036d..84c7757712027c 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java @@ -343,4 +343,11 @@ public void testMultrGroupByInCorrelationSubquery() throws Exception { String sql = "SELECT * from baseall where k1 > (select min(k1) from tbl1 where baseall.k1 = tbl1.k4 and baseall.k2 = tbl1.k2)"; dorisAssert.query(sql).explainQuery(); } + + @Test + public void testOuterJoinNullUnionView() throws Exception{ + String sql = "WITH test_view(k) AS(SELECT NULL AS k UNION ALL SELECT NULL AS k )\n" + + "SELECT v1.k FROM test_view AS v1 LEFT OUTER JOIN test_view AS v2 ON v1.k=v2.k"; + dorisAssert.query(sql).explainQuery(); + } }