plpython: fix for improperly handled NULL arguments in prepared plans
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 butSELECT 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
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