Thread: pg_dump of table including check rule fails to restore

pg_dump of table including check rule fails to restore

From
"Lewis Foti"
Date:
Hi

I have a schema which includes one table with a CHECK constraint. After the
schema is dumped (with pg_dump) as ascii text attempts to recreate it using
the psql -f <filename> command cause this one table, called navigaion, to
fail to create. This is using postgresql 7.3.3 on Redhat 9.0.  The fragment
of the dump is below. Is there a cure for this problem?

regards

Lewis

--
-- TOC entry 6 (OID 154551)
-- Name: navigation; Type: TABLE; Schema: public; Owner: wallet
--

CREATE TABLE navigation (
    src_section_id integer NOT NULL,
    dst_section_id integer NOT NULL,
    rank smallint NOT NULL,
    CHECK ((parent_section_id <> child_section_id))
) WITHOUT OIDS;

Lewis Foti

e: lewis.foti@mentation.com
m: +44 (0)7771 535943
w: www.mentation.com

Re: pg_dump of table including check rule fails to restore

From
"Lewis Foti"
Date:
Further to my original message I realise that the problem was due to the
text of the rule still referring to columns, src_section_id and
dst_section_id by their original names, parent_section_id and
child_section_id respectively. So the nature of the bug changes to that
pg_dump does not correctly export CHECK rules where the name of the
column(s) referred to has changed. Now IMHO that is somewhat subtle.

regards

Lewis

-----Original Message-----
From: Lewis Foti [mailto:lewis.foti@mentation.com]
Sent: 16 December 2003 18:26
To: pgsql-bugs@postgresql.org
Subject: pg_dump of table including check rule fails to restore


Hi

I have a schema which includes one table with a CHECK constraint. After the
schema is dumped (with pg_dump) as ascii text attempts to recreate it using
the psql -f <filename> command cause this one table, called navigaion, to
fail to create. This is using postgresql 7.3.3 on Redhat 9.0.  The fragment
of the dump is below. Is there a cure for this problem?

regards

Lewis

--
-- TOC entry 6 (OID 154551)
-- Name: navigation; Type: TABLE; Schema: public; Owner: wallet
--

CREATE TABLE navigation (
    src_section_id integer NOT NULL,
    dst_section_id integer NOT NULL,
    rank smallint NOT NULL,
    CHECK ((parent_section_id <> child_section_id))
) WITHOUT OIDS;

Lewis Foti

e: lewis.foti@mentation.com
m: +44 (0)7771 535943
w: www.mentation.com

Re: pg_dump of table including check rule fails to restore

From
Peter Eisentraut
Date:
Lewis Foti wrote:
> I have a schema which includes one table with a CHECK constraint.
> After the schema is dumped (with pg_dump) as ascii text attempts to
> recreate it using the psql -f <filename> command cause this one
> table, called navigaion, to fail to create. This is using postgresql
> 7.3.3 on Redhat 9.0.  The fragment of the dump is below. Is there a
> cure for this problem?

> CREATE TABLE navigation (
>     src_section_id integer NOT NULL,
>     dst_section_id integer NOT NULL,
>     rank smallint NOT NULL,
>     CHECK ((parent_section_id <> child_section_id))
> ) WITHOUT OIDS;

Can you remember how you constructed this table?  Did you drop or alter
some columns?  Do you have your original table creation script around
or something like that?

Obviously, this table is invalid, but we need to find out how you
arrived there.

Re: pg_dump of table including check rule fails to restore

From
Peter Eisentraut
Date:
Lewis Foti wrote:
> Further to my original message I realise that the problem was due to
> the text of the rule still referring to columns, src_section_id and
> dst_section_id by their original names, parent_section_id and
> child_section_id respectively. So the nature of the bug changes to
> that pg_dump does not correctly export CHECK rules where the name of
> the column(s) referred to has changed. Now IMHO that is somewhat
> subtle.

This appears to be fixed in 7.4.  Upgrading might be your best option
unless you want to backport the pg_dump fix to 7.3.