Paul Ramsey <pram...@cleverelephant.ca> writes: > Thanks for the patch, I’ve applied and smoothed and taken your advice on > schema-qualified lookups as well.
Hm, I think your addition of this bit is wrong: + /* + * Arguments were swapped to put the index value on the + * left, so we need the commutated operator for + * the OpExpr + */ + if (swapped) + { + oproid = get_commutator(oproid); + if (!OidIsValid(oproid)) PG_RETURN_POINTER((Node *)NULL); + } We already did the operator lookup with the argument types in the desired order, so this is introducing an extra swap. The only reason it appears to work, I suspect, is that all your index operators are self-commutators. regards, tom lane