Hi Hackers,

first time writing to the hackers list, so I hope this is the right place to 
ask. I recently joined Swarm64 and we are building a postgres extension with 
the fdw interface.

I am trying to evaluate sql statements with ExecutorBeing, -Run, -End, -Finish 
calls during ExecForeignInsert. I set up a QueryDesc  and call ExecutorStart 
during BeginForeignModify and store the QueryDesc in the fdwState to call 
ExecutorRun / Rewind on each ExecForeignInsert. On EndForeignModify 
ExecutorFinish and ExecutorEnd are called. The statement is used to generate an 
additional column generated from the value of one ore more present columns, 
e.g. hashing a string.

I am now not really sure if I am abusing the interface and if this is save to 
be used in such a way. I noticed there are hooks for Start, Run, End and Finish 
and I am unsure what requirements this places on my usage.

Initially I tried to keep the started Executor around beyond the lifetime of a 
query and only clean up when the worker process shuts down. This did not end 
well (as in SIGSEGV) as soon as I loaded auto_explain which tried to report on 
the 'slow query' outside of a portal.

Give the comments in execMain.c I am also wondering what cleanup I need to do 
in case the insert fails after ExecutorStart.

Cheers
--
Kai Kratz
Swarm64: https://swarm64.com/

Reply via email to