Re: libpq async duplicate error results

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: libpq async duplicate error results
Дата
Msg-id 2889550.1651847333@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: libpq async duplicate error results  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
Ответы Re: libpq async duplicate error results  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes:
> I took another look at this.  The output from the test program at the 
> beginning of the thread is now (master branch):
> ...
> command = SELECT 'after';
> PQsendQuery() error: FATAL:  terminating connection due to administrator 
> command
> server closed the connection unexpectedly
>     This probably means the server terminated abnormally
>     before or while processing the request.
> no connection to the server

> It appears the "after" query is getting the error message from the 
> previous cycle somehow.

What is happening is that this bit in PQsendQueryStart is deciding
not to clear the message buffer because conn->cmd_queue_head isn't
NULL:

    /*
     * If this is the beginning of a query cycle, reset the error state.
     * However, in pipeline mode with something already queued, the error
     * buffer belongs to that command and we shouldn't clear it.
     */
    if (newQuery && conn->cmd_queue_head == NULL)
        pqClearConnErrorState(conn);

So apparently the fault is with the pipelined-query logic.  I'm
not sure what cleanup step is missing though.

            regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: BufferAlloc: don't take two simultaneous locks
Следующее
От: Erik Rijkers
Дата:
Сообщение: gcc 12.1.0 warning