postgresql/src/backend
Tomas Vondra 0c5fe4ff6b Fix memory leak in Incremental Sort rescans
The Incremental Sort had a couple issues, resulting in leaking memory
during rescans, possibly triggering OOM. The code had a couple of
related flaws:

1. During rescans, the sort states were reset but then also set to NULL
   (despite the comment saying otherwise). ExecIncrementalSort then
   sees NULL and initializes a new sort state, leaking the memory used
   by the old one.

2. Initializing the sort state also automatically rebuilt the info about
   presorted keys, leaking the already initialized info. presorted_keys
   was also unnecessarily reset to NULL.

Patch by James Coleman, based on patches by Laurenz Albe and Tom Lane.
Backpatch to 13, where Incremental Sort was introduced.

Author: James Coleman, Laurenz Albe, Tom Lane
Reported-by: Laurenz Albe, Zu-Ming Jiang
Backpatch-through: 13
Discussion: https://postgr.es/m/b2bd02dff61af15e3526293e2771f874cf2a3be7.camel%40cybertec.at
Discussion: https://postgr.es/m/db03c582-086d-e7cd-d4a1-3bc722f81765%40inf.ethz.ch
2023-07-02 20:04:40 +02:00
..
access nbtree VACUUM: cope with topparent inconsistencies. 2023-06-21 17:41:56 -07:00
backup In basebackup.c, perform end-of-file test after checksum validation. 2023-03-06 10:20:17 -05:00
bootstrap Process session_preload_libraries within InitPostgres's transaction. 2022-07-25 10:27:43 -04:00
catalog Replace last PushOverrideSearchPath() call with set_config_option(). 2023-05-08 06:14:11 -07:00
commands Fix marking of indisvalid for partitioned indexes at creation 2023-06-30 13:54:55 +09:00
executor Fix memory leak in Incremental Sort rescans 2023-07-02 20:04:40 +02:00
foreign Rename SetSingleFuncCall() to InitMaterializedSRF() 2022-10-18 10:22:40 +09:00
jit Fix typos in comments, code and documentation 2023-01-03 16:26:27 +09:00
lib Fix lock assertions in dshash.c. 2022-07-11 16:01:22 +12:00
libpq Fix handling of SCRAM-SHA-256's channel binding with RSA-PSS certificates 2023-02-15 10:12:31 +09:00
main Fix outdated --help message for postgres -f 2022-08-15 13:37:32 +09:00
nodes Remove inappropriate raw_expression_tree_walker() code 2023-06-29 10:35:35 +02:00
optimizer Fix hash join when inner hashkey expressions contain Params. 2023-06-20 17:47:53 -04:00
parser Fix publication syntax error message 2023-05-10 18:26:10 +02:00
partitioning Fix incorrect partition pruning logic for boolean partitioned tables 2023-04-14 16:21:07 +12:00
po Translation updates 2023-05-08 14:29:57 +02:00
port Ensure that the argument of shmdt(2) is declared "void *". 2022-02-15 17:17:28 -05:00
postmaster Fix vacuum_cost_delay check for balance calculation. 2023-04-25 13:54:10 +02:00
regex Avoid character classification in regex escape parsing. 2023-04-21 08:20:17 -07:00
replication Don't repeatedly register cache callbacks in pgoutput plugin. 2023-02-23 15:40:28 -05:00
rewrite Fix typo in comment. 2023-06-16 10:18:58 +09:00
snowball In the Snowball dictionary, don't try to stem excessively-long words. 2022-08-31 10:42:05 -04:00
statistics Remove unnecessary code in dependency_is_compatible_expression(). 2023-03-14 11:10:45 -04:00
storage Fix typo with wait event for SLRU buffer of commit timestamps 2023-05-05 21:25:50 +09:00
tcop Rethink handling of [Prevent|Is]InTransactionBlock in pipeline mode. 2022-12-13 14:23:59 -05:00
tsearch Check for interrupts and stack overflow in TParserGet(). 2023-06-24 17:18:08 -04:00
utils Avoid Assert failure when processing empty statement in aborted xact. 2023-06-21 11:07:11 -04:00
.gitignore Add .gitignore entries for AIX-specific intermediate build artifacts. 2015-07-08 20:44:22 -04:00
common.mk Remove PARTIAL_LINKING build mode. 2018-03-30 17:33:04 -07:00
Makefile Move basebackup code to new directory src/backend/backup 2022-08-10 14:03:09 -04:00
nls.mk Translation updates 2022-11-07 14:04:05 +01:00