plpython: fix for improperly handled NULL arguments in prepared plans

Started by Andrew Bosmaover 23 years ago2 messagespatches
Jump to latest
#1Andrew Bosma
bosma@epigenomix.com

The attached patch fixes a bug reported by Kevin Jacobs

When we create a function like so:

CREATE OR REPLACE FUNCTION jojo (timestamp) RETURNS varchar AS '
pln = plpy.prepare("UPDATE jtab SET jfld = $1",["timestamp"])
rcs = plpy.execute(pln,[args[0]])
return "YES"' LANGUAGE 'PLPYTHON';

SELECT jojo(now());
works fine but

SELECT jojo(NULL);
errors out with
NOTICE: plpython: in function __plpython_procedure_jojo_49818349:
plpy.Error: Unknown error in PLy_spi_execute_plan
ERROR: Bad timestamp external representation 'None'

NULL arguments were improperly converted to the string 'None' rather than being marked
as NULLs in the third argument to SPI_execp. The patch is against CVS HEAD.

--
Andrew Bosma <bosma@epigenomix.com>

Attachments:

plpython_execp_nulls.difftext/x-patch; charset=ANSI_X3.4-1968; name=plpython_execp_nulls.diffDownload+43-35
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Bosma (#1)
Re: plpython: fix for improperly handled NULL arguments in prepared plans

Andrew Bosma <bosma@epigenomix.com> writes:

NULL arguments were improperly converted to the string 'None' rather than being marked
as NULLs in the third argument to SPI_execp. The patch is against CVS HEAD.

Patch applied to HEAD and 7.3 branch. Thanks!

regards, tom lane