On 1 November 2018 at 12:24, Andres Freund <and...@anarazel.de> wrote: > FWIW, I kind of wonder if we built proper infrastructure to allow to > make such inferrences from function calls, whether it could also be made > to support the transformation of LIKEs into indexable <= >= clauses.
Perhaps, but I doubt it would be the same function to do both. Surely I need something that accepts details about the function call as arguments and returns an Expr * of the argument that we can derive the order of the return value from, or NULL. I think the transformation you need might be more along the lines of returning a List * of quals that can substitute an OpExpr containing a function call. I'm not that clear on how we'd know the new quals were better than the existing ones. For example extract('year', dt) = 2018 could be transformed to dt >= '2018-01-01' AND dt < '2019-01-01', but how would we know that was better. There might be an index on extract('year', dt). -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services