Mihai Budiu created CALCITE-6753:
------------------------------------

             Summary: DeterministicCodeOptimizer may lift method calls out of 
try-catch blocks
                 Key: CALCITE-6753
                 URL: https://issues.apache.org/jira/browse/CALCITE-6753
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.38.0
            Reporter: Mihai Budiu


The DeterministicCodeOptimizer tries to optimize the generated Java code.
One of the things it does is to lift constant expressions into static variables.
However, it does this regardless if a method call is within a try-catch block.
For example, it may convert a safe cast into an unsafe cast.
Unfortunately there is no easy way to check the context of the shuttle while 
optimizing an expression (i.e., whether an expression is within a try-catch 
block), since the accept calls of Expression objects are not doubly-dispatched.
The only tool that is currently available to inhibit this optimization is to 
mark a function as non-deterministic.



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

Reply via email to