Description
NPE occurs in a natural join.
default> create table t(a int); default> insert overwrite into t select 1; default> create table s(a int); default> insert overwrite into s select 1; default> select * from t natural join s;
The main reason is joinQual is null.
public RESULT visitJoin(CONTEXT ctx, Stack<Expr> stack, Join expr) throws PlanningException { stack.push(expr); - visit(ctx, stack, expr.getQual()); + if (expr.getQual() != null) { + visit(ctx, stack, expr.getQual()); + }
- join.joinQual = (Expr) joinQual.clone(); + if (joinQual != null) { + join.joinQual = (Expr) joinQual.clone(); + }
After fix, we need to get the following result.
default> select * from t natural join s;
Progress: 100%, response time: 0.293 sec
a, a
-------------------------------
1, 1
(1 rows, 0.293 sec, 4 B selected)