Access root->simple_rte_array instead of Query->rtable for 2 more cases.

Started by Andy Fanalmost 5 years ago2 messageshackers
Jump to latest
#1Andy Fan
zhihui.fan1213@gmail.com

When I am understanding the relationship between Query->rtable and
root->simple_rte_array, I'd like to assume that Query->rtable should be
never used
when root->simple_rte_array is ready. I mainly checked two places,
make_one_rel and
create_plan with the below hacks.

{
List *l = root->parse->rtable;
root->parse->rtable = NIL;
make_one_rel.. or create_plan_recurse..
root->parse->rtable = l;
}

Then I found adjust_appendrel_attrs_mutator and infer_arbiter_indexes still
use it. The attached patch fixed it by replacing the rt_fetch with
planner_rt_fetch,
all the tests passed.

--
Best Regards
Andy Fan (https://www.aliyun.com/)

Attachments:

v1-0001-Use-planner_rt_fetch-instead-of-rt_fetch-when-roo.patchapplication/octet-stream; name=v1-0001-Use-planner_rt_fetch-instead-of-rt_fetch-when-roo.patchDownload+3-4
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andy Fan (#1)
Re: Access root->simple_rte_array instead of Query->rtable for 2 more cases.

Andy Fan <zhihui.fan1213@gmail.com> writes:

When I am understanding the relationship between Query->rtable and
root->simple_rte_array, I'd like to assume that Query->rtable should be
never used
when root->simple_rte_array is ready.

TBH, now that Lists are really arrays, there's basically no performance
advantage to be gained by fooling with this. I've considered ripping
out simple_rte_array, but haven't felt that the code churn would be
worth it.

regards, tom lane