On Fri, Apr 24, 2020 at 2:42 PM Andy Fan <zhihui.fan1...@gmail.com> wrote:
>>
>>
>> > 3.  I added the material path in a very hacked way, the if check  just to 
>> > make
>> > sure it take effect on my test statement only.  If you want to test this 
>> > patch locally,
>> > you need to change the oid for your case.
>> >
>> > +       if (linitial_node(RangeTblEntry, root->parse->rtable)->relid == 
>> > 25634)
>> > +               best_path = (Path *) create_material_path(final_rel, 
>> > best_path);
>>
>> Can we just directly add the material path on top of the best path?  I
>> mean there are possibilities that we might not get any benefit of the
>> material because there is no duplicate from the outer node but we are
>> paying the cost of materialization right?   The correct idea would be
>> that we should select this based on the cost comparison.  Basically,
>> we can consider how many duplicates we have from the outer table
>> variable no?
>
>
> Thanks for interesting of it. Of course we can't add the material path on 
> best path,
> that's why I say it is a  very hacked way.  and say "how to cost this 
> strategy is
> challenge "  (the part you striped when you reply the email).

Right, I see that now.  Thanks for pointing it out.

   But we have to
> test a path first (it must  be helpful on some case at least) and the result 
> is correct,
> then we think about how to cost it. The purpose of my writing is about the 
> first step
> and see what people think about it.

Ok

>
> As for how to cost it,  I'm agreed with your suggestion,  but we may need more
> than that,  like.  (1, 2, 1) and (1, 1, 2) is same for your suggestion, but 
> they
> are not  different in this path.

Valid point.

-- 
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com


Reply via email to