ALTER TABLE - Mailing list pgsql-bugs

From Gena Gurchonok
Subject ALTER TABLE
Date
Msg-id 0601.000803@rt.mipt.ru
Whole thread Raw
Responses Re: ALTER TABLE  (Bruce Momjian <pgman@candle.pha.pa.us>)
Re: ALTER TABLE  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
============================================================================
                         POSTGRESQL BUG REPORT TEMPLATE
============================================================================

Your name               : Gena Gurchonok
Your email address      : gena@rt.mipt.ru

System Configuration
---------------------
   Architecture (example: Intel Pentium): intel Celeron 500
   Operating System (example: Linux 2.0.26 ELF): 2.2.16 ELF
   PostgreSQL version (example: PostgreSQL-7.0):   PostgreSQL-7.0.2
   Compiler used (example:  gcc 2.8.0): pgcc-2.91.66


Please enter a FULL description of your problem:
------------------------------------------------

When I renaming table using ALTER TABLE,
it doesn't change table name in RI triggers. This results in backend
crash due to invalid arguments for RI_Check trigger procedure.


Please describe a way to repeat the problem.   Please try to provide a
concise reproducible example, if at all possible:
----------------------------------------------------------------------

CREATE TABLE "pr1" (
        "id" int4 ,
        PRIMARY KEY ("id")
);

CREATE TABLE "fr" (
        "f_id" int4 NOT NULL,
        CONSTRAINT fr_fkey FOREIGN KEY (f_id)
        REFERENCES pr1(id)
        MATCH FULL
        ON DELETE RESTRICT
        ON UPDATE CASCADE
        NOT DEFERRABLE
        INITIALLY IMMEDIATE
);

insert into pr1 values(1);
insert into fr values(1);

alter table fr rename to fr2;

delete from pr1;

As the result we have:
pqReadData() -- backend closed the channel unexpectedly.
        This probably means the backend terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

pg_dump gives

\connect - gena
CREATE TABLE "pr1" (
        "id" int4 NOT NULL,
        PRIMARY KEY ("id")
);
CREATE TABLE "fr2" (
        "f_id" int4 NOT NULL
);
COPY "pr1" FROM stdin;
1
\.
COPY "fr2" FROM stdin;
1
\.
CREATE CONSTRAINT TRIGGER "fr_fkey" AFTER DELETE ON "pr1"  NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE
PROCEDURE"RI_FKey_restrict_del" ('fr_fkey', 'fr', 'pr1', 'FULL', 'f_id', 'id'); 
CREATE CONSTRAINT TRIGGER "fr_fkey" AFTER UPDATE ON "pr1"  NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE
PROCEDURE"RI_FKey_cascade_upd" ('fr_fkey', 'fr', 'pr1', 'FULL', 'f_id', 'id'); 
CREATE CONSTRAINT TRIGGER "fr_fkey" AFTER INSERT OR UPDATE ON "fr2"  NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW
EXECUTEPROCEDURE "RI_FKey_check_ins" ('fr_fkey', 'fr', 'pr1', 'FULL', 'f_id', 'id'); 

please take a look at TRIGGERS' arguments

pgsql-bugs by date:

Previous
From: Simon Banton
Date:
Subject: LinuxPPC/PG 7.0.2 .ctl file handling and \i comment parsing
Next
From: Bruce Momjian
Date:
Subject: Re: ALTER TABLE