@@ -2978,6 +2978,7 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
29782978rv ;
29792979PLyPlanObject * plan ;
29802980volatile MemoryContext oldcontext ;
2981+ PyObject * ret ;
29812982
29822983if (list != NULL )
29832984{
@@ -3014,9 +3015,14 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
30143015oldcontext = CurrentMemoryContext ;
30153016PG_TRY ();
30163017{
3017- char * nulls = palloc ( nargs * sizeof ( char )) ;
3018+ char * nulls ;
30183019volatile int j ;
30193020
3021+ if (nargs > 0 )
3022+ nulls = palloc (nargs * sizeof (char ));
3023+ else
3024+ nulls = NULL ;
3025+
30203026for (j = 0 ;j < nargs ;j ++ )
30213027{
30223028PyObject * elem ;
@@ -3055,8 +3061,10 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
30553061
30563062rv = SPI_execute_plan (plan -> plan ,plan -> values ,nulls ,
30573063PLy_curr_procedure -> fn_readonly ,limit );
3064+ ret = PLy_spi_execute_fetch_result (SPI_tuptable ,SPI_processed ,rv );
30583065
3059- pfree (nulls );
3066+ if (nargs > 0 )
3067+ pfree (nulls );
30603068}
30613069PG_CATCH ();
30623070{
@@ -3099,20 +3107,22 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
30993107}
31003108}
31013109
3102- return PLy_spi_execute_fetch_result ( SPI_tuptable , SPI_processed , rv ) ;
3110+ return ret ;
31033111}
31043112
31053113static PyObject *
31063114PLy_spi_execute_query (char * query ,long limit )
31073115{
31083116int rv ;
31093117volatile MemoryContext oldcontext ;
3118+ PyObject * ret ;
31103119
31113120oldcontext = CurrentMemoryContext ;
31123121PG_TRY ();
31133122{
31143123pg_verifymbstr (query ,strlen (query ), false);
31153124rv = SPI_execute (query ,PLy_curr_procedure -> fn_readonly ,limit );
3125+ ret = PLy_spi_execute_fetch_result (SPI_tuptable ,SPI_processed ,rv );
31163126}
31173127PG_CATCH ();
31183128{
@@ -3138,7 +3148,7 @@ PLy_spi_execute_query(char *query, long limit)
31383148return NULL ;
31393149}
31403150
3141- return PLy_spi_execute_fetch_result ( SPI_tuptable , SPI_processed , rv ) ;
3151+ return ret ;
31423152}
31433153
31443154static PyObject *