[PATCH] Add missing type conversion functions for PL/Python - Mailing list pgsql-hackers

From Haozhou Wang
Subject [PATCH] Add missing type conversion functions for PL/Python
Date
Msg-id CAL_NLpKXMwv2ewZbtvUzujZxMgUq++6TgNTFRnY4+Tcsx7+1GQ@mail.gmail.com
Whole thread Raw
Responses Re: [PATCH] Add missing type conversion functions for PL/Python
List pgsql-hackers
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

pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Wait for parallel workers to attach
Next
From: Kyotaro HORIGUCHI
Date:
Subject: Re: [HACKERS] [PATCH] Improve geometric types