Implement pipeline mode in libpq
authorAlvaro Herrera <[email protected]>
Mon, 15 Mar 2021 21:13:42 +0000 (18:13 -0300)
committerAlvaro Herrera <[email protected]>
Mon, 15 Mar 2021 21:13:42 +0000 (18:13 -0300)
commitacb7e4eb6b1c614c68a62fb3a6a5bba1af0a2659
treeff5dccb6a8372d0373a442841d8df4333a234eaa
parent146cb3889c3ccb3fce198fe7464a1296a9e107c3
Implement pipeline mode in libpq

Pipeline mode in libpq lets an application avoid the Sync messages in
the FE/BE protocol that are implicit in the old libpq API after each
query.  The application can then insert Sync at its leisure with a new
libpq function PQpipelineSync.  This can lead to substantial reductions
in query latency.

Co-authored-by: Craig Ringer <[email protected]>
Co-authored-by: Matthieu Garrigues <[email protected]>
Co-authored-by: Álvaro Herrera <[email protected]>
Reviewed-by: Andres Freund <[email protected]>
Reviewed-by: Aya Iwata <[email protected]>
Reviewed-by: Daniel Vérité <[email protected]>
Reviewed-by: David G. Johnston <[email protected]>
Reviewed-by: Justin Pryzby <[email protected]>
Reviewed-by: Kirk Jamison <[email protected]>
Reviewed-by: Michael Paquier <[email protected]>
Reviewed-by: Nikhil Sontakke <[email protected]>
Reviewed-by: Vaishnavi Prabakaran <[email protected]>
Reviewed-by: Zhihong Yu <[email protected]>
Discussion: https://postgr.es/m/CAMsr+YFUjJytRyV4J-16bEoiZyH=4nj+sQ7JP9ajwz=B4dMMZw@mail.gmail.com
Discussion: https://postgr.es/m/CAJkzx4T5E-2cQe3dtv2R78dYFvz+in8PY7A8MArvLhs_pg75gg@mail.gmail.com
18 files changed:
doc/src/sgml/libpq.sgml
doc/src/sgml/lobj.sgml
src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
src/bin/pg_amcheck/pg_amcheck.c
src/interfaces/libpq/exports.txt
src/interfaces/libpq/fe-connect.c
src/interfaces/libpq/fe-exec.c
src/interfaces/libpq/fe-protocol3.c
src/interfaces/libpq/libpq-fe.h
src/interfaces/libpq/libpq-int.h
src/test/modules/Makefile
src/test/modules/libpq_pipeline/.gitignore [new file with mode: 0644]
src/test/modules/libpq_pipeline/Makefile [new file with mode: 0644]
src/test/modules/libpq_pipeline/README [new file with mode: 0644]
src/test/modules/libpq_pipeline/libpq_pipeline.c [new file with mode: 0644]
src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl [new file with mode: 0644]
src/tools/msvc/Mkvcbuild.pm
src/tools/pgindent/typedefs.list