Re(2): Re(2): 7.0.3 BUG

From: "pgsql-sql" <pgsql-sql(at)fc(dot)emc(dot)com(dot)ph>
To: pgsql-sql(at)postgresql(dot)org, tgl(at)sss(dot)pgh(dot)pa(dot)us
Cc: lockhart(at)alumni(dot)caltech(dot)edu
Subject: Re(2): Re(2): 7.0.3 BUG
Date: 2000-11-27 04:11:07
Message-ID: fc.000f56720081cd19000f56720081cd19.81cd2f@fc.emc.com.ph
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

tgl(at)sss(dot)pgh(dot)pa(dot)us writes:
>"pgsql-sql" <pgsql-sql(at)fc(dot)emc(dot)com(dot)ph> writes:
>> ERROR: copy: line 3910, Bad timestamp external representation
>'2000-01-05
>> 00:00:60.00+08'
>
>> Weird because those timestamps were generated by default now().
>
>Weird, all right. I can get 7.0.2 to emit an incorrect representation
>like that by constructing a fractional-second value that needs to be
>rounded off:
>
>play=> set TimeZone TO 'GMT-8';
>SET VARIABLE
>play=> select '2000-01-05 00:00:59.00+08'::timestamp + '0.999
>sec'::interval;
> ?column?
>---------------------------
> 2000-01-05 00:00:60.00+08
>(1 row)
>
>That's clearly a bug. Evidently the rounding to 2 fractional digits
>needs to be done before we start conversion, not at the end, since in
>the worst case the effects could need to propagate all the way to the
>displayed year.
>
>However, that shouldn't matter for now() results, because AFAIK now()
>results should always be exact integer seconds. Are you sure you
>weren't doing arithmetic on these values somewhere along the line?

Yes, I'm very sure.
About the dump file, I made manual changes to all timestamp
containing "00:00:60.00+08" (changed it to "00:00:00.00+08").
I did this because....
migrate=# select version();
version
---------------------------------------------------------------
PostgreSQL 7.0.2 on i686-pc-linux-gnu, compiled by gcc 2.95.3
(1 row)

migrate=# select '2000-01-05 00:00:60.00+08'::timestamp;
ERROR: Bad timestamp external representation '2000-01-05 00:00:60.00+08'
migrate=# select '2000-01-05 00:00:00.00+08'::timestamp;
?column?
---------------------------
2000-01-05 00:00:60.00+08
(1 row)

Is there a work-around to this aside from manually changing the dump file?
>
>In any case, I'm pretty sure nothing's changed in the timestamp code
>between 7.0.2 and 7.0.3, and I know of no changes that could explain
>your original report either. I'm not sure why your update went so
>disastrously --- I'm wondering about possibilities like a corrupted
>download of Postgres. What platform are you on (I think you said Linux,
>but which release of which distro)?

Distribution Version: Linux Mandrake release 7.2 (Odyssey) for
i586
Operating System Version: #1 Thu Oct 5 13:16:08 CEST 2000
Operating System Release: 2.2.17-21mdk
Processor Type: i686

>Where and how did you obtain
>your Postgres files; if you compiled them yourself, how did you
>configure and compile?

It was shipped with Mandrake-Linux 7.2
>
>> migrate=# select version();
>> version
>> ---------------------------------------------------------------
>> PostgreSQL 7.0.2 on i686-pc-linux-gnu, compiled by gcc 2.95.3
>
>That's a rather interesting version report, seeing as how there is
>no such gcc release as 2.95.3 according to the GCC project's homepage.
>What compiler are you using exactly, and what confidence do you have
>that it's bug-free? You wouldn't be using that known-unstable gcc
>that RedHat shipped in their 7.0, would you?

We can be sure that the compiler is relatively bug free because it was
used to recompile the entire Linux distribution...
>

sherwin
>

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Thomas Lockhart 2000-11-27 08:16:42 Re: 7.0.3 BUG
Previous Message Tom Lane 2000-11-25 16:28:58 Re: Re(2): 7.0.3 BUG