Jeff Davis <pgsql@j-davis.com> writes:
> That was discussed a few times, but:
> (a) That doesn't exactly solve the problem, because people still need
> indexes on LOWER() or CASEFOLD(); and
> (b) If we change IMMUTABLE to mean "returns the same results on every
> platform for all time", that would be too strict for many purposes,
> like the planner doing constant folding.
Yeah. Not only would the set of functions meeting such a standard be
vanishingly small, but so would the set of use-cases. What we need is
some sort of understanding that "this is okay to use in indexes",
"this is okay to constant-fold when planning", etc. Maybe it's less
about "is it okay to just assume this" and more about "can we devise
a method for figuring out when we have to reindex, replan, etc".
We've got bits of that in our collation versioning infrastructure,
but that doesn't cover every source of infrequently-mutating behavior.
> I have been thinking about ways we can express the right dependencies,
> and I may be making some proposals along those lines.
I await a proposal with interest.
regards, tom lane