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> {
113113 } ) ,
114114 ) ;
115115
116- let edges = egraph . enodes
116+ const allEdges = egraph . enodes
117117 . map ( ( node ) => {
118118 return {
119119 source : node . eclass . toString ( ) ,
@@ -130,6 +130,19 @@ function prepareStates(states: InputData): Array<PreparedStateData> {
130130 } ) ;
131131 } ) ,
132132 ) ;
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 ( ) ] ;
133146
134147 let combos = egraph . eclasses . map ( ( eclass ) => {
135148 return {
You can’t perform that action at this time.
0 commit comments