Skip to content

[CALCITE-4129] Support deep equality check for RelNode#2074

Closed
hsyuan wants to merge 2 commits intoapache:masterfrom
hsyuan:digest
Closed

[CALCITE-4129] Support deep equality check for RelNode#2074
hsyuan wants to merge 2 commits intoapache:masterfrom
hsyuan:digest

Conversation

@hsyuan
Copy link
Copy Markdown
Member

@hsyuan hsyuan commented Jul 18, 2020

Currently the only way to check rel node tree deep equality is transforming
into String by RelOptUtil.toString(rel) with
SqlExplainLevel.EXPPLAN_ATTRIBUTES, which is inefficient. One example is
RexSubQuery. It has to do it this way, because the rel being reference by
RexSubQuery is possibly not yet registered to VolcanoPlanner, and the digest
equals checks the input RelNode by identity (not content). That is OK for
RelSubset and HepRelVertex, if the RelNode is already registered in planner,
but not for plain RelNode that is outside of planner. Due to this, we have to
implement another set of deep equals logic in our system.

With this patch, digestEquals() and digestHash() are extended to support
deep equality check for RelNode.

CALCITE-4129

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants