> On Aug 27, 2025, at 15:26, Chao Li <[email protected]> wrote: > > diff --git a/src/include/parser/parse_node.h b/src/include/parser/parse_node.h > index f7d07c84542..58a4b9df157 100644 > --- a/src/include/parser/parse_node.h > +++ b/src/include/parser/parse_node.h > @@ -361,7 +361,7 @@ extern SubscriptingRef > *transformContainerSubscripts(ParseState *pstate, > > Node *containerBase, > > Oid containerType, > > int32 containerTypMod, > - > List *indirection, > + > List **indirection, > > bool isAssignment); > > Here we change “indirection” from * to **, I guess the reason is to indicate > if the indirection list is fully processed. In case of fully processed, set > it to NULL, then caller gets NULL via **. > > As “indirection” is of type “List *”, can we just set “indirection->length = > 0”? I checked pg_list.h, there is not a function or macro to cleanup a list > (free elements and reset length to 0). There is a “list_free(List *list)”, > but it will free “list” itself as well. Maybe we can add a new function, say > “list_reset(List *list)” or “list_cleanup(List *list)”. This way will keep > the function interface unchanged, and less changes would be involved.
After revisiting the changes, I take back this comment. Given the nature that List are always used in pointer form, my comment would just make things much more complicated. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
