postgresql/contrib
Michael Paquier 933848d16d Add missing query ID reporting in extended query protocol
This commit adds query ID reports for two code paths when processing
extended query protocol messages:
- When receiving a bind message, setting it to the first Query retrieved
from a cached cache.
- When receiving an execute message, setting it to the first PlannedStmt
stored in a portal.

An advantage of this method is that this is able to cover all the types
of portals handled in the extended query protocol, particularly these
two when the report done in ExecutorStart() is not enough (neither is an
addition in ExecutorRun(), actually, for the second point):
- Multiple execute messages, with multiple ExecutorRun().
- Portal with execute/fetch messages, like a query with a RETURNING
clause and a fetch size that stores the tuples in a first execute
message going though ExecutorStart() and ExecuteRun(), followed by one
or more execute messages doing only fetches from the tuplestore created
in the first message.  This corresponds to the case where
execute_is_fetch is set, for example.

Note that the query ID reporting done in ExecutorStart() is still
necessary, as an EXECUTE requires it.  Query ID reporting is optimistic
and more calls to pgstat_report_query_id() don't matter as the first
report takes priority except if the report is forced.  The comment in
ExecutorStart() is adjusted to reflect better the reality with the
extended query protocol.

The test added in pg_stat_statements is a courtesy of Robert Haas.  This
uses psql's \bind metacommand, hence this part is backpatched down to
v16.

