From 05e20cbc17d21c3e325704dae9c72e0d8d01e62c Mon Sep 17 00:00:00 2001 From: Mikhail Cheshkov Date: Fri, 8 Nov 2024 15:33:08 +0200 Subject: [PATCH] Filter non-canonical eclasses before rendering --- .../egraph-debug-template/src/index.tsx | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/rust/cubesql/cubesql/egraph-debug-template/src/index.tsx b/rust/cubesql/cubesql/egraph-debug-template/src/index.tsx index ca68be61a0298..29717ea340dcc 100644 --- a/rust/cubesql/cubesql/egraph-debug-template/src/index.tsx +++ b/rust/cubesql/cubesql/egraph-debug-template/src/index.tsx @@ -104,13 +104,16 @@ function prepareStates(states: InputData): Array { } as InputNodeData; }) .concat( - egraph.eclasses.map((eclass) => { - return { - id: eclass.id.toString(), - label: eclass.id.toString(), - comboId: `c${eclass.id}`, - } as InputNodeData; - }), + egraph.eclasses + // render only canonical eclasses to avoid rendering empty nodes and combos for merged ones + .filter((eclass) => eclass.id === eclass.canon) + .map((eclass) => { + return { + id: eclass.id.toString(), + label: eclass.id.toString(), + comboId: `c${eclass.id}`, + } as InputNodeData; + }), ); const allEdges = egraph.enodes @@ -144,12 +147,15 @@ function prepareStates(states: InputData): Array { } let edges = [...uniqueEdges.values()]; - let combos = egraph.eclasses.map((eclass) => { - return { - id: `c${eclass.id}`, - label: `#${eclass.id}`, - } as InputComboData; - }); + let combos = egraph.eclasses + // render only canonical eclasses to avoid rendering empty nodes and combos for merged ones + .filter((eclass) => eclass.id === eclass.canon) + .map((eclass) => { + return { + id: `c${eclass.id}`, + label: `#${eclass.id}`, + } as InputComboData; + }); const nodesClone = nodes.slice(); const edgesClone = edges.slice();