[ https://issues.apache.org/jira/browse/CALCITE-3118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16858693#comment-16858693 ]
Botong Huang edited comment on CALCITE-3118 at 6/7/19 2:20 PM: --------------------------------------------------------------- {quote}It is not wrong provided the children are identical {quote} I think you missed my point. The structure the _AssertOperandsDifferentRule_ is looking for is: A / \ B C where *B is A's first child*. What the match returned was: Rel1 / \ Rel2.1 Rel2.2 where Rel2.1 is *NOT* Rel1's first child. was (Author: botong): {quote}It is not wrong provided the children are identical {quote} I think you missed my point. The structure the _AssertOperandsDifferentRule_ is looking for is: A / \ B C where *B is A's first child*. What the match returned was: Rel1 / \ Rel2.1 Rel2.2 where Rel2.1 is *NOT* A's first child. > VolcanoRuleCall match parent child ordinal not properly checked > --------------------------------------------------------------- > > Key: CALCITE-3118 > URL: https://issues.apache.org/jira/browse/CALCITE-3118 > Project: Calcite > Issue Type: Bug > Reporter: Botong Huang > Priority: Major > Labels: pull-request-available > Time Spent: 1h > Remaining Estimate: 0h > > In VolcanoRuleCall.matchRecurse(), when ascending (child operand is matched, > looking for parent operand match), we want to check that the matched parent > indeed has the previously matched child RelNode as a child with the expected > ordinal. However, there is a bug in this check. As a result, some incorrect > parent is not skipped as expected and matched incorrectly. See unit test > included in PR for a case that triggers this bug, where the same RelNode get > matched for two operands at the same time. -- This message was sent by Atlassian JIRA (v7.6.3#76005)