Hi,
I've found a bug either in pg_dump or in psql(Postgresql 6.5.3). When
using CURRENT_DATE as a default value, pg_dump produce an invalid dump
which can't be restored with psql. This can be reproduced this way:
% createdb foo
% psql foo
Welcome to the POSTGRESQL interactive sql monitor:
Please read the file COPYRIGHT for copyright terms of POSTGRESQL
[PostgreSQL 6.5.3 on i686-pc-linux-gnu, compiled by gcc 2.7.2.3]
type \? for help on slash commands
type \q to quit
type \g or terminate with semicolon to execute query
You are currently connected to the database: foo
foo=> CREATE TABLE bar( creation date DEFAULT CURRENT_DATE NOT NULL);
CREATE
foo=> \q
% pg_dump foo >foo.dump
% destroydb foo
% createdb foo
% psql foo < foo.dump
\connect - lolo
connecting as new user: lolo
CREATE TABLE "bar" (
"creation" date DEFAULT date( 'current'::datetime + '0 sec') NOT
NULL);
ERROR: parser: parse error at or near "'"
COPY "bar" FROM stdin;
ERROR: COPY command failed. Class bar does not exist.
... and a lot of garbage :-(
Of course, I can edit the dump to change
"creation" date DEFAULT date( 'current'::datetime + '0 sec') NOT NULL
to
"creation" date DEFAULT CURRENT_DATE NOT NULL
and then the database can be restored, but it is not a good solution
IMHO.
Configuration:
RedHat Linux 5.2 on Intel PII
Postgresql 6.5.3 build from original sources (not RPM)
Lolo
--
Laurent Frigault
Adrén@line Ingénierie Multimédia, 44, rue Blanche 75009 Paris
Tél : +33 1 55 31 78 00 Fax : +33 1 55 31 78 08 http://www.aim.fr
Visitez notre dernière réalisation : http://www.lapostefinance.fr