Re: Regression in pipeline mode in libpq 14.5

Daniele Varrazzo <daniele.varrazzo@gmail.com>

From: Daniele Varrazzo <daniele.varrazzo@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: pgsql-bugs <pgsql-bugs@postgresql.org>
Date: 2022-08-24T00:21:31Z
Lists: pgsql-bugs

Attachments

On Mon, 15 Aug 2022 at 17:24, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

> Hmm, it seems (judging only from comparing your two traces) that the
> problem stems from the newly added hack to handle CloseComplete.  I'll
> have a look later in the week.

We worked around the problem in psycopg by dropping every use of
`PQsendQuery()` and only using `PQsendQueryParams()` for internal
queries too. So this is no more a blocker for our 3.1 release. I will
try to perform periodic test runs against Postgres master in order to
catch future breakages before a Postgres release.

Please find attached a smaller test to reproduce the issue. It's
written in Python and uses psycopg master branch, but it only uses
libpq calls so it can be easily converted to C or whatever is useful
to add to your test suite.

In order to run:

```
python3 -m venv venv
source venv/bin/activate
pip install "git+https://github.com/psycopg/psycopg.git@e5079184#subdirectory=psycopg&egg=psycopg"
python test-pipeline-bug.py
```

The script will succeed running with libpq 14.4 and fail running libpq
14.5. The difference in the traces is similar to what was attached
upthread.

Best regards

-- Daniele

Commits

  1. Remove PQsendQuery support in pipeline mode

  2. Stop using PQsendQuery in libpq_pipeline