From e2e78acccaa94e7d64dc2bc0b124cfcf23520918 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 1 Sep 2015 19:25:58 -0400 Subject: [PATCH] Document that PL/Python now returns floats using repr() not str(). Commit 1ce7a57ca neglected to update the user-facing documentation, which described the old behavior precisely. --- doc/src/sgml/plpython.sgml | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/doc/src/sgml/plpython.sgml b/doc/src/sgml/plpython.sgml index c838c7b79a..015bbad8dd 100644 --- a/doc/src/sgml/plpython.sgml +++ b/doc/src/sgml/plpython.sgml @@ -288,8 +288,9 @@ $$ LANGUAGE plpythonu; Data Type Mapping - Function arguments are converted from their PostgreSQL type to a - corresponding Python type: + When a PL/Python function is called, its arguments are converted from + their PostgreSQL data type to a corresponding Python type: + @@ -322,7 +323,7 @@ $$ LANGUAGE plpythonu; Otherwise, decimal.Decimal from the standard library will be used. cdecimal is significantly faster - than decimal. In Python 3.3, + than decimal. In Python 3.3 and up, however, cdecimal has been integrated into the standard library under the name decimal, so there is no longer any difference. @@ -356,8 +357,9 @@ $$ LANGUAGE plpythonu; - Function return values are converted to the declared PostgreSQL - return data type as follows: + When a PL/Python function returns, its return value is converted to the + function's declared PostgreSQL return data type as follows: + @@ -373,16 +375,18 @@ $$ LANGUAGE plpythonu; When the PostgreSQL return type is bytea, the return value will be converted to a string (Python 2) or bytes (Python 3) using the respective Python built-ins, with the - result being converted bytea. + result being converted to bytea. - For all other PostgreSQL return types, the returned Python - value is converted to a string using the Python - built-in str, and the result is passed to the - input function of the PostgreSQL data type. + For all other PostgreSQL return types, the return value is converted + to a string using the Python built-in str, and the + result is passed to the input function of the PostgreSQL data type. + (If the Python value is a float, it is converted using + the repr built-in instead of str, to + avoid loss of precision.)