Re: bug in float8in()
От | Zdenek Kotala |
---|---|
Тема | Re: bug in float8in() |
Дата | |
Msg-id | 47F34AD3.4030602@sun.com обсуждение исходный текст |
Ответ на | bug in float8in() ("Richard Wang" <ruc_wang@hotmail.com>) |
Список | pgsql-hackers |
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 по дате отправления: