Skip to content

Outer join a union view with null column throw Exception #4241

@liutang123

Description

@liutang123

Bug repreduce:

CREATE VIEW test_view AS
SELECT NULL AS k
UNION ALL
SELECT NULL AS k
;

EXPLAIN
SELECT v1.k
FROM
test_view AS v1
LEFT OUTER JOIN 
test_view AS v2
on v1.k=v2.k
;

or

EXPLAIN
WITH test_view(k) AS
(
SELECT NULL AS k
UNION ALL
SELECT NULL AS k
)
SELECT v1.k
FROM
test_view AS v1
LEFT OUTER JOIN 
test_view AS v2
on v1.k=v2.k
;

The result is:

ERROR 1064 (HY000): errCode = 2, detailMessage = Unexpected exception: Implicit casts should never throw analysis exception.

In FE, the log is:

2020-08-03 22:57:40,304 ERROR 149 [CastExpr.<init>():64] Implicit casts should never throw analysis exception.
org.apache.doris.common.AnalysisException: errCode = 2, detailMessage = Invalid type cast of if(TupleIsNull(2), NULL, <slot 2>) from BOOLEAN to NULL_TYPE
        at org.apache.doris.analysis.CastExpr.analyze(CastExpr.java:197) ~[palo-fe.jar:?]
        at org.apache.doris.analysis.CastExpr.<init>(CastExpr.java:62) [palo-fe.jar:?]
        at org.apache.doris.analysis.Expr.uncheckedCastTo(Expr.java:1239) [palo-fe.jar:?]
        at org.apache.doris.analysis.TupleIsNullPredicate.wrapExpr(TupleIsNullPredicate.java:138) [palo-fe.jar:?]
        at org.apache.doris.analysis.TupleIsNullPredicate.wrapExprs(TupleIsNullPredicate.java:111) [palo-fe.jar:?]
        at org.apache.doris.planner.SingleNodePlanner.createInlineViewPlan(SingleNodePlanner.java:1035) [palo-fe.jar:?]
        at org.apache.doris.planner.SingleNodePlanner.createTableRefNode(SingleNodePlanner.java:1581) [palo-fe.jar:?]
        at org.apache.doris.planner.SingleNodePlanner.createJoinNode(SingleNodePlanner.java:1518) [palo-fe.jar:?]
        at org.apache.doris.planner.SingleNodePlanner.createSelectPlan(SingleNodePlanner.java:710) [palo-fe.jar:?]
        at org.apache.doris.planner.SingleNodePlanner.createQueryPlan(SingleNodePlanner.java:224) [palo-fe.jar:?]
        at org.apache.doris.planner.SingleNodePlanner.createSingleNodePlan(SingleNodePlanner.java:151) [palo-fe.jar:?]
        at org.apache.doris.planner.Planner.createPlanFragments(Planner.java:144) [palo-fe.jar:?]
        at org.apache.doris.planner.Planner.plan(Planner.java:76) [palo-fe.jar:?]
        at org.apache.doris.qe.StmtExecutor.analyze(StmtExecutor.java:480) [palo-fe.jar:?]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:227) [palo-fe.jar:?]
        at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:203) [palo-fe.jar:?]
        at org.apache.doris.qe.ConnectProcessor.dispatch(ConnectProcessor.java:335) [palo-fe.jar:?]
        at org.apache.doris.qe.ConnectProcessor.processOnce(ConnectProcessor.java:497) [palo-fe.jar:?]
        at org.apache.doris.qe.ConnectProcessor.loop(ConnectProcessor.java:507) [palo-fe.jar:?]
        at org.apache.doris.qe.ConnectScheduler$LoopHandler.run(ConnectScheduler.java:181) [palo-fe.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:835) [?:?]

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/plannerIssues or PRs related to the query plannerkind/fixCategorizes issue or PR as related to a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions