Skip to content

Commit 2435b7f

Browse files
committed
Filter non-canonical eclasses before rendering
1 parent 34d92f0 commit 2435b7f

File tree

1 file changed

+19
-13
lines changed
  • rust/cubesql/cubesql/egraph-debug-template/src

1 file changed

+19
-13
lines changed

rust/cubesql/cubesql/egraph-debug-template/src/index.tsx

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,16 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
104104
} as InputNodeData;
105105
})
106106
.concat(
107-
egraph.eclasses.map((eclass) => {
108-
return {
109-
id: eclass.id.toString(),
110-
label: eclass.id.toString(),
111-
comboId: `c${eclass.id}`,
112-
} as InputNodeData;
113-
}),
107+
egraph.eclasses
108+
// render only canonical eclasses to avoid rendering empty nodes and combos for merged ones
109+
.filter((eclass) => eclass.id === eclass.canon)
110+
.map((eclass) => {
111+
return {
112+
id: eclass.id.toString(),
113+
label: eclass.id.toString(),
114+
comboId: `c${eclass.id}`,
115+
} as InputNodeData;
116+
}),
114117
);
115118

116119
const allEdges = egraph.enodes
@@ -144,12 +147,15 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
144147
}
145148
let edges = [...uniqueEdges.values()];
146149

147-
let combos = egraph.eclasses.map((eclass) => {
148-
return {
149-
id: `c${eclass.id}`,
150-
label: `#${eclass.id}`,
151-
} as InputComboData;
152-
});
150+
let combos = egraph.eclasses
151+
// render only canonical eclasses to avoid rendering empty nodes and combos for merged ones
152+
.filter((eclass) => eclass.id === eclass.canon)
153+
.map((eclass) => {
154+
return {
155+
id: `c${eclass.id}`,
156+
label: `#${eclass.id}`,
157+
} as InputComboData;
158+
});
153159

154160
const nodesClone = nodes.slice();
155161
const edgesClone = edges.slice();

0 commit comments

Comments
 (0)