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? -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers