On Wed, Feb 8, 2017 at 4:20 AM, Dilip Kumar <dilipbalaut@gmail.com> wrote:
> The new SH_CREATE(MemoryContext ctx, uint32 nelements) don't have any
> option to supply arguments to it. Our callback functions need access
> to TBM.
>
> Is it expected that if the user of SH_CREATE who doesn't want to pass
> a "MemoryContext" then we can pass arguments instead of ctx?
You can store whatever you want in SH_TYPE's private_data member.
SH_ALLOCATE and SH_FREE both get a pointer to the SH_TYPE, so they
have access to that. Hmm, but there's no way to get that set in
SH_CREATE before SH_ALLOCATE is called. Maybe we need to add a
private_data argument to SH_CREATE. execGrouping.c could use that
instead of frobbing private_data directly:
- hashtable->hashtab = tuplehash_create(tablecxt, nbuckets);
- hashtable->hashtab->private_data = hashtable;
+ hashtable->hashtab = tuplehash_create(tablecxt, nbuckets, hashtable);
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company