pgsql: Prevent query-lifespan memory leakage of SP-GiST traversalvalue
От | Tom Lane |
---|---|
Тема | pgsql: Prevent query-lifespan memory leakage of SP-GiST traversalvalue |
Дата | |
Msg-id | E1ey8R3-0008Sh-9u@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Prevent query-lifespan memory leakage of SP-GiST traversal values. The original coding of the SP-GiST scan traversalValue feature (commit ccd6eb49a) arranged for traversal values to be stored in the query's main executor context. That's fine if there's only one index scan per query, but if there are many, we have a memory leak as successive scans create new traversal values. Fix it by creating a separate memory context for traversal values, which we can reset during spgrescan(). Back-patch to 9.6 where this code was introduced. In principle, adding the traversalCxt field to SpGistScanOpaqueData creates an ABI break in the back branches. But I (tgl) have little sympathy for extensions including spgist_private.h, so I'm not very worried about that. Alternatively we could stick the new field at the end of the struct in back branches, but that has its own downsides. Anton Dignös, reviewed by Alexander Kuzmenkov Discussion: https://postgr.es/m/CALNdv1jb6y2Te-m8xHLxLX12RsBmZJ1f4hESX7J0HjgyOhA9eA@mail.gmail.com Branch ------ REL9_6_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/57ef2da434e235f6295bf49a065fce3da398fd8b Modified Files -------------- src/backend/access/spgist/spgscan.c | 9 ++++++++- src/include/access/spgist_private.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-)
В списке pgsql-committers по дате отправления: