marking tuples

Lists: pgsql-sql
From: Ehab Galal <ehabgalal123(at)hotmail(dot)com>
To: "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org>
Subject: marking tuples
Date: 2007-12-04 22:25:09
Message-ID: BAY138-W31C72CF9118BE1CB6BC00966D0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

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

_________________________________________________________________
You keep typing, we keep giving. Download Messenger and join the i’m Initiative now.
http://im.live.com/messenger/im/home/?source=TAGLM


From: Gregory Stark <stark(at)enterprisedb(dot)com>
To: "Ehab Galal" <ehabgalal123(at)hotmail(dot)com>
Cc: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: marking tuples
Date: 2007-12-05 08:44:15
Message-ID: 87odd55y5c.fsf@oxford.xeocode.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

"Ehab Galal" <ehabgalal123(at)hotmail(dot)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


From: Ehab Galal <ehabgalal123(at)hotmail(dot)com>
To: Gregory Stark <stark(at)enterprisedb(dot)com>
Cc: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: marking tuples
Date: 2007-12-05 13:34:34
Message-ID: BAY138-W30EFA9996F6FC96AF44C95966E0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

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,
ehab

> To: ehabgalal123(at)hotmail(dot)com
> CC: pgsql-sql(at)postgresql(dot)org
> Subject: Re: marking tuples
> From: stark(at)enterprisedb(dot)com
> Date: Wed, 5 Dec 2007 08:44:15 +0000
>
> "Ehab Galal" <ehabgalal123(at)hotmail(dot)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.
http://www.windowslive.com/connect.html?ocid=TXT_TAGLM_Wave2_newways_112007