You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Jonathan A Sternberg (Jira)" <ji...@apache.org> on 2023/02/23 19:36:00 UTC

[jira] [Updated] (CALCITE-5542) ReduceExpressionsRule incorrectly flags subqueries as reducible

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

Jonathan A Sternberg updated CALCITE-5542:
------------------------------------------
    Description: 
The {{ReduceExpressionsRule}} incorrectly flags subqueries as reducible constants. Since a subquery is a type of call, it visits the arguments of the subquery to determine whether it is reducible and, generally, there are no arguments so the subquery gets marked as reducible.

Because it's flagged as reducible, the expression with the subquery gets passed to a {{RexProgram}} which can't handle subqueries.

I suspect the fix is to just mark all subqueries as irreducible. If a reducible subquery is wanted, it should be handled through a different planner rule.

Currently, using the {{ReduceExpressionsRule}} when a subquery is present causes an exception to be thrown when attempting to reduce the expression.

This is the code which I believe is incorrect: [https://github.com/apache/calcite/blob/3dae2519f8943d287688ddff8256d22f90ebaf67/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java#L1088-L1091]

  was:
The `ReduceExpressionsRule` incorrectly flags subqueries as reducible constants. Since a subquery is a type of call, it visits the arguments of the subquery to determine whether it is reducible and, generally, there are no arguments so the subquery gets marked as reducible.

Because it's flagged as reducible, the expression with the subquery gets passed to a `RexProgram` which can't handle subqueries.

I suspect the fix is to just mark all subqueries as irreducible. If a reducible subquery is wanted, it should be handled through a different planner rule.

Currently, using the `ReduceExpressionsRule` when a subquery is present causes an exception to be thrown when attempting to reduce the expression.

This is the code which I believe is incorrect: https://github.com/apache/calcite/blob/3dae2519f8943d287688ddff8256d22f90ebaf67/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java#L1088-L1091


> ReduceExpressionsRule incorrectly flags subqueries as reducible
> ---------------------------------------------------------------
>
>                 Key: CALCITE-5542
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5542
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.33.0
>            Reporter: Jonathan A Sternberg
>            Priority: Minor
>
> The {{ReduceExpressionsRule}} incorrectly flags subqueries as reducible constants. Since a subquery is a type of call, it visits the arguments of the subquery to determine whether it is reducible and, generally, there are no arguments so the subquery gets marked as reducible.
> Because it's flagged as reducible, the expression with the subquery gets passed to a {{RexProgram}} which can't handle subqueries.
> I suspect the fix is to just mark all subqueries as irreducible. If a reducible subquery is wanted, it should be handled through a different planner rule.
> Currently, using the {{ReduceExpressionsRule}} when a subquery is present causes an exception to be thrown when attempting to reduce the expression.
> This is the code which I believe is incorrect: [https://github.com/apache/calcite/blob/3dae2519f8943d287688ddff8256d22f90ebaf67/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java#L1088-L1091]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)