mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-01 00:41:20 +02:00
Make plpython's spi_execute interface handle NULLs properly.
From Andrew Bosma.
This commit is contained in:
parent
6f49703f0e
commit
f51c7ca182
@ -29,7 +29,7 @@
|
|||||||
* MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
* MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.28 2003/01/31 22:25:13 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.29 2003/01/31 22:35:24 tgl Exp $
|
||||||
*
|
*
|
||||||
*********************************************************************
|
*********************************************************************
|
||||||
*/
|
*/
|
||||||
@ -2181,6 +2181,7 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, int limit)
|
|||||||
int i,
|
int i,
|
||||||
rv;
|
rv;
|
||||||
PLyPlanObject *plan;
|
PLyPlanObject *plan;
|
||||||
|
char *nulls;
|
||||||
|
|
||||||
enter();
|
enter();
|
||||||
|
|
||||||
@ -2242,6 +2243,8 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, int limit)
|
|||||||
|
|
||||||
if (nargs)
|
if (nargs)
|
||||||
{
|
{
|
||||||
|
nulls = palloc((nargs + 1) * sizeof(char));
|
||||||
|
|
||||||
for (i = 0; i < nargs; i++)
|
for (i = 0; i < nargs; i++)
|
||||||
{
|
{
|
||||||
PyObject *elem,
|
PyObject *elem,
|
||||||
@ -2249,6 +2252,8 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, int limit)
|
|||||||
char *sv;
|
char *sv;
|
||||||
|
|
||||||
elem = PySequence_GetItem(list, i);
|
elem = PySequence_GetItem(list, i);
|
||||||
|
if (elem != Py_None)
|
||||||
|
{
|
||||||
so = PyObject_Str(elem);
|
so = PyObject_Str(elem);
|
||||||
sv = PyString_AsString(so);
|
sv = PyString_AsString(so);
|
||||||
|
|
||||||
@ -2262,10 +2267,24 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, int limit)
|
|||||||
|
|
||||||
Py_DECREF(so);
|
Py_DECREF(so);
|
||||||
Py_DECREF(elem);
|
Py_DECREF(elem);
|
||||||
|
|
||||||
|
nulls[i] = ' ';
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Py_DECREF(elem);
|
||||||
|
plan->values[i] = (Datum) 0;
|
||||||
|
nulls[i] = 'n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nulls[i] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nulls = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rv = SPI_execp(plan->plan, plan->values, NULL, limit);
|
rv = SPI_execp(plan->plan, plan->values, nulls, limit);
|
||||||
RESTORE_EXC();
|
RESTORE_EXC();
|
||||||
|
|
||||||
for (i = 0; i < nargs; i++)
|
for (i = 0; i < nargs; i++)
|
||||||
|
Loading…
Reference in New Issue
Block a user