Re: pg_upgrade failed with error - ERROR: column "a" in child table must be marked NOT NULL
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Michael Paquier <michael.paquier@gmail.com>
Cc: tushar <tushar.ahuja@enterprisedb.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2017-08-04T15:50:16Z
Lists: pgsql-hackers
Michael Paquier <michael.paquier@gmail.com> writes: > So I think that the attached patch is able to do the legwork. I've pushed this into HEAD. It seems like enough of a behavioral change that we wouldn't want to back-patch, but IMO it's not too late to be making this type of change in v10. If we wait for the next CF then it will take another year for the fix to reach the field. > While > looking at the code, I have bumped into index_check_primary_key() that > discarded the case of sending SET NOT NULL to child tables, as > introduced by 88452d5b. But that's clearly an oversight IMO, and the > comment is wrong to begin with because SET NOT NULL is spread to child > tables. Using is_alter_table instead of a plain true in > index_check_primary_key() for the call of AlterTableInternal() is > defensive, but I don't think that we want to impact any modules > relying on this API, so recursing only when ALTER TABLE is used is the > safest course of action to me. I didn't find that persuasive: I think passing "recurse" as just plain "true" is safer and more readable. We shouldn't be able to get there in a CREATE case, as per the comments; and if we did, there shouldn't be any child tables anyway; but if somehow there were, surely the same consistency argument would imply that we *must* recurse and fix those child tables. So I just made it "true". regards, tom lane
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix new pg_upgrade query not to rely on regnamespace
- f943e2339f6c 16.10 landed
- bd48455d88a8 15.14 landed
- bcb8d47cdd5e 17.6 landed
- 94dc2b37baee 14.19 landed
- 708469281ea8 13.22 landed
- 1e007722fa86 18.0 landed
- 144ad723a448 19 (unreleased) landed
-
pg_upgrade: check for inconsistencies in not-null constraints w/inheritance
- f63e408e894c 16.10 landed
- f295494d338c 19 (unreleased) landed
- ea3386cc784a 14.19 landed
- b8b2e60527c6 17.6 landed
- b0f0e2221f42 13.22 landed
- 0f49586850a9 15.14 landed
- 07da2985d6bf 18.0 landed
-
Apply ALTER ... SET NOT NULL recursively in ALTER ... ADD PRIMARY KEY.
- c30f1770a93d 10.0 landed