Re: Free list same_input_transnos in preprocess_aggref

2022-11-06 Thread Zhang Mingli
HI, On Nov 7, 2022, 04:12 +0800, Tom Lane , wrote: > > The NIL lists are of course occupying no storage. The two one-element > lists are absolutely, completely negligible in the context of planning > any nontrivial statement. Even the aggtransinfos list that is the > primary output of preprocess_

Re: Free list same_input_transnos in preprocess_aggref

2022-11-06 Thread Tom Lane
Zhang Mingli writes: > Correction: SaveBytes = Sum results of accumulate_list_size: 24(4+4+8+8), What I did was to stick in elog(LOG, "leaking list of length %d", list_length(same_input_transnos)); at the end of preprocess_aggref. What I see on your five-aggregate example is 2022-11-

Re: Free list same_input_transnos in preprocess_aggref

2022-09-19 Thread Zhang Mingli
Regards, Zhang Mingli On Sep 20, 2022, 00:27 +0800, Zhang Mingli , wrote: > > SaveBytes = Sum results of accumulate_list_size: 32(4+4+8+8), as we have 5 > aggs in sql Correction: SaveBytes = Sum results of accumulate_list_size: 24(4+4+8+8),

Re: Free list same_input_transnos in preprocess_aggref

2022-09-19 Thread Zhang Mingli
Regards, Zhang Mingli On Sep 19, 2022, 23:14 +0800, Tom Lane , wrote: > Very little of the planner bothers with freeing small allocations > like that. I think so too, as said, not sure if it worths. > Can you demonstrate a case where this would actually > make a meaningful difference? Offhand, an

Re: Free list same_input_transnos in preprocess_aggref

2022-09-19 Thread Tom Lane
Zhang Mingli writes: > In preprocess_aggref(), list same_input_transnos is used to track compatible > transnos. > Free it if we don’t need it anymore. Very little of the planner bothers with freeing small allocations like that. Can you demonstrate a case where this would actually make a meaning

Free list same_input_transnos in preprocess_aggref

2022-09-19 Thread Zhang Mingli
Hi, In preprocess_aggref(), list same_input_transnos is used to track compatible transnos. Free it if we don’t need it anymore. ``` /*  * 2. See if this aggregate can share transition state with another  * aggregate that we've initialized already.  */  transno = find_compatible_trans(root, ag