From 3feb6ace7cfe8edbf6db702de06dc9295f307a8e Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Thu, 7 Nov 2019 11:13:31 +0900 Subject: [PATCH] Check after errors of SPI_execute() in xml.c SPI gets used to build a list of relation OIDs for XML object generation, and one code path building a list uses SPI_execute() without looking at errors it produces. So fix that. Author: Mark Dilger Reviewed-by: Michael Paquier, Pavel Stehule Discussion: https://postgr.es/m/17d30445-4862-7917-170f-84328dcd292d@gmail.com --- src/backend/utils/adt/xml.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 3a493dd6bf7..3bc17164312 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -2461,8 +2461,12 @@ query_to_oid_list(const char *query) { uint64 i; List *list = NIL; + int spi_result; - SPI_execute(query, true, 0); + spi_result = SPI_execute(query, true, 0); + if (spi_result != SPI_OK_SELECT) + elog(ERROR, "SPI_execute returned %s for %s", + SPI_result_code_string(spi_result), query); for (i = 0; i < SPI_processed; i++) {