Обсуждение: CURRENT_TIMESTAMP breaking with 7.1->7.2 dump/import
Hello and thanks for the Postgres team for another fine release of
Postgres. I'm working on doing some test dump/imports from Postgres 7.1
to Postgres 7.2.
I'm using a 7.1 pg_dumpall, and a 7.2 psql to import.
It's hanging on this error:
##########################
CREATE TABLE "mail_history" ( "mail_id" integer DEFAULT
nextval('mail_history_mail_id_seq'::text) NOT NULL, "subject" character varying(200), "body" text,
"group_id"integer, "date_created" date DEFAULT date(('current'::"timestamp" +
'00:00'::"interval")) NOT NULL, "n_sent" integer DEFAULT 0
);
ERROR: Bad timestamp external representation 'current'
##################
The use of 'current' is clearly not suported as stated in the upgrade
docs. What's frustrating is that the SQL I used to create the table WAS
valid, using the standard CURRENT_DATE function, but Postgres internally
connverted this into this broken format. Here was my original create statement:
#########
create table mail_history ( mail_id serial, subject varchar(200),
body text, group_id integer, date_created date not null
defaultCURRENT_DATE, n_sent integer default 0
);
#######
This is from an old project. It might have started in Postgres 6.5.x and
then been imported into Postgres 7.0 and then Postgres 7.1. Is there a
way that I help coax Postgres into providing better support for this
kind of legacy data?
-mark
This turned out to have an easy work around:
perl -pi.bak -e "s/'current'/CURRENT_TIMESTAMP/" my_dump.dmp
-mark
Mark Stosberg wrote:
>
> Hello and thanks for the Postgres team for another fine release of
> Postgres. I'm working on doing some test dump/imports from Postgres 7.1
> to Postgres 7.2.
>
> I'm using a 7.1 pg_dumpall, and a 7.2 psql to import.
>
> It's hanging on this error:
> ##########################
> CREATE TABLE "mail_history" (
> "mail_id" integer DEFAULT
> nextval('mail_history_mail_id_seq'::text) NOT NULL,
> "subject" character varying(200),
> "body" text,
> "group_id" integer,
> "date_created" date DEFAULT date(('current'::"timestamp" +
> '00:00'::"interval")) NOT NULL,
> "n_sent" integer DEFAULT 0
> );
> ERROR: Bad timestamp external representation 'current'
> ##################
>
> The use of 'current' is clearly not suported as stated in the upgrade
> docs. What's frustrating is that the SQL I used to create the table WAS
> valid, using the standard CURRENT_DATE function, but Postgres internally
> connverted this into this broken format. Here was my original create statement:
> #########
> create table mail_history (
> mail_id serial,
> subject varchar(200),
> body text,
> group_id integer,
> date_created date not null default CURRENT_DATE,
> n_sent integer default 0
> );
> #######
>
> This is from an old project. It might have started in Postgres 6.5.x and
> then been imported into Postgres 7.0 and then Postgres 7.1. Is there a
> way that I help coax Postgres into providing better support for this
> kind of legacy data?
>
> -mark
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
-- . . . . . . . . . . . . . . . . . . . . . . . . . . Mark Stosberg Principal Developer
mark@summersault.com Summersault, LLC 765-939-9301 ext 223 website development . . . . .
http://www.summersault.com/. . . . . . .
Sure you don't want 'now' instead of 'current'??
Chris
> -----Original Message-----
> From: pgsql-sql-owner@postgresql.org
> [mailto:pgsql-sql-owner@postgresql.org]On Behalf Of Mark Stosberg
> Sent: Wednesday, 20 February 2002 6:47 AM
> To: pgsql-sql@postgresql.org
> Subject: Re: [SQL] CURRENT_TIMESTAMP breaking with 7.1->7.2 dump/import
>
>
>
> This turned out to have an easy work around:
>
> perl -pi.bak -e "s/'current'/CURRENT_TIMESTAMP/" my_dump.dmp
>
> -mark
>
> Mark Stosberg wrote:
> >
> > Hello and thanks for the Postgres team for another fine release of
> > Postgres. I'm working on doing some test dump/imports from Postgres 7.1
> > to Postgres 7.2.
> >
> > I'm using a 7.1 pg_dumpall, and a 7.2 psql to import.
> >
> > It's hanging on this error:
> > ##########################
> > CREATE TABLE "mail_history" (
> > "mail_id" integer DEFAULT
> > nextval('mail_history_mail_id_seq'::text) NOT NULL,
> > "subject" character varying(200),
> > "body" text,
> > "group_id" integer,
> > "date_created" date DEFAULT date(('current'::"timestamp" +
> > '00:00'::"interval")) NOT NULL,
> > "n_sent" integer DEFAULT 0
> > );
> > ERROR: Bad timestamp external representation 'current'
> > ##################
> >
> > The use of 'current' is clearly not suported as stated in the upgrade
> > docs. What's frustrating is that the SQL I used to create the table WAS
> > valid, using the standard CURRENT_DATE function, but Postgres internally
> > connverted this into this broken format. Here was my original
> create statement:
> > #########
> > create table mail_history (
> > mail_id serial,
> > subject varchar(200),
> > body text,
> > group_id integer,
> > date_created date not null default CURRENT_DATE,
> > n_sent integer default 0
> > );
> > #######
> >
> > This is from an old project. It might have started in Postgres 6.5.x and
> > then been imported into Postgres 7.0 and then Postgres 7.1. Is there a
> > way that I help coax Postgres into providing better support for this
> > kind of legacy data?
> >
> > -mark
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 6: Have you searched our list archives?
> >
> > http://archives.postgresql.org
>
> --
> . . . . . . . . . . . . . . . . . . . . . . . . . .
> Mark Stosberg Principal Developer
> mark@summersault.com Summersault, LLC
> 765-939-9301 ext 223 website development
> . . . . . http://www.summersault.com/ . . . . . . .
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>