Peter Geoghegan <p...@bowt.ie> writes: > On Mon, Apr 19, 2021 at 10:53 AM Tom Lane <t...@sss.pgh.pa.us> wrote: >> I think that the real fundamental bug is supposing that static analysis >> can give 100% correct answers.
> Is it really the case that static analysis of the kind that you'd need > to make this 100% robust is fundamentally impossible? I find that > proposition hard to believe. I didn't mean to imply that it's necessarily theoretically impossible, but given our lack of visibility into what a function or operator will do, plus the way that the collation feature was bolted on with minimal system-level redesign, it's sure pretty darn hard. Code like record_eq is doing a lot at runtime that we can't really see from static analysis. Anyway, given the ALTER TYPE ADD ATTRIBUTE counterexample, I'm definitely starting to lean towards "revert and try again in v15". I feel we'd be best off to consider functions/operators that operate on container types to be "maybe"s rather than certainly safe or certainly not safe. I think that such things appear sufficiently rarely in index specifications that it's not worth it to try to do an exact analysis of them, even if we were sure we could get that 100% right. But that doesn't seem to be an idea that can trivially be added to the current design. regards, tom lane