postgresql/src/test/modules
Alvaro Herrera 61461a300c
libpq: Add encrypted and non-blocking query cancellation routines
The existing PQcancel API uses blocking IO, which makes PQcancel
impossible to use in an event loop based codebase without blocking the
event loop until the call returns.  It also doesn't encrypt the
connection over which the cancel request is sent, even when the original
connection required encryption.

This commit adds a PQcancelConn struct and assorted functions, which
provide a better mechanism of sending cancel requests; in particular all
the encryption used in the original connection are also used in the
cancel connection.  The main entry points are:

- PQcancelCreate creates the PQcancelConn based on the original
  connection (but does not establish an actual connection).
- PQcancelStart can be used to initiate non-blocking cancel requests,
  using encryption if the original connection did so, which must be
  pumped using
- PQcancelPoll.
- PQcancelReset puts a PQcancelConn back in state so that it can be
  reused to send a new cancel request to the same connection.
- PQcancelBlocking is a simpler-to-use blocking API that still uses
  encryption.

Additional functions are
 - PQcancelStatus, mimicks PQstatus;
 - PQcancelSocket, mimicks PQcancelSocket;
 - PQcancelErrorMessage, mimicks PQerrorMessage;
 - PQcancelFinish, mimicks PQfinish.

Author: Jelte Fennema-Nio <postgres@jeltef.nl>
Reviewed-by: Denis Laxalde <denis.laxalde@dalibo.com>
Discussion: https://postgr.es/m/AM5PR83MB0178D3B31CA1B6EC4A8ECC42F7529@AM5PR83MB0178.EURPRD83.prod.outlook.com
2024-03-12 17:32:25 +01:00
..
brin Update copyright for 2024 2024-01-03 20:49:05 -05:00
commit_ts Update copyright for 2024 2024-01-03 20:49:05 -05:00
delay_execution Update copyright for 2024 2024-01-03 20:49:05 -05:00
dummy_index_am Update copyright for 2024 2024-01-03 20:49:05 -05:00
dummy_seclabel Update copyright for 2024 2024-01-03 20:49:05 -05:00
gin Add .gitignore to src/test/modules/gin/ 2024-01-31 15:12:22 +09:00
injection_points injection_points: Add wait and wakeup of processes 2024-03-04 09:19:13 +09:00
ldap_password_func Update copyright for 2024 2024-01-03 20:49:05 -05:00
libpq_pipeline libpq: Add encrypted and non-blocking query cancellation routines 2024-03-12 17:32:25 +01:00
plsample Update copyright for 2024 2024-01-03 20:49:05 -05:00
spgist_name_ops Update copyright for 2024 2024-01-03 20:49:05 -05:00
ssl_passphrase_callback Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_bloomfilter Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_copy_callbacks Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_custom_rmgrs Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_ddl_deparse Support identity columns in partitioned tables 2024-01-16 17:24:52 +01:00
test_dsa Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_dsm_registry Introduce the dynamic shared memory registry. 2024-01-19 14:24:36 -06:00
test_extensions Explicitly list dependent types as extension members in pg_depend. 2024-03-04 14:49:36 -05:00
test_ginpostinglist Fix some typos 2024-01-22 13:55:25 +09:00
test_integerset Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_lfind Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_misc Add copyright notices to a few perl scripts that don't have them 2024-01-05 13:15:50 +00:00
test_oat_hooks Fix search_path to a safe value during maintenance operations. 2024-03-04 17:31:38 -08:00
test_parser Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_pg_dump Apply pg_dump test cleanups to test_pg_dump as well 2024-02-08 21:19:03 +01:00
test_predtest Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_radixtree Revert "Fix link error for test_radixtree module on Windows" 2024-03-08 11:09:15 +07:00
test_rbtree Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_regex Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_resowner Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_rls_hooks Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_shm_mq Update copyright for 2024 2024-01-03 20:49:05 -05:00
test_slru Improve performance of subsystems on top of SLRU 2024-02-28 17:05:31 +01:00
unsafe_tests Update copyright for 2024 2024-01-03 20:49:05 -05:00
worker_spi Update copyright for 2024 2024-01-03 20:49:05 -05:00
xid_wraparound Fix meson installation of xid_wraparound test. 2024-02-08 17:03:59 +09:00
Makefile Add template for adaptive radix tree 2024-03-07 12:40:11 +07:00
README Add an enforcement mechanism for global object names in regression tests. 2019-06-29 11:34:00 -04:00
meson.build Add template for adaptive radix tree 2024-03-07 12:40:11 +07:00

README

Test extensions and libraries
=============================

src/test/modules contains PostgreSQL extensions that are primarily or entirely
intended for testing PostgreSQL and/or to serve as example code. The extensions
here aren't intended to be installed in a production server and aren't suitable
for "real work".

Furthermore, while you can do "make install" and "make installcheck" in
this directory or its children, it is NOT ADVISABLE to do so with a server
containing valuable data.  Some of these tests may have undesirable
side-effects on roles or other global objects within the tested server.
"make installcheck-world" at the top level does not recurse into this
directory.

Most extensions have their own pg_regress tests or isolationtester specs. Some
are also used by tests elsewhere in the tree.

If you're adding new hooks or other functionality exposed as C-level API this
is where to add the tests for it.