Re: How to inspect tuples during execution of a plan?

From: Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>
To: Ernst-Georg Schmid <ernst(dot)georg(dot)schmid(at)googlemail(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: How to inspect tuples during execution of a plan?
Date: 2016-10-12 05:24:14
Message-ID: CAFjFpRcFJR9M98ecpJhMRCa1AGhW7ebec=SyHukk8eEfhyvV+w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Oct 10, 2016 at 1:39 PM, Ernst-Georg Schmid
<ernst(dot)georg(dot)schmid(at)googlemail(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Petr Jelinek 2016-10-12 06:21:00 Re: autonomous transactions
Previous Message Mithun Cy 2016-10-12 05:17:43 Re: "Some tests to cover hash_index"