From: | Viktor Valy <vili0121(at)gmail(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, "chris(dot)gut" <chris(dot)gut(at)gmx(dot)at> |
Subject: | Re: TODO Alter Table Rename Constraint |
Date: | 2010-11-10 11:32:10 |
Message-ID: | AANLkTimrwLHbtvaYH-MzSwkgu=aChcfsmPQ3gx5g_iW0@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Thanks for your answer!
I'm not really familiar with inheritance, but I wonder how this issue
is handled in other cases, for instance renaming an index, which invokes
internal a constraint rename too. Is that relevant or is the renaming of
constraints so special?
Is there a solution for the test-cases you have posted? Or is this yet a
problem?
Viktor
2010/11/9 Robert Haas <robertmhaas(at)gmail(dot)com>
> On Tue, Nov 9, 2010 at 10:50 AM, Viktor Valy <vili0121(at)gmail(dot)com> wrote:
> > Hi Everybody!
> > I looked up this todo, and figured out a plan, how the implementation
> could
> > be written.
> > The main challenge is to keep constraints and indexes (for unique and PK
> > constraints) consistent.
> > Fortunately this is already realized in the case of an index. So at ALTER
> > INDEX RENAME the consistency is given by an extra check in tablecmds.c
> (Line
> > 2246), where a function is finally called, RenameConstraintById
> > (pg_constraint.c Line 604).
> > My idea is, to do that analog for ALTER CONSTRAINT RENAME too. So
> renaming
> > the constraint is going to be done in tablecmds.c as for indexes, tables,
> > sequences, views. And after checking whether the renametype is
> constraint,
> > an extra rename has to be done for the index. Getting the index can be
> done
> > with the function get_constraint_index (pg_depend.c Line 475). Now it
> > should be possible to do the same as in RenameConstraintById.
> > Is that so legal? Is anything else to be considered?
>
> I think the biggest problem is handling inherited tables properly,
> especially in complex inheritance hierarchies where there are
> multiple, separate paths from the top of the hierarchy to the bottom.
>
> See here for a couple of relevant test cases:
>
> http://archives.postgresql.org/pgsql-hackers/2010-07/msg01570.php
>
> I believe that the rename needs to fail if any table in the
> inheritance hierarchy rooted at the target table also inherits the
> constraint from someplace outside that hierarchy; or if any table in
> that hierarchy has a local copy of the constraint that got merged with
> the inherited one.
>
> --
> Robert Haas
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2010-11-10 13:27:54 | Re: Fix for seg picksplit function |
Previous Message | Fujii Masao | 2010-11-10 11:30:05 | Re: [COMMITTERS] pgsql: Don't unblock SIGQUIT in the SIGQUIT handler This was possibly |