Thread: Adding a new node to the executor

Adding a new node to the executor

From
Varun Kacholia
Date:
Hey guys,I am taking my chances of posting a devel doubt on this list (couldn't find
any other relevant list). I think I have spent too much time on
this and need a fresh pair of eyes to look in it..

So this is my situation:
1. I have added a new field to RangeTblEntry (bool tablesample).

2. I have created a new executor node (this is to do system sampling[Ref: Query sampling thread]). In short, this new
nodegoes over a tableblock by block, skipping some blocks as required. 

3. Have made the appropriate changes to the parser+planner so that the
information about a tablesample is passed from the parser to the executor.

But the RangeTblEntry received by my executor node does
not have the tablesample set, inspite of the fact that I do set it in
parse_relation.c:addRangeTableEntry().

I have made the appropriate changes to copyfuncs.c, but  still in vain..
Any help would be highly appreciated. I can send a diff if someone is
interested.

Thanks
Varun


Re: Adding a new node to the executor

From
Alvaro Herrera
Date:
On Sat, Sep 03, 2005 at 02:43:20AM -0700, Varun Kacholia wrote:

> But the RangeTblEntry received by my executor node does
> not have the tablesample set, inspite of the fact that I do set it in
> parse_relation.c:addRangeTableEntry().
> 
> I have made the appropriate changes to copyfuncs.c, but  still in vain..

Did you change all the other files in src/backend/nodes?  You need to
change not only copyfuncs.c, but equalfuncs, outfuncs and readfuncs as
well.

-- 
Alvaro Herrera -- Valdivia, Chile         Architect, www.EnterpriseDB.com
"El miedo atento y previsor es la madre de la seguridad" (E. Burke)


Re: Adding a new node to the executor

From
Bruce Momjian
Date:
Alvaro Herrera wrote:
> On Sat, Sep 03, 2005 at 02:43:20AM -0700, Varun Kacholia wrote:
> 
> > But the RangeTblEntry received by my executor node does
> > not have the tablesample set, inspite of the fact that I do set it in
> > parse_relation.c:addRangeTableEntry().
> > 
> > I have made the appropriate changes to copyfuncs.c, but  still in vain..
> 
> Did you change all the other files in src/backend/nodes?  You need to
> change not only copyfuncs.c, but equalfuncs, outfuncs and readfuncs as
> well.

Yep.  My suggestion is to pick an existing field in RangeTblEntry and
find all occurances of that, and determine if your new field has to be
added in that place.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073