Re: btree_gin and btree_gist for enums

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: emre@hasegeli.com, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2016-11-05T16:12:19Z
Lists: pgsql-hackers

Attachments


On 11/05/2016 11:46 AM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> The real problem here is that enum_cmp_internal assumes that
>> fcinfo->flinfo has been set up, and DirectFunctionCallN doesn't, it sets
>> it to NULL.
>> The patch below cures the problem. I'm not sure if there is a better
>> way. Thoughts?
> That may be a good fix for robustness purposes, but it seems pretty horrid
> from an efficiency standpoint.  Where is this call, and should we be
> modifying it to provide a flinfo?
>
> 			


See attached updated patch that adds enum support to btree_gist and 
btree_gin

I thought of providing an flinfo, but I couldn't see a simple way to do 
it that would provide something much longer lived than the function 
call, in which case it seemed a bit pointless. That's why I asked for 
assistance :-)

cheers

andrew

Commits

  1. Add btree_gin support for enum types

  2. Add btree_gist support for enum types.

  3. Use CallerFInfoFunctionCall with btree_gist for numeric types

  4. Add a direct function call mechanism using the caller's context.

  5. Add support for EUI-64 MAC addresses as macaddr8

  6. Add an Assert that enum_cmp_internal() gets passed an FmgrInfo pointer.