[patch] PL/Python is too lossy with floats

From: Marko Kreen <markokr(at)gmail(dot)com>
To: Postgres Hackers List <pgsql-hackers(at)postgresql(dot)org>
Subject: [patch] PL/Python is too lossy with floats
Date: 2015-03-03 14:32:16
Message-ID: 20150303143216.GA12187@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

PL/Python uses str(v) to convert float data, but is lossy
by design. Only repr(v) is guaranteed to have enough
precision to make floats roundtrip properly:

https://docs.python.org/2/library/functions.html#func-repr
https://docs.python.org/2/library/functions.html#str

Example:

$ python
>>> repr(100100100.654321)
'100100100.654321'
>>> str(100100100.654321)
'100100100.654'

Attached patch uses PyObject_Repr() for float data.

As it's annoying-to-debug problem and the patch is simple,
perhaps it's worth backporting?

--
marko

Attachment Content-Type Size
plpy-float-repr.diff text/x-diff 1.9 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2015-03-03 14:39:03 Re: autogenerated column names + views are a dump hazard
Previous Message Jan de Visser 2015-03-03 14:19:34 Re: Idea: closing the loop for "pg_ctl reload"