From: | Basil Peace <grv87(at)yandex(dot)ru> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: BUG #8355: PL/Python 3 can't convert infinity to PostgreSQL's value |
Date: | 2013-08-04 16:46:55 |
Message-ID: | 1122541375634815@web11d.yandex.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
I based on the documentation of PostgreSQL (http://www.postgresql.org/docs/9.2/static/datatype-numeric.html#DATATYPE-FLOAT) which says about 'Infinity' and '-Infinity' and doesn't mention other possible spellings, including 'inf'.
And on my installation of 9.2.4 'inf' doesn't work too (as I supposed according to documentation):
SELECT 'inf'::float8
ERROR: invalid input syntax for type double precision: "inf"
LINE 2: SELECT 'inf'::float8
According to Python's documentation (http://docs.python.org/2/library/stdtypes.html#typesnumeric) handle of infinities and NaNs was added in 2.6. At least this works in 2.7.1:
Python 2.7.1 (r271:86832, Apr 1 2013, 01:27:27) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> float('inf')
inf
>>> float('infinity')
inf
>>> float('+inf')
inf
>>> float('-inf')
-inf
So, Python is honest in this way. And, C99 says that style of representation ('inf' or 'infinity') is implementation-defined, so it is all OK with modern Python.
> We already backstop strtod() for these cases:
>
> NaN
> Infinity
> -Infinity
>
> but the wording of the spec clearly requires +Infinity as well as the
> forms with just "inf". (It also appears to require +/- NaN to be
> accepted, but I have no idea what that would mean and suspect it to
> be a thinko.)
As I can judge, signed NaNs are from the same world as signed zeros and signed infinities. Strictly speaking: (-0)/(+0) is -NaN, (-inf)/(+inf) is -NaN, and so on.
I think that PostgreSQL's ability to handle signed zeros (and all other rare stuff) depends on compiler used. Google says me that '-NaN' exists in modern glibc. I don't know about MSVC. My Python accepts '-nan' as input, but doesn't give me '-NaN' as output.
So, I think it would be good if '-NaN' and other forms were workable.
--
Best regards,
Basil Peace
From | Date | Subject | |
---|---|---|---|
Next Message | mnl.post | 2013-08-04 18:15:43 | BUG #8363: checksum verification fails with StackBuilder |
Previous Message | kd_sargent | 2013-08-04 09:03:47 | BUG #8362: postres webserver |