| From: | Claudio Freire <klaussfreire(at)gmail(dot)com> |
|---|---|
| To: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
| Cc: | Josh Berkus <josh(at)agliodbs(dot)com>, PG Hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: TODO request: multi-dimensional arrays in PL/pythonU |
| Date: | 2013-08-15 13:51:29 |
| Message-ID: | CAGTBQpamt1O1pR0CytY2_P=j0X6PbSNY9iznK-iXOV+AUroKYw@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Wed, Aug 14, 2013 at 9:34 PM, Peter Eisentraut <peter_e(at)gmx(dot)net> wrote:
> On Tue, 2013-08-13 at 14:30 -0700, Josh Berkus wrote:
>> Currently PL/python has 1 dimension hardcoded for returning arrays:
>>
>> create or replace function nparr ()
>> returns float[][]
>> language plpythonu
>> as $f$
>> from numpy import array
>> x = ((1.0,2.0),(3.0,4.0),(5.0,6.0),)
>> return x
>> $f$;
>
> There is no way to know how many dimensions the function expects to get
> back. (float[][] doesn't actually mean anything.) So when converting
> the return value back to SQL, you'd have to guess, is the first element
> convertible to float (how do you know?), if not, does it support the
> sequence protocol, if yes, so let's try to construct a multidimensional
> array. What if the first element is a float but the second is not?
>
> It would be useful to have a solution for that, but it would need to be
> more principled than what I just wrote.
ndarray has a shape attribute. Perhaps they could be supported if they
follow the ndarray-like protocol? (ie: have a shape attribute)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2013-08-15 15:11:48 | Re: psql missing tab completion for extensions |
| Previous Message | Etsuro Fujita | 2013-08-15 10:25:17 | Re: WITH ORDINALITY planner improvements |