Re: [DISCUSS] [Calcite-2683] ProjectMergeRule should not be performed when Nondeterministic udf has been referenced more than once

2018-11-19 Thread jincheng sun
Hi Hequn, Thanks for report this issue. I think the premise of rule optimization is to guarantee the correctness of the semantics. When the rule is matched, the isDeterministics attribute of UDF must be considered. +1 to be fixed. Thanks, Jincheng Hequn Cheng 于2018年11月19日周一 下午11:52写道: > Hi, >

Re: [DISCUSS] [Calcite-2683] ProjectMergeRule should not be performed when Nondeterministic udf has been referenced more than once

2018-11-19 Thread Michael Mior
While I think it's probably true, I'm hesitant to believe that just because the rewritten version has the same number of calls, that it will always produce the same results. My preference would probably be to go with the "strict" semantic as per Julian's specification since that's least likely to

Re: [DISCUSS] [Calcite-2683] ProjectMergeRule should not be performed when Nondeterministic udf has been referenced more than once

2018-11-19 Thread Julian Hyde
Repeating the comments I made in the JIRA case [1]. I do find your argument compelling, that if the rewritten version contains the same number of calls to the UDF, it should be OK. But there are other possible semantics. For instance, a “strict” semantic could allow rewrite only if the calls

[DISCUSS] [Calcite-2683] ProjectMergeRule should not be performed when Nondeterministic udf has been referenced more than once

2018-11-19 Thread Hequn Cheng
Hi, Currently, there are some merge rules for Project, such as CalcMergeRule, ProjectMergeRule, and ProjectCalcMergeRule. I found that these merge rules should not be performed when Nondeterministic expression of the bottom(inner) project has been referenced more than once by the top(outer)