SPI_ERROR_UNCONNECTED in python callback function

Поиск
Список
Период
Сортировка
От Ian Haywood
Тема SPI_ERROR_UNCONNECTED in python callback function
Дата
Msg-id 200906032112.03690.ihaywood@iinet.net.au
обсуждение исходный текст
Ответы Re: SPI_ERROR_UNCONNECTED in python callback function  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general

I am using PL/Python to make queries via SPI. This seems to work when the

query is made directly, but when I pass a function as a callback to an external

module (in this case, python's cheetah templating engine), the function fails thusly:

=# select common.template(8963,1);

ERROR: plpython: function "template" could not create return value

DETAIL: <class 'plpy.SPIError'>: SPI_execute failed: SPI_ERROR_UNCONNECTED

=#

The code is

from Cheetah.Template import Template

import os, tempfile

def sql(x):

return plpy.execute(x)[0] # this is the callback function

def row(t,f,v):

return sql("select * from %s where %s = %s" % (t,f,v))

q = row("common.lu_templates","pk",template)

templ = q["definition"]

result = Template(templ, searchList=[{'row':row,'key':key,'plpy':plpy,'GD':GD,'sql':sql}]) # this template is calling the sql function above.

return result

It seems as soon as execution leaves the main function access to SPI is lost. Is this correct or a bug?

Is there any way to re-enable access to SPI?

Postgresql is 8.3.3, Python 2.5.2

Ian

В списке pgsql-general по дате отправления:

Предыдущее
От: Scott Marlowe
Дата:
Сообщение: Re: Evil Nested Loops
Следующее
От: Geoffrey
Дата:
Сообщение: Re: warm standby with WAL shipping