Question about non-blocking mode in libpq

From: Yugo NAGATA <nagata(at)sraoss(dot)co(dot)jp>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Question about non-blocking mode in libpq
Date: 2021-07-13 02:59:49
Message-ID: 20210713115949.702986955f8ccf23fa81073c@sraoss.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello,

During reading the documentation of libpq [1] , I found the following
description:

In the nonblocking state, calls to PQsendQuery, PQputline, PQputnbytes,
PQputCopyData, and PQendcopy will not block but instead return an error
if they need to be called again.

[1] https://www.postgresql.org/docs/devel/libpq-async.html

However, looking into the code, PQsendQuery seems not to return an error
in non-bloking mode even if unable to send all data. In such cases,
pqSendSome will return 1 but it doesn't cause an error. Moreover,
we would not need to call PQsendQuery again. Indead, we need to call
PQflush until it returns 0, as documented with regard to PQflush.

Do we need to fix the description of PQsetnonblocking?

Regards,
Yugo Nagata

--
Yugo NAGATA <nagata(at)sraoss(dot)co(dot)jp>

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David Rowley 2021-07-13 03:15:24 Re: [PATCH] Use optimized single-datum tuplesort in ExecSort
Previous Message Jeff Davis 2021-07-13 02:22:14 Re: Synchronous commit behavior during network outage