[ 
https://issues.apache.org/jira/browse/IMPALA-8000?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Rogers reassigned IMPALA-8000:
-----------------------------------

    Assignee:     (was: Paul Rogers)

> Implied cast of NULL done for expressions, not literals
> -------------------------------------------------------
>
>                 Key: IMPALA-8000
>                 URL: https://issues.apache.org/jira/browse/IMPALA-8000
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Frontend
>    Affects Versions: Impala 3.1.0
>            Reporter: Paul Rogers
>            Priority: Major
>
> Impala can combine a cast with a null to create a typed null:
> {noformat}
> CAST(NULL AS SMALLINT) --> NULL:SMALLINT
> {code}
> Where the notation on the right indicates a NULL of type SMALLINT.
> However, the analyzer appears to apply this optimization inconsistently. It 
> is done with constant folding:
> {code:java}
>       String query = "SELECT 1 + NULL AS c" +
>           " from functional.alltypestiny";
>       AnalysisContext ctx = createAnalysisCtx();
>       ctx.getQueryOptions().setEnable_expr_rewrites(true);
>       SelectStmt select = (SelectStmt) AnalyzesOk(query, ctx);
>       Expr expr = select.getSelectList().getItems().get(0).getExpr();
>       assertEquals(ScalarType.SMALLINT, expr.getType());
>       assertTrue(expr instanceof NullLiteral);
> {code}
> But not for the near-identical result with an explicit cast:
> {code:java}
>       String query = "SELECT CAST(NULL AS SMALLINT) AS c" +
>           " from functional.alltypestiny";
>       … // Same as above
>       assertEquals(ScalarType.SMALLINT, expr.getType());
>       // Fails, is actually CastExpr
>       //assertTrue(expr instanceof NullLiteral);
> {code}
> Interestingly, the NULL inside the CAST does have its type set to SMALLINT, 
> so the CAST is unnecessary.
> Expected the analyzer to apply the rule consistently so that other rules 
> don’t have to handle both cases.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to