Laurenz Albe wrote: > I had a look at patch 0001 (0002 will follow).
Thanks for reviewing this! I've implemented the suggested doc changes. A patch update will follow with the next part of the review. > > --- a/src/interfaces/libpq/fe-exec.c > > +++ b/src/interfaces/libpq/fe-exec.c > > @@ -41,7 +41,8 @@ char *const pgresStatus[] = { > > "PGRES_COPY_BOTH", > > "PGRES_SINGLE_TUPLE", > > "PGRES_PIPELINE_SYNC", > > - "PGRES_PIPELINE_ABORTED" > > + "PGRES_PIPELINE_ABORTED", > > + "PGRES_TUPLES_CHUNK" > > }; > > I think that PGRES_SINGLE_TUPLE and PGRES_TUPLES_CHUNK should be next to > each other, but that's no big thing. > The same applies to the change in src/interfaces/libpq/libpq-fe.h I assume we can't renumber/reorder existing values, otherwise it would be an ABI break. We can only add new values. > I understand that we need to keep the single-row mode for compatibility > reasons. But I think that under the hood, "single-row mode" should be the > same as "chunk mode with chunk size one". I've implemented it like that at first, and wasn't thrilled with the result. libpq still has to return PGRES_SINGLE_TUPLE in single-row mode and PGRES_TUPLES_CHUNK with chunks of size 1, so the mutualization did not work that well in practice. I also contemplated not creating PGRES_TUPLES_CHUNK and instead using PGRES_SINGLE_TUPLE for N rows, but I found it too ugly. Best regards, -- Daniel Vérité https://postgresql.verite.pro/ Twitter: @DanielVerite