This patch generalizes libpq's existing single-row mode to allow individual partial-result PGresults to contain up to N rows, rather than always one row. This reduces malloc overhead compared to plain single-row mode, and it is very useful for psql's FETCH_COUNT feature, since otherwise we'd have to add code (and cycles) to either merge single-row PGresults into a bigger one or teach psql's results-printing logic to accept arrays of PGresults. To avoid API breakage, PQsetSingleRowMode() remains the same, and we add a new function PQsetChunkedRowsMode() to invoke the more general case. Also, PGresults obtained the old way continue to carry the PGRES_SINGLE_TUPLE status code, while if PQsetChunkedRowsMode() is used then their status code is PGRES_TUPLES_CHUNK. The underlying logic is the same either way, though. Daniel Vérité, reviewed by Laurenz Albe and myself (and whacked around a bit by me, so any remaining bugs are my fault) Discussion: https://postgr.es/m/CAKZiRmxsVTkO928CM+-ADvsMyePmU3L9DQCa9NwqjvLPcEe5QA@mail.gmail.com |
||
---|---|---|
.. | ||
brin | ||
commit_ts | ||
delay_execution | ||
dummy_index_am | ||
dummy_seclabel | ||
gin | ||
injection_points | ||
ldap_password_func | ||
libpq_pipeline | ||
plsample | ||
spgist_name_ops | ||
ssl_passphrase_callback | ||
test_bloomfilter | ||
test_copy_callbacks | ||
test_custom_rmgrs | ||
test_ddl_deparse | ||
test_dsa | ||
test_dsm_registry | ||
test_extensions | ||
test_ginpostinglist | ||
test_integerset | ||
test_json_parser | ||
test_lfind | ||
test_misc | ||
test_oat_hooks | ||
test_parser | ||
test_pg_dump | ||
test_predtest | ||
test_radixtree | ||
test_rbtree | ||
test_regex | ||
test_resowner | ||
test_rls_hooks | ||
test_shm_mq | ||
test_slru | ||
test_tidstore | ||
unsafe_tests | ||
worker_spi | ||
xid_wraparound | ||
Makefile | ||
README | ||
meson.build |
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.