pageinspect: Fix relcache leak in gist_page_items().
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Sun, 17 Jan 2021 22:46:03 +0000 (00:46 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Sun, 17 Jan 2021 22:46:03 +0000 (00:46 +0200)
commit04eb75e783ba49ca2e0e75088d6590b64be8ed4d
tree576a1754957376481d97b820d5c1b6c9d77348fb
parent7db0cd2145f2bce84cac92402e205e4d2b045bf2
pageinspect: Fix relcache leak in gist_page_items().

The gist_page_items() function opened the index relation on first call and
closed it on the last call. But there's no guarantee that the function is
run to completion, leading to a relcache leak and warning at the end of
the transaction. To fix, refactor the function to return all the rows in
one call, as a tuplestore.

Reported-by: Tom Lane
Discussion: http://www.postgresql.org/message-id/234863.1610916631%40sss.pgh.pa.us
contrib/pageinspect/gistfuncs.c