[
https://issues.apache.org/jira/browse/CALCITE-2823?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17402464#comment-17402464
]
Julian Hyde commented on CALCITE-2823:
--------------------------------------
Here's how I see the hierarchy:
* for non-deterministic functions such as {{RAND}}, the result from two calls
may be different, even if they are called with the same arguments, in the same
row, in the same statement;
* for yyyy functions such as YYY, the result is the same if you make the same
sequence of calls, with the same arguments, to a given instance of the function;
* for dynamic functions such as {{CURRENT_TIMESTAMP}}, the result from two
calls may be different if called with different arguments, or in different
statements; but within a statement, is always the same if called with the same
arguments, even if they are called in different rows;
* for xxxx functions such as Oracle's {{NEXTVAL}} and MySQL's {{RAND()}}, the
result from two calls may be different if called with different arguments, or
in different statements, or in different rows of the same statement; but within
the same row of the same statement, is always the same if called with the same
arguments;
* for pure functions such as {{SUBSTRING}}, the result depends only on the
arguments.
Not sure what xxxx and yyyy should be.
> Prevent optimization of non-deterministic functions
> ---------------------------------------------------
>
> Key: CALCITE-2823
> URL: https://issues.apache.org/jira/browse/CALCITE-2823
> Project: Calcite
> Issue Type: Bug
> Components: core
> Reporter: Siddharth Teotia
> Priority: Major
>
> RexSimplify and RexProgram optimize expressions like A() = A() to true, but
> if A() is a non-deterministic expression, this optimization is invalid.
> Change RexSimplify and RexProgram to check if expression is deterministic or
> not, in order to decide about the optimization.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)