On Friday, March 2, 2018 2:44:16 PM CET David Steele wrote: > Hi Pierre, > > On 3/2/18 6:36 AM, Pierre Ducroquet wrote: > > While working on a big table recently, I noticed that ALTER TABLE does not > > check for column existence in operations like SET NOT NULL before starting > > working on the table, for instance adding a primary key. > > It is thus possible, if a typo has been made, to generate a long lock and > > a > > lot of WAL that will serve no purpose since the whole transaction will be > > discarded. > > > > For example : > > > > toto=# alter table test add primary key(i), alter column typo set not > > null; > > ERROR: column "typo" of relation "test" does not exist > > Time: 10.794 s > > > > The attached patch fixes this behaviour by adding a small check in the > > first pass of alter table to make sure that a column referenced by an > > alter command exists first. It also checks if the column is added by > > another alter sub- command. It does not handle every scenario (dropping a > > column and then altering it for instance), these are left to the exec > > code to exclude. The patch has been checked with make check, and I see no > > documentation change to do since this does not alter any existing > > documented behaviour. > This looks like a good idea. However, the last CF for PG11 is in > progress so it might be difficult to attract much comment/review right now. > > I recommend entering this patch in the 2018-09 CF so it doesn't get lost.
Hi Thanks for the answer. I saw that bug two days ago but I had no time then to do the patch. Had I seen the CF window was that close I would have hurried up… Heh, this will just wait a few months. I will enter it in the 2018-09 CF as soon as it opens. Regards Pierre