Re: Return SETOF or array from pl/python - Mailing list pgsql-general

From Peter Fein
Subject Re: Return SETOF or array from pl/python
Date
Msg-id 42D7E92D.8080001@pobox.com
Whole thread Raw
In response to Re: Return SETOF or array from pl/python  ("Joshua D. Drake" <jd@commandprompt.com>)
Responses Re: Return SETOF or array from pl/python
List pgsql-general
Joshua D. Drake wrote:
> Peter Fein wrote:
>
>> Is it possible to return a SETOF text or a text[] from pl/python?
>>
>> I've got the following test cases:
>>
>> CREATE OR REPLACE FUNCTION arf()
>> RETURNS text[] LANGUAGE plpythonu AS
>> $$return ["one", "two", "three"]$$;
>>
>> SELECT arf();
>>
>> ERROR:  missing dimension value
>>
>> CREATE OR REPLACE FUNCTION arf2()
>> RETURNS text[] LANGUAGE plpythonu AS
>> $$return '{"one", "two", "three"}'$$;
>>
>> SELECT arf2();
>>
>>        arf2
>> -----------------
>>  {one,two,three}
>> (1 row)
>>
>> CREATE OR REPLACE FUNCTION srf()
>> RETURNS SETOF text LANGUAGE plpythonu AS
>> $$return ["one", "two", "three"]$$;
>>
>> SELECT * FROM srf();
>>
>>             srf
>> -------------------------
>>  ['one', 'two', 'three']
>> (1 row)
>>
>> SELECT srf();
>> Never returns.
>
>
> I am not an everyday python programmer but I am pretty sure that you are
> trying to return a list in arf(). You can't return a list you have to
> return the array type which is why arf2 works.

Ok.  How does one convert a python list to a PGSql array then?  Is there
a better way to do it than what I did in arf2?

> The reasons srf works is because you are just returning text in general
> regardless that it is formatting to a list.

How does one return a set then?  I want as my output:

SELECT * FROM srf();

             srf
 -------------------------
  'one'
  'two'
  'three'
 (3 rows)

--
Peter Fein                 pfein@pobox.com                 773-575-0694

Basically, if you're not a utopianist, you're a schmuck. -J. Feldman

pgsql-general by date:

Previous
From: "Joshua D. Drake"
Date:
Subject: Re: Return SETOF or array from pl/python
Next
From: Matt Miller
Date:
Subject: Re: CVS - psql segfault