File tree Expand file tree Collapse file tree 1 file changed +14
-1
lines changed
rust/cubesql/cubesql/egraph-debug-template/src Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -113,7 +113,7 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
113
113
} ) ,
114
114
) ;
115
115
116
- let edges = egraph . enodes
116
+ const allEdges = egraph . enodes
117
117
. map ( ( node ) => {
118
118
return {
119
119
source : node . eclass . toString ( ) ,
@@ -130,6 +130,19 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
130
130
} ) ;
131
131
} ) ,
132
132
) ;
133
+ // Same eclass can be present as child for a single enode multiple times
134
+ // E.g. CubeScanFilters([CubeScanFilters([]), CubeScanFilters([])])
135
+ // Both internal nodes are same eclass
136
+ // This will lead to duplicated edges and non-uniq ids
137
+ const uniqueEdges = new Map ( ) ;
138
+ for ( const edge of allEdges ) {
139
+ const key = JSON . stringify ( edge ) ;
140
+ if ( uniqueEdges . get ( key ) ) {
141
+ continue ;
142
+ }
143
+ uniqueEdges . set ( key , edge ) ;
144
+ }
145
+ let edges = [ ...uniqueEdges . values ( ) ] ;
133
146
134
147
let combos = egraph . eclasses . map ( ( eclass ) => {
135
148
return {
You can’t perform that action at this time.
0 commit comments