I am kind of new into python, and I have been trying to port some plperl functions into plpython, but I've run up into a problem.
Imagine the following plpython code.
CREATE OR REPLACE FUNCTION greet (how text) RETURNS SETOF greeting AS $$ rv = plpy.execute("SELECT 1")
for article in range(10) : for other in range(10) : if (other == 1) : continue yield([article,other]) $$LANGUAGE plpythonu;
When executing the function on the psql console I always the this error.
netbo-dev=# select * from greet('Nuno'); ERROR: error fetching next item from iterator
If I comment the first line:
rv = plpy.execute("select 1")
Turning the code into this:
CREATE OR REPLACE FUNCTION greet (how text) RETURNS SETOF greeting AS $$ #rv = plpy.execute("SELECT 1")
for article in range(10) : for other in range(10) : if (other == 1) : continue yield([article,other]) $$LANGUAGE plpythonu;
The code works:
netbo-dev=# select * from greet('Nuno'); how | who -----+----- 0 | 0 0 | 2 0 | 3 0 | 4 0 | 5 0 | 6
I know the example code is not the best, but What I was tryng to do is execute some SQL then process it and return it back.
I also know I could just generate the rows and place them in a list and then return it, but I would like to know why the yield function does'nt work in this case.