postgres.git / summary / log / commit / refs

commit    63a8c689b0d49b8f426c5075d37dd67a63e06f82
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Thu Jul 21 13:52:50 2022 +0000
First released in: 16.0, 14.5, 15.0

    postgres_fdw: Fix bug in checking of return value of PQsendQuery().
    
    When postgres_fdw begins an asynchronous data fetch, it submits FETCH query
    by using PQsendQuery(). If PQsendQuery() fails and returns 0, postgres_fdw
    should report an error. But, previously, postgres_fdw reported an error
    only when the return value is less than 0, though PQsendQuery() never return
    the values other than 0 and 1. Therefore postgres_fdw could not handle
    the failure to send FETCH query in an asynchronous data fetch.
    
    This commit fixes postgres_fdw so that it reports an error
    when PQsendQuery() returns 0.
    
    Back-patch to v14 where asynchronous execution was supported in postgres_fdw.
    
    Author: Fujii Masao
    Reviewed-by: Japin Li, Tom Lane
    Discussion: https://postgr.es/m/b187a7cf-d4e3-5a32-4d01-8383677797f3@oss.nttdata.com


contrib/postgres_fdw/postgres_fdw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index 2ff6debebfb..9b340453b63 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -7078,7 +7078,7 @@ fetch_more_data_begin(AsyncRequest *areq) snprintf(sql, sizeof(sql), "FETCH %d FROM c%u", fsstate->fetch_size, fsstate->cursor_number); - if (PQsendQuery(fsstate->conn, sql) < 0) + if (!PQsendQuery(fsstate->conn, sql)) pgfdw_report_error(ERROR, NULL, fsstate->conn, false, fsstate->query); /* Remember that the request is in process */ [parent: d5623c447c74]