As part of https://issues.apache.org/jira/browse/CALCITE-3975, I've
been looking into what ProjectFilterTransposeRule does with
expressions. It's one of our oldest rules, and I thought I knew what
it did. But the rule does not do what I expect. I've like to conduct a
straw poll to see what other people think.
Consider the following query (a Project on top of a Filter on a Scan).
SELECT sal + comm AS remuneration
FROM Emp
WHERE deptno = 10
After applying ProjectFilterTransposeRule, what result would you
expect? What would the ideal result be? Are there any extreme cases
(large project lists, complex expressions, expensive filter
expressions) where the rule should do something different?
Please fill out the following:
Expect: <option A, B or C, or a query>
Hope: <option A, B or C, or a query>
Comments:
Option A. Push down references to the fields needed by filter and
project expressions
SELECT sal + comm AS remuneration
FROM (
SELECT sal, comm, deptno
FROM Emp)
WHERE deptno = 10
B. Push down the project expression, and references to the fields
needed by the filter
SELECT remuneration
FROM (
SELECT sal + comm AS remuneration, deptno
FROM Emp)
WHERE deptno = 10
C. Push down the project and filter expressions
SELECT remuneration
FROM (
SELECT sal + comm AS remuneration, deptno = 10 AS predicate
FROM Emp)
WHERE predicate
Julian