On 18 September 2017 at 20:45, Dilip Kumar <dilipbal...@gmail.com> wrote: > Please find few more comments. > > + * in which they appear in the PartitionDesc. Also, extract the > + * partition key columns of the root partitioned table. Those of the > + * child partitions would be collected during recursive expansion. > */ > + pull_child_partition_columns(&all_part_cols, oldrelation, oldrelation); > expand_partitioned_rtentry(root, rte, rti, oldrelation, oldrc, > lockmode, &root->append_rel_list, > + &all_part_cols, > > pcinfo->all_part_cols is only used in case of update, I think we can > call pull_child_partition_columns > only if rte has updateCols? > > @@ -2029,6 +2034,7 @@ typedef struct PartitionedChildRelInfo > > Index parent_relid; > List *child_rels; > + Bitmapset *all_part_cols; > } PartitionedChildRelInfo; > > I might be missing something, but do we really need to store > all_part_cols inside the > PartitionedChildRelInfo, can't we call pull_child_partition_columns > directly inside > inheritance_planner whenever we realize that RTE has some updateCols > and we want to > check the overlap?
One thing we will have to do extra is : Open and close the partitioned rels again. The idea was that we collect the bitmap *while* we are already expanding through the tree and the rel is open. Will check if this is feasible. > > +extern void partition_walker_init(PartitionWalker *walker, Relation rel); > +extern Relation partition_walker_next(PartitionWalker *walker, > + Relation *parent); > + > > I don't see these functions are used anywhere? > > +typedef struct PartitionWalker > +{ > + List *rels_list; > + ListCell *cur_cell; > +} PartitionWalker; > + > > Same as above Yes, this was left out from the earlier implementation. Will have this removed in the next updated patch. -- Thanks, -Amit Khandekar EnterpriseDB Corporation The Postgres Database Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers