On Wed, Dec 30, 2020 at 7:47 PM Bharath Rupireddy <bharath.rupireddyforpostg...@gmail.com> wrote: > > Thanks for the comments. > > How about naming like below more generically and placing them in > parallel.h so that it will also be used for refresh materialized view? > > +typedef enum ParallelInsertTupleCostOpt > +{ > + PINS_SELECT_QUERY = 1 << 0, /* turn on this before planning */ > + /* > + * Turn on this while planning for upper Gather path to ignore parallel > + * tuple cost in cost_gather. > + */ > + PINS_CAN_IGN_TUP_COST = 1 << 1, > + /* Turn on this after the cost is ignored. */ > + PINS_TUP_COST_IGNORED = 1 << 2 > > My plan was to get the main design idea of pushing the dest receiver > to gather reviewed and once agreed, then I thought of making few > functions common and place them in parallel.h and parallel.c so that > they can be used for Parallel Inserts in REFRESH MATERIALIZED VIEW > because the same design idea can be applied there as well.
I think instead of PINS_* we can name PARALLEL_INSERT_* other than that I am fine with the name. > For instance my thoughts are: add the below structures, functions and > other macros to parallel.h and parallel.c: > typedef enum ParallelInsertKind > { > PINS_UNDEF = 0, > PINS_CREATE_TABLE_AS, > PINS_REFRESH_MAT_VIEW > } ParallelInsertKind; > > typedef struct ParallelInsertCTASInfo > { > IntoClause *intoclause; > Oid objectid; > } ParallelInsertCTASInfo; > > typedef struct ParallelInsertRMVInfo > { > Oid objectid; > } ParallelInsertRMVInfo; > > ExecInitParallelPlan(PlanState *planstate, EState *estate, > Bitmapset *sendParams, int nworkers, > - int64 tuples_needed) > + int64 tuples_needed, ParallelInsertKind pinskind, > + void *pinsinfo) > > Change ExecParallelInsertInCTAS to > > +static void > +ExecParallelInsert(GatherState *node) > +{ > > Change SetCTASParallelInsertState to > +void > +SetParallelInsertState(QueryDesc *queryDesc) > > Change IsParallelInsertionAllowedInCTAS to > > +bool > +IsParallelInsertionAllowed(ParallelInsertKind pinskind, IntoClause *into) > +{ > > Thoughts? > I haven’t thought about these structures yet but yeah making them generic will be good. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com