@ -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