Reported-by:  Kaido Vaikla, Erik Wienhold
Author: Sami Imseih
Reviewed-by: Jian He, Andrei Lepikhov, Michael Paquier
Discussion: https://postgr.es/m/CA+427g8DiW3aZ6pOpVgkPbqK97ouBdf18VLiHFesea2jUk3XoQ@mail.gmail.com
Discussion: https://postgr.es/m/CA+TgmoZxtnf_jZ=VqBSyaU8hfUkkwoJCJ6ufy4LGpXaunKrjrg@mail.gmail.com
Discussion: https://postgr.es/m/1391613709.939460.1684777418070@office.mailbox.org
Backpatch-through: 14
2024-09-18 09:59:09 +09:00
..
amcheck amcheck: Optimize speed of checking for unique constraint violation 2024-07-28 13:50:57 +03:00
auth_delay Update copyright for 2024 2024-01-03 20:49:05 -05:00
auto_explain Add EXPLAIN (MEMORY) to report planner memory consumption 2024-01-29 17:53:03 +01:00
basebackup_to_shell Update copyright for 2024 2024-01-03 20:49:05 -05:00
basic_archive Add built-in ERROR handling for archive callbacks. 2024-04-02 22:28:11 -05:00
bloom Replace gratuitous memmove() with memcpy() 2024-09-11 15:21:36 +02:00
bool_plperl Update copyright for 2024 2024-01-03 20:49:05 -05:00
btree_gin Update copyright for 2024 2024-01-03 20:49:05 -05:00
btree_gist Add temporal FOREIGN KEY contraints 2024-09-17 11:29:30 +02:00
citext Add argument names to the regexp_XXX functions. 2024-07-25 14:51:46 -04:00
cube Include bison header files into implementation files 2024-08-02 10:25:11 +02:00
dblink Don't bother checking the result of SPI_connect[_ext] anymore. 2024-09-09 12:18:34 -04:00
dict_int Update copyright for 2024 2024-01-03 20:49:05 -05:00
dict_xsyn Update copyright for 2024 2024-01-03 20:49:05 -05:00
earthdistance Update copyright for 2024 2024-01-03 20:49:05 -05:00
file_fdw Treat number of disabled nodes in a path as a separate cost metric. 2024-08-21 10:12:30 -04:00
fuzzystrmatch Update copyright for 2024 2024-01-03 20:49:05 -05:00
hstore Optimize escaping of JSON strings 2024-07-27 23:46:07 +12:00
hstore_plperl Update copyright for 2024 2024-01-03 20:49:05 -05:00
hstore_plpython Update copyright for 2024 2024-01-03 20:49:05 -05:00
intagg Update copyright for 2024 2024-01-03 20:49:05 -05:00
intarray Use new overflow-safe integer comparison functions. 2024-02-16 14:05:36 -06:00
isn Convert some extern variables to static 2024-07-02 07:26:22 +02:00
jsonb_plperl Update copyright for 2024 2024-01-03 20:49:05 -05:00
jsonb_plpython Update copyright for 2024 2024-01-03 20:49:05 -05:00
lo Update copyright for 2024 2024-01-03 20:49:05 -05:00
ltree Add hash support functions and hash opclass for contrib/ltree. 2024-03-21 18:27:49 -04:00
ltree_plpython Update copyright for 2024 2024-01-03 20:49:05 -05:00
oid2name Apply more quoting to GUC names in messages 2024-09-04 13:50:44 +09:00
pageinspect Fix contrib/pageinspect's test for sequences. 2024-09-13 10:16:40 -05:00
passwordcheck Update copyright for 2024 2024-01-03 20:49:05 -05:00
pg_buffercache Add pg_buffercache_evict() function for testing. 2024-04-08 16:23:40 +12:00
pg_freespacemap Update copyright for 2024 2024-01-03 20:49:05 -05:00
pg_prewarm Add block_range_read_stream_cb(), to deduplicate code. 2024-09-03 10:46:20 -07:00
pg_stat_statements Add missing query ID reporting in extended query protocol 2024-09-18 09:59:09 +09:00
pg_surgery Error message capitalisation 2024-01-18 09:35:12 +01:00
pg_trgm Use new overflow-safe integer comparison functions. 2024-02-16 14:05:36 -06:00
pg_visibility Optimize pg_visibility with read streams. 2024-09-10 15:21:33 -07:00
pg_walinspect Assign error codes where missing for user-facing failures 2024-07-04 09:48:40 +09:00
pgcrypto Remove support for OpenSSL older than 1.1.0 2024-09-02 13:51:48 +02:00
pgrowlocks Update copyright for 2024 2024-01-03 20:49:05 -05:00
pgstattuple Reintroduce support for sequences in pgstattuple and pageinspect. 2024-09-12 16:31:29 -05:00
postgres_fdw Make postgres_fdw's query_cancel test less flaky. 2024-08-30 16:47:39 -04:00
seg Include bison header files into implementation files 2024-08-02 10:25:11 +02:00
sepgsql Revise GUC names quoting in messages again 2024-05-17 11:44:26 +02:00
spi Don't bother checking the result of SPI_connect[_ext] anymore. 2024-09-09 12:18:34 -04:00
sslinfo Revert "Add notBefore and notAfter to SSL cert info display" 2024-03-22 22:58:41 +01:00
start-scripts Remove gratuitous references to postmaster program 2023-01-26 10:48:32 +01:00
tablefunc Don't bother checking the result of SPI_connect[_ext] anymore. 2024-09-09 12:18:34 -04:00
tcn Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_decoding Fix typos and grammar in code comments and docs 2024-09-03 14:49:04 +09:00
tsm_system_rows Update copyright for 2024 2024-01-03 20:49:05 -05:00
tsm_system_time Update copyright for 2024 2024-01-03 20:49:05 -05:00
unaccent Add simple codepoint redirections to unaccent.rules. 2024-07-05 15:25:31 +12:00
uuid-ossp Make the order of the header file includes consistent 2024-03-13 15:07:00 +01:00
vacuumlo Apply more quoting to GUC names in messages 2024-09-04 13:50:44 +09:00
xml2 Replace usages of xmlXPathCompile() with xmlXPathCtxtCompile(). 2024-09-15 13:33:09 -04:00
contrib-global.mk
Makefile Remove the adminpack contrib extension 2024-03-04 12:39:22 +01:00
meson.build Remove the adminpack contrib extension 2024-03-04 12:39:22 +01:00
README

The PostgreSQL contrib tree
---------------------------

This subtree contains porting tools, analysis utilities, and plug-in
features that are not part of the core PostgreSQL system, mainly
because they address a limited audience or are too experimental to be
part of the main source tree.  This does not preclude their
usefulness.

User documentation for each module appears in the main SGML
documentation.

When building from the source distribution, these modules are not
built automatically, unless you build the "world" target.  You can
also build and install them all by running "make all" and "make
install" in this directory; or to build and install just one selected
module, do the same in that module's subdirectory.

Some directories supply new user-defined functions, operators, or
types.  To make use of one of these modules, after you have installed
the code you need to register the new SQL objects in the database
system by executing a CREATE EXTENSION command.  In a fresh database,
you can simply do

    CREATE EXTENSION module_name;

See the PostgreSQL documentation for more information about this
procedure.