Paul Rogers created IMPALA-7892: ----------------------------------- Summary: Explicit cast state lost for numeric literals on rewrite Key: IMPALA-7892 URL: https://issues.apache.org/jira/browse/IMPALA-7892 Project: IMPALA Issue Type: Bug Components: Frontend Affects Versions: Impala 3.0 Reporter: Paul Rogers Assignee: Paul Rogers
Consider the following SQL: {code:sql} SELECT CAST(1 AS INT) as C FROM alltypestiny {code} The expression contains an explicit cast that cannot be optimized away during rewrites. The cast tells us that the user wants the value 1 as an {{INT}}, not as its “natural” type as {{TINYINT}}. The NumericLiteral type has an “explicit cast” flag that is set sometimes. However, the expression rewriter does not set it: {code:java} String query = "SELECT CAST(1 AS INT) 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.INT, expr.getType()); assertTrue(expr instanceof NumericLiteral); assertTrue(((NumericLiteral) expr).isExplicitCast()); {code} The last test fails because the NumericLiteral is not marked as explicitly cast. If the analyzer were to "reset" analysis for the node, we would lose the fact that the user wanted an {{INT}}, and the type would revert to {{TINYINT}}, causing instability, a small change in the analyzer can produce a different query result. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org For additional commands, e-mail: issues-all-h...@impala.apache.org