@@ -425,7 +425,7 @@ fn next_var_to_eliminate(
425425) -> Option < IndexSet < Variable > > {
426426 let ( _var, subquery_vars) = vars
427427 . iter ( )
428- . map ( |( var, _vinfo ) | {
428+ . map ( |( var, vinfo ) | {
429429 let subquery_vars = atoms
430430 . iter ( )
431431 // every atom that contains this variable
@@ -435,14 +435,14 @@ fn next_var_to_eliminate(
435435
436436 // Optimization: use functional dependencies to find all variables inferred by the
437437 // current neightborhood.
438- let subquery_vars = fun_deps. closure ( subquery_vars) ;
439- // let subquery_vars:DenseIdMap<_, ()> = subquery_vars.map(|v| (v, ())).collect();
438+ // let subquery_vars = fun_deps.closure(subquery_vars);
439+ let subquery_vars: DenseIdMap < _ , ( ) > = subquery_vars. map ( |v| ( v, ( ) ) ) . collect ( ) ;
440440
441441 let occ = atoms
442442 . iter ( )
443443 . filter ( |( _, atom) | atom. vars ( ) . any ( |v| subquery_vars. contains_key ( v) ) )
444444 . count ( ) ;
445- let inv_selectivity = _vinfo
445+ let size_estimation = vinfo
446446 . occurrences
447447 . iter ( )
448448 . filter_map ( |occ| {
@@ -457,13 +457,13 @@ fn next_var_to_eliminate(
457457 Some ( col_est. col_uniqueness ( table, col) )
458458 } )
459459 . fold ( ColUniqueness :: default ( ) , |a, b| a. join ( & b) ) ;
460- // ((occ, inv_selectivity ), var, subquery_vars)
461- ( occ, var, subquery_vars)
460+ ( ( occ, size_estimation ) , var, subquery_vars)
461+ // (occ, var, subquery_vars)
462462 } )
463463 . min_by_key ( |a| a. 0 )
464464 . map ( |a| ( a. 1 , a. 2 ) ) ?;
465465 Some ( IndexSet :: from_iter (
466- subquery_vars. into_iter ( ) . map ( |( var, _) | var) ,
466+ fun_deps . closure ( subquery_vars. iter ( ) . map ( | ( var , _ ) | var ) ) . into_iter ( ) . map ( |( var, _) | var) ,
467467 ) )
468468}
469469
0 commit comments