Re: btree_gin and btree_gist for enums
Andrew Dunstan <andrew.dunstan@2ndquadrant.com>
From: Andrew Dunstan <andrew.dunstan@2ndquadrant.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2017-02-26T20:09:13Z
Lists: pgsql-hackers
On 02/25/2017 01:39 PM, Andrew Dunstan wrote: > > On 02/25/2017 01:34 PM, Tom Lane wrote: >> Andrew Dunstan <andrew.dunstan@2ndquadrant.com> writes: >>> On 02/25/2017 12:04 PM, Tom Lane wrote: >>>> I think it'd be better to leave DirectFunctionCallN alone and just invent >>>> a small number of CallerFInfoFunctionCallN support functions (maybe N=1 >>>> and N=2 would be enough, at least for now). >>> See attached. >> Yeah, I like this better, except that instead of >> >> + * The callee should not look at anything except the fn_mcxt and fn_extra. >> + * Anything else is likely to be bogus. >> >> maybe >> >> + * It's recommended that the callee only use the fn_extra and fn_mcxt >> + * fields, as other fields will typically describe the calling function >> + * not the callee. Conversely, the calling function should not have >> + * used fn_extra, unless its use is known compatible with the callee's. >> >> > > OK, Works for me. Thanks. > This works for the btree_gin case. However, there's a difficulty for btree_gist - in the puicksplit routine the cmp function is passed to qsort() so there is no chance to pass it an flinfo to set up the call to the real comparison routine. Implementing a custom sort routine to work around the problem seems a bridge too far. I can;t think of an alternative off hand. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Add btree_gin support for enum types
- 4ad0f88c443c 10.0 landed
-
Add btree_gist support for enum types.
- f7946a92b689 10.0 landed
-
Use CallerFInfoFunctionCall with btree_gist for numeric types
- 4b1c68d63e86 10.0 landed
-
Add a direct function call mechanism using the caller's context.
- 29bf5016835a 10.0 landed
-
Add support for EUI-64 MAC addresses as macaddr8
- c7a9fa399d55 10.0 cited
-
Add an Assert that enum_cmp_internal() gets passed an FmgrInfo pointer.
- 6d493e1a0135 10.0 landed