Re: plpython transforms vs. arrays

From: Jiří Fejfar <jurafejfar(at)gmail(dot)com>
To: Mark Teper <mark(dot)teper(at)gmail(dot)com>, pgsql-sql(at)lists(dot)postgresql(dot)org
Subject: Re: plpython transforms vs. arrays
Date: 2019-05-03 04:53:43
Message-ID: 2dbe9d47-2a23-274e-ca46-6896d4635845@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Dear Mark,

I am also looking around to find way how to do effectively (in
parallel?) computations (with potentially large and sometimes sparse)
matrices directly in PostgreSQL. Some time ago I have found this
experimental extension https://github.com/PandaPost/panda_post which
"allow you to represent Python NumPy/Pandas objects in Postgres". There
is also http://madlib.apache.org/ but is seems too much "heavyweight"
for my use-case.

Now I do not have much time to spent with this, but I hope in late
summer it will be better. I am looking forward what will be your
conclusions.

Good luck, Jiří.

On 5/2/19 7:51 PM, Mark Teper wrote:
>
> 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
>

In response to

  • at 2019-05-02 17:51:22 from Mark Teper

Browse pgsql-sql by date

  From Date Subject
Next Message Kirti Adesara 2019-05-04 16:38:07 create role/user management
Previous Message Tom Lane 2019-05-03 02:56:14 Re: plpython transforms vs. arrays