Re: bug in float8in()
От
Zdenek Kotala
Тема
Re: bug in float8in()
Дата
Msg-id
47F34AD3.4030602@sun.com
Ответ на
bug in float8in() (Richard Wang)
Список
Дерево обсуждения
bug in float8in() "Richard Wang" <ruc_wang@hotmail.com>
Re: bug in float8in() Magnus Hagander <magnus@hagander.net>
Re: bug in float8in() Tom Lane <tgl@sss.pgh.pa.us>
Re: bug in float8in() Zdenek Kotala <Zdenek.Kotala@Sun.COM>
If you look into documentation, the behavior of float/double is platform depend. If you want to same result on any platform, use numeric instead. Zdenek Richard Wang napsal(a): > I run the following sql statements in linux and get the results: > postgres=# create table test_double(col1 float8); > CREATE TABLE > postgres=# insert into test_double values(1.7976931348623159E308); > INSERT 0 1 > postgres=# select * from test_double; > col1 > ---------- > Infinity > (1 row) > > but in windows: > postgres=# create table test_double(col1 float8); > CREATE TABLE > postgres=# insert into test_double values(1.7976931348623159E308); > ERROR: > "17976931348623159000000000000000000000000000000000000000000000000000000 > 00000000000000000000000000000000000000000000000000000000000000000000000000000000 > 00000000000000000000000000000000000000000000000000000000000000000000000000000000 > 000000000000000000000000000000000000000000000000000000000000000000000000000000" > is out of range for type double precision > postgres=# select * from test_double; > col1 > ------ > (0 rows) > > This is a bug, the behavior in windows and linux is not the smae > > I check the code and find that float8in exists a bug: > the strtod() function in linux dosen't set errno when dealing with > 1.7976931348623159E308 but in windows it does > How should we improve it? > > >
В списке pgsql-hackers по дате отправления
От: NikhilS
Дата: