Hi All, PL/Python already has different type conversion functions to convert PostgreSQL datum to Python object. However, the conversion functions from Python object to PostgreSQL datum only has Boolean, Bytea and String functions.
In this patch, we add rest of Integer and Float related datatype conversion functions and can increase the performance of data conversion greatly especially when returning a large array. We did a quick test about the performance of returning array in PL/Python: The following UDF is used for test: ``` CREATE OR REPLACE FUNCTION pyoutfloat8(num int) RETURNS float8[] AS $$ return [x/3.0 for x in range(num)] $$ LANGUAGE plpythonu; ``` The test command is ``` select count(pyoutfloat8(n)); ``` The count is used for avoid large output, where n is the number of element in returned array, and the size is from 1.5k to15m. Size of Array 1.5k | 15k | 150k | 1.5m | 15m | Origin 2.324ms | 19.834ms | 194.991ms | 1927.28ms | 19982.1ms | With this patch 1.168ms | 3.052ms | 21.888ms | 213.39ms | 2138.5ms | All test for both PG and PL/Python are passed. Thanks very much. -- Regards, Haozhou
0001-Add-missing-type-conversion-functions-for-PL-Python.patch
Description: Binary data