On Mon, Oct 10, 2016 at 1:39 PM, Ernst-Georg Schmid
<ernst.georg.sch...@googlemail.com> wrote:
> Hello all,
>
> I'd like to inspect the content of tuples as they are sent during the
> execution of a query in order to react to their values.

The correct answer will depend upon the purpose of this inspection.
You may write a function, which can be invoked through a query
wrapping the original query OR you may add a new planner code (check
custom scans) which does the inspection. These are many ways to do
this with different degrees of invasive-ness. They may or may not
suite your purpose.

>
> I guess I could do it with a FDW, but that's a bit clumsy so I took a
> look at the hooks but have two questions:
>
> 1.) Would ExecutorRun_hook be the correct place to implement such an
> 'tuple inspector'?
> 2.) If yes, how? As far as I understand the source code, I would have
> to provide my own implementation based on standard_ExecutorRun and
> replace the ExecutePlan function with my own one that takes a look at
> each 'slot' like so
>
> if (estate->es_junkFilter != NULL)
>  1589             slot = ExecFilterJunk(estate->es_junkFilter, slot);
>  1590
>
> Tuple inspection here
>
>  1591         /*
>  1592          * If we are supposed to send the tuple somewhere, do so. (In
>  1593          * practice, this is probably always the case at this point.)
>  1594          */
>  1595         if (sendTuples)
>  1596         {
>
> If there is a better way, please advise. I'm really a newbie to this.

Either of those would do, if you want to write change the executor.

-- 
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to