• gkodinov/kgeorge@macbook.gmz's avatar
    BUG#20420: optimizer reports wrong keys on left join with IN · 134e9493
    gkodinov/kgeorge@macbook.gmz authored
     The optimizer needs to evaluate whether predicates are better
     evaluated using an index. IN is one such predicate.
     To qualify an IN predicate must involve a field of the index
     on the left and constant arguments on the right.
     However whether an expression is a constant can be determined only
     by knowing the preceding tables in the join order. 
     Assuming that only IN predicates with expressions on the right that
     are constant for the whole query qualify limits the scope of 
     possible optimizations of the IN predicate (more specifically it
     doesn't allow the "Range checked for each record" optimization for
     such an IN predicate.
     Fixed by not pre-determining the optimizability of the IN predicate
     in the case when all right IN operands are not SQL constant expressions
    134e9493
func_in.test 8.01 KB