Copy path in Dynamic programming - Mailing list pgsql-hackers

From vamsi krishna
Subject Copy path in Dynamic programming
Date
Msg-id AANLkTil6MtlFm-L6E20V1GM7qEodpomYIxYagNH9oBod@mail.gmail.com
Whole thread Raw
Responses Re: Copy path in Dynamic programming
List pgsql-hackers
Hi everybody
 
I am doing a modification to Dynamic programming algorithm in postgreSQL. I want to re-use a plan of one " joinrels" for another of the same level.
For example,
 
if lev=5 , and let's say there are two combinations setA = {1,2,3,4,5} and set B={6,7,8,9,10}.
 
I want to reuse the plan of {1.2,3,4,5} for {6,7,8,9,10}.
 
But for this I need to create a relation that holds all the paths for {6,7,8,9,10}.
 
I cannot just copy the relation holding join paths from setA. I need to create a new join relations using build_join_rel(). But I cannot do add_paths_to_joinrel() because that is the default path creation procedure. Instead I must be copying the paths of joinrel fo setA.
 
So what I am doing now is :
1) Access the join relation for setA = {1,2,3,4,5}.
 
2) Pathlist = pathlist of joinrel(A).
 
3) foreach path "p" in pathlist of joinrel(A){
                 create new path "new_p" from path "p".
                 left_child(new_p) = recursively copy from left child(p)
                 right_child(new_p) = recursively copy from right child(p). 
                 }
 
 
4)But to do step 3 I need to know how to create pathkeys and I need to do the copy recursively, as I am trying to copy the path tree from top to bottom.
 
Errors I get in doing this:
   ERROR:  variable not found in subplan target lists
 
Please give some insight. And please discuss with me on how to go about doing the path copy.
 
Thanks
Vamsi
 

pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: bitmap indexes - performance
Next
From: Marko Tiikkaja
Date:
Subject: Rewrite, normal execution vs. EXPLAIN ANALYZE