Imai-san,

Thanks for the review.

On 2019/03/04 18:14, Imai, Yoshikazu wrote:
> I've taken at glance the codes and there are some minor comments about the 
> patch.
> 
> * You changed a usage/arguments of get_relation_info, but why you did it? I 
> made those codes back to the original code and checked it passes make check. 
> So ISTM there are no logical problems with not changing it. Or if you change 
> it, how about also change a usage/arguments of get_relation_info_hook in the 
> same way?
> 
> -get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent,
> -                               RelOptInfo *rel)
> +get_relation_info(PlannerInfo *root, RangeTblEntry *rte, RelOptInfo *rel)
>  {
> +     bool            inhparent = rte->inh;
> -     relation = table_open(relationObjectId, NoLock);
> +     relation = heap_open(rte->relid, NoLock);
>   ...
>       if (get_relation_info_hook)
> -             (*get_relation_info_hook) (root, relationObjectId, inhparent, 
> rel);
> +             (*get_relation_info_hook) (root, rte->relid, rte->inh, rel);
> 
> 
> @@ -217,15 +272,13 @@ build_simple_rel(PlannerInfo *root, int relid, 
> RelOptInfo *parent)
>       /* Check type of rtable entry */
>       switch (rte->rtekind)
>       {
>               case RTE_RELATION:
>                       /* Table --- retrieve statistics from the system 
> catalogs */
> -                     get_relation_info(root, rte->relid, rte->inh, rel);
> +                     get_relation_info(root, rte, rel);
> 
> 
> * You moved the codes of initializing of append rel's partitioned_child_rels 
> in set_append_rel_size() to build_simple_rel(), but is it better to do? I 
> also checked the original code passes make check by doing like above.
> 
> @@ -954,32 +948,6 @@ set_append_rel_size(PlannerInfo *root, RelOptInfo *rel,
>       Assert(IS_SIMPLE_REL(rel));
>  
>       /*
> -      * Initialize partitioned_child_rels to contain this RT index.
> -      *
> -      * Note that during the set_append_rel_pathlist() phase, we will bubble 
> up
> -      * the indexes of partitioned relations that appear down in the tree, so
> -      * that when we've created Paths for all the children, the root
> -      * partitioned table's list will contain all such indexes.
> -      */
> -     if (rte->relkind == RELKIND_PARTITIONED_TABLE)
> -             rel->partitioned_child_rels = list_make1_int(rti);
> 
> @@ -274,55 +327,287 @@ build_simple_rel(PlannerInfo *root, int relid, 
> RelOptInfo *parent)
>                                                                               
> list_length(rte->securityQuals));
>  
>       /*
> -      * If this rel is an appendrel parent, recurse to build "other rel"
> -      * RelOptInfos for its children.  They are "other rels" because they are
> -      * not in the main join tree, but we will need RelOptInfos to plan 
> access
> -      * to them.
> +      * Add the parent to partitioned_child_rels.
> +      *
> +      * Note that during the set_append_rel_pathlist() phase, values of the
> +      * indexes of partitioned relations that appear down in the tree will
> +      * be bubbled up into root parent's list so that when we've created
> +      * Paths for all the children, the root table's list will contain all
> +      * such indexes.
>        */
> -     if (rte->inh)
> +     if (rel->part_scheme)
> +             rel->partitioned_child_rels = list_make1_int(relid);

Both of these changes are not present in the latest patches I posted,
where I also got rid of a lot of unnecessary diffs.

Thanks,
Amit


Reply via email to