[ https://issues.apache.org/jira/browse/CALCITE-6507?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ruben Q L resolved CALCITE-6507. -------------------------------- Resolution: Fixed Fixed via [{{8659140}}|https://github.com/apache/calcite/commit/8659140dcb689f71fecbba6b081cc525c7fc2774] > Random functions are incorrectly considered deterministic > --------------------------------------------------------- > > Key: CALCITE-6507 > URL: https://issues.apache.org/jira/browse/CALCITE-6507 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.37.0 > Reporter: Ruben Q L > Assignee: Ruben Q L > Priority: Major > Labels: pull-request-available > Fix For: 1.38.0 > > > {{{}RAND{}}}, {{{}RANDOM{}}}, and {{RAND_INTEGER}} don't override the > {{isDeterministic}} method, so they get the default behavior, i.e. true, > which is incorrect. > This can lead to undesired consequences, e.g.: > A) {{RelMetadataQuery#getPulledUpPredicates}} can consider them as constants > (and place them inside {{{}RelOptPredicateList#constantMap{}}}) since > {{RelMdPredicates}} calls {{{}RexUtil#isConstant{}}}, which uses a > {{ConstantFinder}} that evaluates whether a RexCall is constant or not based > on the operator's isDeterministic value. > B) As a consequence of A) {{SortRemoveConstantKeyRule}} can incorrectly > remove an "ORDER BY RAND()" -- This message was sent by Atlassian Jira (v8.20.10#820010)