postgresql/src/tools
Tom Lane 66ec01dc41 Align the data block sizes of pg_dump's various compression modes.
After commit fe8192a95, compress_zstd.c tends to produce data block
sizes around 128K, and we don't really have any control over that
unless we want to overrule ZSTD_CStreamOutSize().  Which seems like
a bad idea.  But let's try to align the other compression modes to
produce block sizes roughly comparable to that, so that pg_restore's
skip-data performance isn't enormously different for different modes.

gzip compression can be brought in line simply by setting
DEFAULT_IO_BUFFER_SIZE = 128K, which this patch does.  That
increases some unrelated buffer sizes, but none of them seem
problematic for modern platforms.

lz4's idea of appropriate block size is highly nonlinear:
if we just increase DEFAULT_IO_BUFFER_SIZE then the output
blocks end up around 200K.  I found that adjusting the slop
factor in LZ4State_compression_init was a not-too-ugly way
of bringing that number roughly into line.

With compress = none you get data blocks the same sizes as the
table rows, which seems potentially problematic for narrow tables.
Introduce a layer of buffering to make that case match the others.

Comments in compress_io.h and 002_pg_dump.pl suggest that if
we increase DEFAULT_IO_BUFFER_SIZE then we need to increase the
amount of data fed through the tests in order to improve coverage.
I've not done that here, leaving it for a separate patch.

Author: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/3515357.1760128017@sss.pgh.pa.us
2025-10-16 12:50:18 -04:00
..
ci Add log_autoanalyze_min_duration 2025-10-15 14:31:12 +02:00
editors Make Emacs perl-mode indent more like perltidy. 2019-01-13 11:32:31 -08:00
ifaddrs Update copyright for 2025 2025-01-01 11:21:55 -05:00
perlcheck Activate perlcritic InputOutput::RequireCheckedSyscalls and fix resulting warnings 2024-03-19 07:09:31 +01:00
pg_bsd_indent Apply more consistent style for command options in TAP tests 2025-03-17 12:42:23 +09:00
pginclude Create a separate file listing backend types 2025-09-26 15:21:49 +02:00
pgindent Align the data block sizes of pg_dump's various compression modes. 2025-10-16 12:50:18 -04:00
add_commit_links.pl add_commit_links.pl: error out if missing major version number 2025-08-30 18:26:08 -04:00
ccsym tools/ccsym: update for modern versions of gcc 2015-01-20 13:02:58 -05:00
check_bison_recursion.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
codelines Fix remaining stray references to CVS. 2010-09-22 19:51:39 -04:00
copyright.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
darwin_sysroot Move darwin sysroot determination into separate file 2022-09-01 16:54:19 -07:00
find_badmacros Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
find_meson meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
find_static Fix trap in a few shell scripts 2022-09-20 18:50:16 +02:00
find_typedef Refer to OS X as "macOS", except for the port name which is still "darwin". 2016-09-25 15:40:57 -04:00
gen_export.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
gen_keywordlist.pl Silence -Wmissing-variable-declarations in headerscheck. 2025-08-29 10:46:13 -04:00
generate_editorconfig.py Add script to keep .editorconfig in sync with .gitattributes 2025-02-01 10:09:45 +01:00
git-external-diff Preserve information on use of git-external-diff 2018-05-24 23:45:31 +09:30
git_changelog Fix whitespace 2025-06-30 11:38:18 +02:00
install_files meson: make install_test_files more generic, rename to install_files 2023-03-23 21:20:18 -07:00
make_ctags Fix make_etags breakage on certain platforms. 2023-06-14 11:02:50 +09:00
make_etags Fix make_etags failure on Mac. 2023-02-15 09:52:42 +09:00
make_mkid Add another pgdefine path check, and a cvs-git change. 2011-08-26 21:52:35 -04:00
mark_pgdllimport.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
msvc_gendef.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
PerfectHash.pm Update copyright for 2025 2025-01-01 11:21:55 -05:00
pgflex pgflex: propagate environment to flex subprocess 2025-06-30 12:24:48 +02:00
pgtest pgtest: fix spacing 2023-08-14 14:03:29 -04:00
rcgen meson: Add windows resource files 2022-10-05 09:56:05 -07:00
RELEASE_CHANGES Doc: add pre-branch task to run src/tools/copyright.pl. 2025-05-18 23:31:44 -04:00
testwrap Fix recently introduced typos 2025-04-11 22:17:12 +02:00
valgrind.supp Suppress complaints about leaks in TS dictionary loading. 2025-08-02 21:59:46 -04:00
version_stamp.pl Stamp HEAD as 19devel. 2025-06-29 22:28:10 -04:00
win32tzlist.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00