I noticed that << and >> are not marked as commutator operators,
though a naive view of their semantics suggests they should be.
However, I realized that there might be edge cases I wasn't thinking
about, so I went looking in the patch to try to confirm this. And
I found neither a single line of documentation about it, nor a single
comment in that hairy little nest of unobvious tests that calls itself
range_cmp_bounds. I am of the opinion that that routine not only
requires a comment, but very possibly a comment longer than the routine
itself. What's more, if it's this complicated to code, surely it would
be a good idea for the user-facing documentation to explain exactly
what we think before/after mean?
In general, the level of commenting in the rangetypes code seems far short
of what I'd consider acceptable for Postgres code. I plan to fix some
of that myself, but I do not wish to reverse-engineer what the heck
range_cmp_bounds thinks it's doing.
regards, tom lane