@@ -498,6 +498,7 @@ spi_response_t *execute_spi_sql_with_args(MemoryContext ctx, const char *sql, in
498498ResourceOwner oldowner = CurrentResourceOwner ;
499499spi_response_t * rv = NULL ;
500500MemoryContext old = CurrentMemoryContext ;
501+ MemoryContext pe ;
501502
502503if (!ctx )ctx = SchedulerWorkerContext ;
503504
@@ -523,7 +524,9 @@ spi_response_t *execute_spi_sql_with_args(MemoryContext ctx, const char *sql, in
523524}
524525PG_CATCH ();
525526{
527+ pe = MemoryContextSwitchTo (ctx );
526528edata = CopyErrorData ();
529+ MemoryContextSwitchTo (pe );
527530if (edata -> message )
528531{
529532rv = __error_spi_resp (ctx ,ret ,edata -> message );
@@ -600,6 +603,7 @@ spi_response_t *execute_spi_params_prepared(MemoryContext ctx, const char *sql,
600603ResourceOwner oldowner = CurrentResourceOwner ;
601604spi_response_t * rv ;
602605MemoryContext old = CurrentMemoryContext ;
606+ MemoryContext pe ;
603607
604608if (!ctx )ctx = SchedulerWorkerContext ;
605609
@@ -637,7 +641,9 @@ spi_response_t *execute_spi_params_prepared(MemoryContext ctx, const char *sql,
637641}
638642PG_CATCH ();
639643{
644+ pe = MemoryContextSwitchTo (ctx );
640645edata = CopyErrorData ();
646+ MemoryContextSwitchTo (pe );
641647if (edata -> message )
642648{
643649rv = __error_spi_resp (ctx ,ret ,edata -> message );