Re: Pipeline mode and PQpipelineSync() - Mailing list pgsql-hackers

From Boris Kolpackov
Subject Re: Pipeline mode and PQpipelineSync()
Date
Msg-id boris.20210624103805@codesynthesis.com
Whole thread Raw
In response to Re: Pipeline mode and PQpipelineSync()  (Boris Kolpackov <boris@codesynthesis.com>)
Responses Re: Pipeline mode and PQpipelineSync()
Re: Pipeline mode and PQpipelineSync()
List pgsql-hackers
Boris Kolpackov <boris@codesynthesis.com> writes:

> What's strange here is that the first PQgetResult() call (marked with ???)
> returns NULL instead of result for INSERT #1 as in the first call sequence.

I've hit another similar case except now an unexpected NULL result is
returned in the middle of PGRES_PIPELINE_ABORTED result sequence. The
call sequence is as follows:

PQsendQueryPrepared() # INSERT #1
PQflush()
PQsendQueryPrepared() # INSERT #2
PQflush()
...
PQsendQueryPrepared() # INSERT #251 -- insert duplicate PK
PQflush()
...
PQsendQueryPrepared() # INSERT #343
PQflush()
PQconsumeInput()      # At this point select() indicates we can read.
PQgetResult()         # NULL -- unexpected but skipped (see prev. email)
PQgetResult()         # INSERT #1
PQgetResult()         # NULL
PQgetResult()         # INSERT #2
PQgetResult()         # NULL
...
PQgetResult()         # INSERT #251 error result, SQLSTATE 23505
PQgetResult()         # NULL
PQgetResult()         # INSERT #252 PGRES_PIPELINE_ABORTED
PQgetResult()         # NULL
PQgetResult()         # INSERT #253 PGRES_PIPELINE_ABORTED
PQgetResult()         # NULL
...
PQgetResult()         # INSERT #343 NULL (???)

Notice that result #343 corresponds to the last PQsendQueryPrepared()
call made before the socket became readable (it's not always 343 but
around there).

For completeness, the statement in question is:

INSERT INTO pgsql_bulk_object (id, idata, sdata) VALUES ($1, $2, $3)

The table:

CREATE TABLE pgsql_bulk_object (
  id BIGINT NOT NULL PRIMARY KEY,
  idata BIGINT NOT NULL,
  sdata TEXT NOT NULL);

And the data inserted is in the form:

1, 1, "1"
2, 2, "2"
...



pgsql-hackers by date:

Previous
From: Greg Nancarrow
Date:
Subject: Re: Added schema level support for publication.
Next
From: Peter Eisentraut
Date:
Subject: Add tests for UNBOUNDED syntax ambiguity