plpythonu and return void

Started by Adrian Klaverover 20 years ago3 messagesgeneral
Jump to latest
#1Adrian Klaver
adrian.klaver@aklaver.com

I recently migrated a database from Postgres 7.4.1 to Postgres 8.03. The only
problem I have run into is that a plpythonu function that returns void will
not run under 8.03. The error message states that a plpython function cannot
return void. I got around it by having it return text and not actually
returning anything. I have searched for an explanation and can't seem to
locate one. Obviously I have missed something I just don't know what? Any
suggestions would be appreciated.
--
Adrian Klaver
aklaver@comcast.net

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Adrian Klaver (#1)
Re: plpythonu and return void

Adrian Klaver <aklaver@comcast.net> writes:

I recently migrated a database from Postgres 7.4.1 to Postgres 8.03. The only
problem I have run into is that a plpythonu function that returns void will
not run under 8.03. The error message states that a plpython function cannot
return void. I got around it by having it return text and not actually
returning anything. I have searched for an explanation and can't seem to
locate one.

The explanation is doubtless here:

2004-09-19 19:38 tgl

* src/pl/plpython/plpython.c: Add defenses against plpython
functions being declared to take or return pseudotypes. Not sure
why I neglected to add these checks at the same time I added them
to the other PLs, but it seems I did.

It's certainly possible to weaken this test to allow "void" again,
but shouldn't there be corresponding changes elsewhere to ensure that
the behavior is actually sensible?

regards, tom lane

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Tom Lane (#2)
Re: plpythonu and return void

On Monday 08 August 2005 08:02 pm, Tom Lane wrote:

Adrian Klaver <aklaver@comcast.net> writes:

I recently migrated a database from Postgres 7.4.1 to Postgres 8.03. The
only problem I have run into is that a plpythonu function that returns
void will not run under 8.03. The error message states that a plpython
function cannot return void. I got around it by having it return text and
not actually returning anything. I have searched for an explanation and
can't seem to locate one.

The explanation is doubtless here:

2004-09-19 19:38 tgl

* src/pl/plpython/plpython.c: Add defenses against plpython
functions being declared to take or return pseudotypes. Not sure
why I neglected to add these checks at the same time I added them
to the other PLs, but it seems I did.

It's certainly possible to weaken this test to allow "void" again,
but shouldn't there be corresponding changes elsewhere to ensure that
the behavior is actually sensible?

regards, tom lane

Thanks for the explanation. One of these days I will remember that the source
is my friend.
--
Adrian Klaver
aklaver@comcast.net