Re: pg_upgrade failed with error - ERROR: column "a" in child table must be marked NOT NULL

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pg_upgrade failed with error - ERROR: column "a" in child table must be marked NOT NULL
Date: 2017-07-27 14:58:46
Views: Raw Message | Whole Thread | Download mbox
Lists: pgsql-hackers

On Wed, Jul 26, 2017 at 4:50 PM, Michael Paquier
<michael(dot)paquier(at)gmail(dot)com> wrote:
> On Wed, Jul 26, 2017 at 4:02 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> Not sure what's involved there code-wise, though, nor whether we'd want
>> to back-patch.
> I'll try to look at the code around that to come up with a clear
> conclusion in the next couple of days, likely more as that's a
> vacation period. Surely anything invasive would not be backpatched.

So I think that the attached patch is able to do the legwork. 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. With this logic, we rely as well on the
fact that ADD PRIMARY KEY is not recursive in tablecmds.c. Comments
are welcome, I'll park that into the CF app so as it does not get lost
in the void.

Attachment Content-Type Size
alttab-setnotnull-v1.patch application/octet-stream 1.9 KB

In response to


Browse pgsql-hackers by date

  From Date Subject
Next Message Yugo Nagata 2017-07-27 16:01:09 Re: Missing comment for max_logical_replication_workers in postgresql.conf.sample
Previous Message Stephen Frost 2017-07-27 14:27:36 Re: pg_stop_backup(wait_for_archive := true) on standby server