Обсуждение: marking tuples
Hi,
I am implementing a new algorithm inside postgresql for a side research project. I am just wondering if anyone may give me few hints about the following problem:
Consider the following plan:
NewAggregate
->NewJoin
->NewJoin
->NewJoin
->SeqScan
->SeqScan
->SeqScan
->SeqScan
In my algorithm,
each NewJoin node may "mark" its ps_ResultTupleSlot with either red/green. I need that mark to flow in the pipeline so that i can collect them at the top aggregate.
Any hints about how to keep such mark is greatly appreciated.
Thanks a lot,
Ehab
I am implementing a new algorithm inside postgresql for a side research project. I am just wondering if anyone may give me few hints about the following problem:
Consider the following plan:
NewAggregate
->NewJoin
->NewJoin
->NewJoin
->SeqScan
->SeqScan
->SeqScan
->SeqScan
In my algorithm,
each NewJoin node may "mark" its ps_ResultTupleSlot with either red/green. I need that mark to flow in the pipeline so that i can collect them at the top aggregate.
Any hints about how to keep such mark is greatly appreciated.
Thanks a lot,
Ehab
You keep typing, we keep giving. Download Messenger and join the i’m Initiative now. Join in!
"Ehab Galal" <ehabgalal123@hotmail.com> writes: > In my algorithm, each NewJoin node may "mark" its ps_ResultTupleSlot with > either red/green. I need that mark to flow in the pipeline so that i can > collect them at the top aggregate. How will you tell about the marks from different NewJoins? I think you'll have to "project" the tuple and add a resjunk column to indicate that flag. I don't know how you'll identify that column from other such flag columns other NewJoin nodes have added. You could look at the setop code in prepunion.c like intersection to see other plans which add flag columns. In those cases though they are used by the direct parent of the node which added it, so the planner can just mark a field in the parent indicating which column it should look at for the flag. -- Gregory Stark EnterpriseDB http://www.enterprisedb.com Ask me about EnterpriseDB's On-Demand Production Tuning
Thanks a lot for your reply. I really appreciate it.
I will have only one mark field created for the bottommost NewJoin. The other nodes will just use the same mark field. I just want to make sure that flag propagate up the pipeline.
Thanks again,I will have only one mark field created for the bottommost NewJoin. The other nodes will just use the same mark field. I just want to make sure that flag propagate up the pipeline.
ehab
> To: ehabgalal123@hotmail.com
> CC: pgsql-sql@postgresql.org
> Subject: Re: marking tuples
> From: stark@enterprisedb.com
> Date: Wed, 5 Dec 2007 08:44:15 +0000
>
> "Ehab Galal" <ehabgalal123@hotmail.com> writes:
>
> > In my algorithm, each NewJoin node may "mark" its ps_ResultTupleSlot with
> > either red/green. I need that mark to flow in the pipeline so that i can
> > collect them at the top aggregate.
>
> How will you tell about the marks from different NewJoins?
>
> I think you'll have to "project" the tuple and add a resjunk column to
> indicate that flag. I don't know how you'll identify that column from other
> such flag columns other NewJoin nodes have added.
>
> You could look at the setop code in prepunion.c like intersection to see other
> plans which add flag columns. In those cases though they are used by the
> direct parent of the node which added it, so the planner can just mark a field
> in the parent indicating which column it should look at for the flag.
>
> --
> Gregory Stark
> EnterpriseDB http://www.enterprisedb.com
> Ask me about EnterpriseDB's On-Demand Production Tuning
Connect and share in new ways with Windows Live. Connect now!