[ https://issues.apache.org/jira/browse/CALCITE-4256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17195664#comment-17195664 ]
Julian Hyde commented on CALCITE-4256: -------------------------------------- Let's frame this in terms of whether the operator is deterministic. See {{SqlOperator.isDeterministic()}}. The fix certainly should not reference particular operators. Related: {{SqlRandFunction.isDynamicFunction()}} is overridden to return true, and I'm not sure whether that would be necessary if it were flagged non-deterministic. > RexSimplify should not simplify P AND P to P, if it contains a call to RAND > or RAND_INTEGER > ------------------------------------------------------------------------------------------- > > Key: CALCITE-4256 > URL: https://issues.apache.org/jira/browse/CALCITE-4256 > Project: Calcite > Issue Type: Bug > Reporter: Thomas Rebele > Priority: Major > > Example: RAND_INTEGER() = 1 AND RAND_INTEGER() = 1 is false with a higher > probability than RAND_INTEGER() = 1 > Here a test case for RexProgramTest: > {code} > @Test void testSimplifyRandomAnd() { > checkSimplifyUnchanged( > and( > eq(rexBuilder.makeCall(SqlStdOperatorTable.RAND_INTEGER), > literal(1)), > eq(rexBuilder.makeCall(SqlStdOperatorTable.RAND_INTEGER), > literal(1)) > )); > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)