> > > -------- > > > static Query * > > > rewriteRuleAction(Query *parsetree, > > > ... > > > if (sub_action_ptr) > > > + { > > > *sub_action_ptr = sub_action; > > > + rule_action->hasModifyingCTE |= > > parsetree->hasModifyingCTE; > > > + } > > > -------- > > > > > > And the Basic test passed. > > > What do you think ? > > > > That is very close to what I was going to suggest, which is this: > > > > diff --git a/src/backend/rewrite/rewriteHandler.c > > b/src/backend/rewrite/rewriteHandler.c > > index 0672f497c6..3c4417af98 100644 > > --- a/src/backend/rewrite/rewriteHandler.c > > +++ b/src/backend/rewrite/rewriteHandler.c > > @@ -631,6 +631,8 @@ rewriteRuleAction(Query *parsetree, > > checkExprHasSubLink((Node *) > > rule_action->returningList); > > } > > > > + rule_action->hasModifyingCTE |= parsetree->hasModifyingCTE; > > + > > return rule_action; > > } > > > if (parsetree->cteList != NIL && sub_action->commandType != > CMD_UTILITY) > { > ... > sub_action->cteList = list_concat(sub_action->cteList, > } > > Is is possible when sub_action is CMD_UTILITY ? > In this case CTE will be copied to the newone, should we set the set the > flag in this case ?
Sorry , a typo in my word. In this case CTE will not be copied to the newone, should we set the set the flag in this case ? Best regards, houzj