Re: BUG #13126: table constraint loses its comment

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: xi(at)resolvent(dot)net, PostgreSQL mailing lists <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #13126: table constraint loses its comment
Date: 2015-05-27 13:10:20
Message-ID: CAB7nPqRk+Y_agaYWtjyQtghGL_m8_PSER=d85E2yvhtY3sh0ug@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

On Wed, Apr 29, 2015 at 1:30 PM, Michael Paquier
<michael(dot)paquier(at)gmail(dot)com> wrote:
> On Sun, Apr 26, 2015 at 6:05 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> xi(at)resolvent(dot)net writes:
>>> In some circumstances, the comment on a table constraint disappears. Here
>>> is an example:
>>
>> Hm, yeah. The problem is that ATExecAlterColumnType() rebuilds all the
>> affected indexes from scratch, and it isn't doing anything about copying
>> their comments to the new objects (either comments on the constraints, or
>> comments directly on the indexes).
>>
>> The least painful way to fix it might be to charter ATPostAlterTypeCleanup
>> to create COMMENT commands and add those to the appropriate work queue,
>> rather than complicating the data structure initially emitted by
>> ATExecAlterColumnType. But it'd still be a fair amount of new code I'm
>> afraid.
>>
>> Not planning to fix this personally, but maybe someone else would like to
>> take it up.
>
> In order to fix this, an idea would be to add a new routine in
> ruleutils.c that generates the COMMENT query string, and then call it
> directly from tablecmds.c. On master, I imagine that we could even add
> some SQL interface if there is some need.
> Thoughts?

After looking at this problem, I noticed that the test case given
above does not cover everything: primary key indexes, constraints
(CHECK for example) and indexes alone have also their comments removed
after ALTER TABLE when those objects are re-created. I finished with
the patch attached to fix everything, patch that includes a set of
regression tests covering all the code paths added.
--
Michael

Attachment Content-Type Size
0001-Ensure-COMMENT-persistency-of-indexes-and-constraint.patch text/x-diff 14.3 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message lincpa 2015-05-27 13:53:28 BUG #13360: initdb --locale = C error
Previous Message Stephen Frost 2015-05-27 01:46:25 Re: Incorrect processing of CREATE TRANSFORM with DDL deparding

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2015-05-27 13:20:58 Re: Re: [COMMITTERS] pgsql: Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE.
Previous Message Andreas Joseph Krogh 2015-05-27 12:55:40 Re: Triggers on transaction?