]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix intra-query memory leak when a SRF returns zero rows.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 28 Oct 2023 18:04:43 +0000 (14:04 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 28 Oct 2023 18:04:43 +0000 (14:04 -0400)
commit7ab6971c657fdc3b1612d6c4989f886bf997ade6
treeea0bcc8fe5cee265c2d453751042bbf3bb5da6b8
parent64fc5e00542125000f7de649c0f69f16fdb4909f
Fix intra-query memory leak when a SRF returns zero rows.

When looping around after finding that the set-returning function
returned zero rows for the current input tuple, ExecProjectSet
neglected to reset either of the two memory contexts it's
responsible for cleaning out.  Typically this wouldn't cause much
problem, because once the SRF does return at least one row, the
contexts would get reset on the next call.  However, if the SRF
returns no rows for many input tuples in succession, quite a lot
of memory could be transiently consumed.

To fix, make sure we reset both contexts while looping around.

Per bug #18172 from Sergei Kornilov.  Back-patch to all supported
branches.

Discussion: https://postgr.es/m/18172-9b8c5fc1d676ded3@postgresql.org
src/backend/executor/nodeProjectSet.c