@@ -2978,6 +2978,7 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
2978
2978
rv ;
2979
2979
PLyPlanObject * plan ;
2980
2980
volatile MemoryContext oldcontext ;
2981
+ PyObject * ret ;
2981
2982
2982
2983
if (list != NULL )
2983
2984
{
@@ -3014,9 +3015,14 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
3014
3015
oldcontext = CurrentMemoryContext ;
3015
3016
PG_TRY ();
3016
3017
{
3017
- char * nulls = palloc ( nargs * sizeof ( char )) ;
3018
+ char * nulls ;
3018
3019
volatile int j ;
3019
3020
3021
+ if (nargs > 0 )
3022
+ nulls = palloc (nargs * sizeof (char ));
3023
+ else
3024
+ nulls = NULL ;
3025
+
3020
3026
for (j = 0 ; j < nargs ; j ++ )
3021
3027
{
3022
3028
PyObject * elem ;
@@ -3055,8 +3061,10 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
3055
3061
3056
3062
rv = SPI_execute_plan (plan -> plan , plan -> values , nulls ,
3057
3063
PLy_curr_procedure -> fn_readonly , limit );
3064
+ ret = PLy_spi_execute_fetch_result (SPI_tuptable , SPI_processed , rv );
3058
3065
3059
- pfree (nulls );
3066
+ if (nargs > 0 )
3067
+ pfree (nulls );
3060
3068
}
3061
3069
PG_CATCH ();
3062
3070
{
@@ -3099,20 +3107,22 @@ PLy_spi_execute_plan(PyObject *ob, PyObject *list, long limit)
3099
3107
}
3100
3108
}
3101
3109
3102
- return PLy_spi_execute_fetch_result ( SPI_tuptable , SPI_processed , rv ) ;
3110
+ return ret ;
3103
3111
}
3104
3112
3105
3113
static PyObject *
3106
3114
PLy_spi_execute_query (char * query , long limit )
3107
3115
{
3108
3116
int rv ;
3109
3117
volatile MemoryContext oldcontext ;
3118
+ PyObject * ret ;
3110
3119
3111
3120
oldcontext = CurrentMemoryContext ;
3112
3121
PG_TRY ();
3113
3122
{
3114
3123
pg_verifymbstr (query , strlen (query ), false);
3115
3124
rv = SPI_execute (query , PLy_curr_procedure -> fn_readonly , limit );
3125
+ ret = PLy_spi_execute_fetch_result (SPI_tuptable , SPI_processed , rv );
3116
3126
}
3117
3127
PG_CATCH ();
3118
3128
{
@@ -3138,7 +3148,7 @@ PLy_spi_execute_query(char *query, long limit)
3138
3148
return NULL ;
3139
3149
}
3140
3150
3141
- return PLy_spi_execute_fetch_result ( SPI_tuptable , SPI_processed , rv ) ;
3151
+ return ret ;
3142
3152
}
3143
3153
3144
3154
static PyObject *
0 commit comments