Paul Rogers created IMPALA-7949:
-----------------------------------
Summary: BinaryPredicate rewrite results in double cast
Key: IMPALA-7949
URL: https://issues.apache.org/jira/browse/IMPALA-7949
Project: IMPALA
Issue Type: Bug
Components: Frontend
Affects Versions: Impala 3.1.0
Reporter: Paul Rogers
Assignee: Paul Rogers
Consider the existing unit test:
{{ExprRewriteRulesTest.TestNormalizeBinaryPredicatesRule}}, with this SELECT
expression:
{code:sql}
cast(0 as double) = id
{code}
The existing test case simply does a "toSql" on the rewritten expression,
suppressing implicit casts, expecting:
{code:sql}
id = CAST(0 AS DOUBLE)
{code}
However, if we examine the AST itself, or render the rewritten expression
showing implicit casts, we see we get:
{code:sql}
CAST(id AS DOUBLE) = CAST(CAST(0 AS DOUBLE) AS DOUBLE)
{code}
In this particular case, the double-case it benign as the constant-folding
rule, if enabled, will remove the two casts. But, if the value were a column,
the double casts would exist in the plan sent to the, resulting in an
unnecessary extra step.
The expected behavior is the function argument type propagation would not
insert a cast if it is not needed.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)