mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-18 18:44:06 +08:00
Fix leakage of memory context header in find_all_inheritors().
Commit827d6f977
contained the same misunderstanding of hash_create's API as commit090010f2e
. As in5d00b764c
, remove the unnecessary layer of memory context. (This bug is less significant than the other one, since the extra context would be under a relatively short-lived context, but it's still a bug.)
This commit is contained in:
parent
a19ea9c660
commit
ddd243584a
@ -29,9 +29,9 @@
|
||||
#include "storage/lmgr.h"
|
||||
#include "utils/builtins.h"
|
||||
#include "utils/fmgroids.h"
|
||||
#include "utils/memutils.h"
|
||||
#include "utils/syscache.h"
|
||||
#include "utils/tqual.h"
|
||||
#include "utils/memutils.h"
|
||||
|
||||
/*
|
||||
* Entry of a hash table used in find_all_inheritors. See below.
|
||||
@ -169,29 +169,19 @@ find_all_inheritors(Oid parentrelId, LOCKMODE lockmode, List **numparents)
|
||||
/* hash table for O(1) rel_oid -> rel_numparents cell lookup */
|
||||
HTAB *seen_rels;
|
||||
HASHCTL ctl;
|
||||
MemoryContext new_ctx;
|
||||
List *rels_list,
|
||||
*rel_numparents;
|
||||
ListCell *l;
|
||||
|
||||
/*
|
||||
* We need a separate memory context for a hash table. This is because
|
||||
* hash table is used only in this procedure. To free a memory we need to
|
||||
* call hash_destroy which is just a wrapper around MemoryContextDelete.
|
||||
*/
|
||||
new_ctx = AllocSetContextCreate(CurrentMemoryContext,
|
||||
"FindAllInheritorsSeenRelsContext",
|
||||
ALLOCSET_DEFAULT_SIZES);
|
||||
|
||||
memset(&ctl, 0, sizeof(ctl));
|
||||
ctl.keysize = sizeof(Oid);
|
||||
ctl.entrysize = sizeof(SeenRelsEntry);
|
||||
ctl.hcxt = new_ctx;
|
||||
ctl.hcxt = CurrentMemoryContext;
|
||||
|
||||
seen_rels = hash_create(
|
||||
"find_all_inheritors temporary table",
|
||||
32, /* start small and extend */
|
||||
&ctl, HASH_ELEM | HASH_BLOBS | HASH_CONTEXT);
|
||||
seen_rels = hash_create("find_all_inheritors temporary table",
|
||||
32, /* start small and extend */
|
||||
&ctl,
|
||||
HASH_ELEM | HASH_BLOBS | HASH_CONTEXT);
|
||||
|
||||
/*
|
||||
* We build a list starting with the given rel and adding all direct and
|
||||
|
Loading…
Reference in New Issue
Block a user