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

Attachment: 0001-Add-missing-type-conversion-functions-for-PL-Python.patch
Description: Binary data

Reply via email to