Hi,
On 03/17/2017 05:23 PM, Peter Eisentraut wrote:
> I'm struggling to find a good way to share code between
> bt_page_items(text, int4) and bt_page_items(bytea).
>
> If we do it via the SQL route, as I had suggested, it makes the
> extension non-relocatable, and it will also create a bit of a mess
> during upgrades.
>
> If doing it in C, it will be a bit tricky to pass the SRF context
> around. There is no "DirectFunctionCall within SRF context", AFAICT.
>
Not sure what it has to do with DirectFunctionCall? You want to call the
bytea variant from the existing one? Wouldn't it be easier to simply
define a static function with the shared parts, and pass around the
fctx/fcinfo? Not quite pretty, but should work.
>
> I'm half tempted to just rip out the (text, int4) variants.
>
Perhaps. I see pageinspect as a tool for ad-hoc investigations, and I
can't really imagine it being hard-wired into something.
>
> In any case, I think we should add bytea variants to all the btree
> functions, not just the bt_page_items one.
>
I agree, but I think we need to find a way to share the code between the
text/bytea variants. Unless we rip the text ones out, obviously.
Thanks for the work on the patch, BTW.
regards
--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services