Re(2): Re(2): 7.0.3 BUG
От | pgsql-sql |
---|---|
Тема | Re(2): Re(2): 7.0.3 BUG |
Дата | |
Msg-id | fc.000f56720081cd19000f56720081cd19.81cd2f@fc.emc.com.ph обсуждение исходный текст |
Ответы |
Re: Re(2): Re(2): 7.0.3 BUG
(Alain Toussaint <nailed@videotron.ca>)
|
Список | pgsql-sql |
tgl@sss.pgh.pa.us writes: >"pgsql-sql" <pgsql-sql@fc.emc.com.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 >
В списке pgsql-sql по дате отправления: