Vik Fearing <v...@postgresfriends.org> writes: > On 10/2/23 21:25, Tom Lane wrote: >> Sorry for not weighing in on this before, but ... is this a feature >> we want at all?
> For standards conformance, I vote yes. Only if we can actually implement it in a defensible way, which this patch is far short of accomplishing. >> We are very clear in the existing docs that CHECK >> conditions must be immutable [1], > That is what the *user* documentation says, but we both know it isn't true. > Here is a short conversation you and I had about five years ago where > you defended the non-immutability of CHECK constraints: > https://www.postgresql.org/message-id/flat/12539.1544107316%40sss.pgh.pa.us What I intended to defend was not *checking* immutability strictly. Our CHECK constraint implementation is based very much on the assumption that the constraints are immutable, and nobody has proposed that we try to remove that assumption AFAIR. So I think the docs are fine as-is; anybody who wants to get into monotonically-weakening constraints is probably smart enough to work out for themselves whether it will fly or not. So my problem with this patch is that it does nothing about that assumption, and yet the feature it adds seems useless without weakening the assumption. So what weaker assumption could we make, and how would we modify the when-to-check rules to match that, and what would it cost us in performance? Without good answers to those questions, this patch is just a facade. > I disagree with this. The whole point of deferring constraints is to be > able to do some cleanup before the consistency is checked. What cleanup would you need that couldn't be performed beforehand (e.g. in a BEFORE INSERT/UPDATE trigger)? All the practical examples that occur to me involve cross-row conditions, which CHECK is unsuitable to enforce --- at least, without doing a thorough implementation rethink. I continue to assert that basing this feature on the current CHECK implementation will produce nothing but a toy feature, that's not only of little practical use but will be an active foot-gun for people who expect it to do more than it can. regards, tom lane