Describe the enhancement requested
Currently, when we encounter SingularOrList from Substrait, we convert it into an or list. In other words, expr1 || expr2 || expr3 || expr4. However, when all of the expressions are of the form field == literal (where field is the same) then we can replace it with is_in(field, [literal1, literal2, ..., literalN]).
This is arguably a little bit on the "planner/optimizer" slippery slope but it's a simple enough optimization and we already have an is_in function so I think it's a reasonable one to apply.
Component(s)
C++
Describe the enhancement requested
Currently, when we encounter
SingularOrListfrom Substrait, we convert it into an or list. In other words,expr1 || expr2 || expr3 || expr4. However, when all of the expressions are of the formfield == literal(wherefieldis the same) then we can replace it withis_in(field, [literal1, literal2, ..., literalN]).This is arguably a little bit on the "planner/optimizer" slippery slope but it's a simple enough optimization and we already have an
is_infunction so I think it's a reasonable one to apply.Component(s)
C++