Thread: BUG #2781: database dump/restore problems

BUG #2781: database dump/restore problems

From
"Greg Peters"
Date:
The following bug has been logged online:

Bug reference:      2781
Logged by:          Greg Peters
Email address:      gregpeters79@gmail.com
PostgreSQL version: 8.1/8.2beta3
Operating system:   WInXP
Description:        database dump/restore problems
Details:

Hello,

I recently performed a database dump with 8.2b3 for a complete database. An
example of the SQL output for a single table is below:

CREATE TABLE admin_field_list (
    "key" bigint NOT NULL,
    field character varying(25) NOT NULL,
    added_by character varying(25) NOT NULL,
    add_date timestamp without time zone DEFAULT now() NOT NULL,
    mod_date timestamp without time zone,
    modified_by character varying(25)
);


ALTER TABLE public.admin_field_list OWNER TO root;

--
-- TOC entry 1351 (class 1259 OID 16425)
-- Dependencies: 1352 4
-- Name: admin_field_list_key_seq; Type: SEQUENCE; Schema: public; Owner:
root
--

CREATE SEQUENCE admin_field_list_key_seq
    START WITH 1
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;

As you can see, the primary key is exported as a bigint, with a separate
section for the sequence. This differs to the way 8.1 dumps the same table
below:

CREATE TABLE admin_field_list (
    "key" bigserial NOT NULL,
    field character varying(25) NOT NULL,
    added_by character varying(25) NOT NULL,
    add_date timestamp without time zone DEFAULT now() NOT NULL,
    mod_date timestamp without time zone,
    modified_by character varying(25)
);

I then tried to restore the DB dumped by 8.2b3 into 8.1, with no success. It
didn't like the sequence part. This probably isn't so much a bug, but more a
backwards compatibility issue. Also, it seems strange to make the newer
database dumps more verbose and complicated. Surely the simple "bigserial"
datatype is a better method, and easier to implement then the sequence
statements?

Regards,

Greg.

Re: BUG #2781: database dump/restore problems

From
Tom Lane
Date:
"Greg Peters" <gregpeters79@gmail.com> writes:
> As you can see, the primary key is exported as a bigint, with a separate
> section for the sequence. This differs to the way 8.1 dumps the same table
> below:

This is an intentional change that fixes a lot of corner cases such as
renamed sequences.  The former behavior looked simple, perhaps, but it
failed outright in too many scenarios.  See
http://archives.postgresql.org/pgsql-committers/2006-08/msg00376.php
and preceding discussions in pgsql-hackers.

> I then tried to restore the DB dumped by 8.2b3 into 8.1, with no success. It
> didn't like the sequence part. This probably isn't so much a bug, but more a
> backwards compatibility issue.

We have never promised backward compatibility of pg_dump output to older
server versions.

            regards, tom lane

Re: BUG #2781: database dump/restore problems

From
"Thomas H."
Date:
> We have never promised backward compatibility of pg_dump output to older
> server versions.

regarding pg_dump: where there some changes from b3 to rc1 that would
explain the resulting rc1 pg_dump output (-c) being half as big as with b3?
i've rerun pg_dump several times with the same result, and no error
messages.

- thomas

Re: BUG #2781: database dump/restore problems

From
Tom Lane
Date:
"Thomas H." <me@alternize.com> writes:
> regarding pg_dump: where there some changes from b3 to rc1 that would
> explain the resulting rc1 pg_dump output (-c) being half as big as with b3?

No...

            regards, tom lane

Re: BUG #2781: database dump/restore problems

From
"Thomas H."
Date:
>> regarding pg_dump: where there some changes from b3 to rc1 that would
>> explain the resulting rc1 pg_dump output (-c) being half as big as with
>> b3?
>
> No...
>
> regards, tom lane
>

well, it was 300mb before rc1, and now its only 188mb. inbetween i did a
vacuum full on one table. that shoulnd't affect backup size, should it? i'll
restore one of the new backups later on to be sure all data is still there.

- thomas