On 04.03.25 18:35, Tom Lane wrote:
> In any case, my gripe was less about the name of the flag and more
> about the lack of a clear specification of what it means. "does AM
> support cross-type comparisons" doesn't get the job done. Maybe
> we can fit
>
> /* do operators within an opfamily have consistent equality semantics? */
> bool amconsistentequality;
> /* do operators within an opfamily have consistent ordering semantics? */
> bool amconsistentordering;
> Also, I'm thinking that equality_ops_are_compatible and
> comparison_ops_are_compatible now have a bit of a performance problem.
> The original coding was intended to provide a cheap check before
> expending the cycles to test op_in_opfamily. This patch has
> completely blown that up, since GetIndexAmRoutineByAmId is *more*
> expensive than op_in_opfamily. I suggest reversing things so that we
> test op_in_opfamily first and only bother to look up the AM details
> when we've verified that both operators belong to the same family.
I have committed fixes for these issues along the lines you suggested.