From: | Mark Teper <mark(dot)teper(at)gmail(dot)com> |
---|---|
To: | pgsql-sql(at)lists(dot)postgresql(dot)org |
Subject: | |
Date: | 2019-05-02 17:51:22 |
Message-ID: | CAMwSyGra+i1oL0pKgCv1WeE6GeBNhJJZTJ0bGxLNqJ0SFeEsVw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi,
I'm trying to build some numerical processing algorithms on Postgres Array
data types. Using PL/Python I can get access to the numpy libraries but
the performance is not great. A guess is that there is a lot of overhead
going from Postgres -> Python List -> Numpy and back again.
I'd like to test if that's the issue, and potentially fix by creating a C
extension to convert directly from Postgres Array types to Numpy Array
types. I _think_ I have the C side somewhat working, but I can't get
Postgres to use the transform.
What I have:
---
CREATE FUNCTION arr_to_np(val internal) RETURNS internal LANGUAGE C AS
'MODULE_PATHNAME', 'arr_to_np';
CREATE FUNCTION np_to_arr(val internal) RETURNS real[] LANGUAGE C AS
'MODULE_PATHNAME', 'np_to_arr';
CREATE TRANSFORM FOR real[] LANGUAGE plpythonu (
FROM SQL WITH FUNCTION arr_to_np(internal),
TO SQL WITH FUNCTION np_to_arr(internal)
);
CREATE FUNCTION fn (a integer[]) RETURNS integer
TRANSFORM FOR TYPE real[]
AS $$ return a $$ LANGUAGE plpythonu;
----
The problem is this produces an error that transforms for type "real"
doesn't work. It doesn't seem to allow for transforms on array's as
opposed to underlying types. Is it possible to tell it to apply the
transform to the array?
Thanks,
Mark
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2019-05-03 02:56:14 | Re: plpython transforms vs. arrays |
Previous Message | Mike LAZLO | 2019-04-30 15:27:49 | Re: ERROR: missing FROM-clause entry for table "new" |