Thread: plpython: fix for improperly handled NULL arguments in prepared plans

plpython: fix for improperly handled NULL arguments in prepared plans

From
Andrew Bosma
Date:
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>

Attachment

Re: plpython: fix for improperly handled NULL arguments in prepared plans

From
Tom Lane
Date:
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

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html

Re: plpython: fix for improperly handled NULL arguments in prepared plans

From
Tom Lane
Date:
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

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html