The PR uses union-find to maintain group equivalence. This is done by maintaining
a DisjointSet of group ids
representative group id to Group mapping.
The "path compression" done during union operation speeds up tpch sqlplannertest run from ~89s to ~9s on local machine.
TODO
[ ] Better to have a Map<GroupId, Group> interface without thinking about reduced group. We can use DisjointGroup to replace get_reduced_group_id, Memo::groups::..., and Memo::merge_group functionalities.
The PR uses union-find to maintain group equivalence. This is done by maintaining
The "path compression" done during
union
operation speeds up tpch sqlplannertest run from ~89s to ~9s on local machine.TODO
DisjointGroup
to replaceget_reduced_group_id
,Memo::groups::...
, andMemo::merge_group
functionalities.