Re: ALTER TABLE ADD COLUMN fast default
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andrew Gierth <andrew@tao11.riddles.org.uk>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2021-04-05T13:15:32Z
Lists: pgsql-hackers
On 4/4/21 6:50 PM, Tom Lane wrote: > Andrew Dunstan <andrew@dunslane.net> writes: >> On 4/4/21 12:05 PM, Tom Lane wrote: >>> I made CheckConstraintFetch likewise not install its array until >>> it's done. I notice that it is throwing elog(ERROR) not WARNING >>> for the equivalent cases of not finding the right number of >>> entries. I wonder if we ought to back that off to a WARNING too. >>> elog(ERROR) during relcache entry load is kinda nasty, because >>> it prevents essentially *all* use of the relation. On the other >>> hand, failing to enforce check constraints isn't lovely either. >>> Anybody have opinions about that? >> None of this is supposed to happen, is it? If you can't fetch the >> constraints (and I think of a default as almost a kind of constraint) >> your database is already somehow corrupted. So maybe if any of these >> things happen we should ERROR out. Anything else seems likely to corrupt >> the database further. > Meh. "pg_class.relchecks is inconsistent with the number of entries > in pg_constraint" does not seem to me like a scary enough situation > to justify a panic response. Maybe there's an argument for failing > at the point where we'd need to actually apply the CHECK constraints > (similarly to what my patch is doing for missing defaults). > But preventing the user from, say, dumping the data in the table > seems to me to be making the situation worse not better. > > OK, fair argument. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
Commits
-
Clean up treatment of missing default and CHECK-constraint records.
- 091e22b2e673 14.0 landed
-
Fast ALTER TABLE ADD COLUMN with a non-NULL default
- 16828d5c0273 11.0 landed
-
Fix application of identity values in some cases
- 533c5d8bddf0 11.0 cited