On 12/27/16 9:10 PM, Craig Ringer wrote:
> On 28 December 2016 at 09:58, Jim Nasby <Jim.Nasby@bluetreble.com> wrote:
>
>> I've looked at this some more, and ITSM that the only way to do this without
>> some major surgery is to create a new type of Destination specifically for
>> SPI that allows for the execution of an arbitrary C function for each tuple
>> to be sent.
>
> That sounds a lot more sensible than the prior proposals. Callback driven.
Here's what I've got right now. I haven't bothered with
SPI_execute_callback() yet, and there's some missing sanity checks.
I'm not sure if the changes to CreateDestReceiver() are warranted or
necessary, though it would at least give you sane defaults. My
incomplete code that would make use of this currently does
CallbackState callback;
memcpy(callback.pub, CreateDestReceiver(DestSPICallback),
sizeof(DestReceiver));callback.pub.receiveSlot = PLy_CSreceive;callback.pub.rStartup = PLy_CSStartup;
--
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Experts in Analytics, Data Architecture and PostgreSQL
Data in Trouble? Get it in Treble! http://BlueTreble.com
855-TREBLE2 (855-873-2532)