-
- Downloads
In array_agg(), don't create a new context for every group.
Previously, each new array created a new memory context that started out at 8kB. This is incredibly wasteful when there are lots of small groups of just a few elements each. Change initArrayResult() and friends to accept a "subcontext" argument to indicate whether the caller wants the ArrayBuildState allocated in a new subcontext or not. If not, it can no longer be released separately from the rest of the memory context. Fixes bug report by Frank van Vugt on 2013-10-19. Tomas Vondra. Reviewed by Ali Akbar, Tom Lane, and me.
Showing
- src/backend/executor/nodeSubplan.c 2 additions, 2 deletionssrc/backend/executor/nodeSubplan.c
- src/backend/utils/adt/array_userfuncs.c 12 additions, 2 deletionssrc/backend/utils/adt/array_userfuncs.c
- src/backend/utils/adt/arrayfuncs.c 71 additions, 35 deletionssrc/backend/utils/adt/arrayfuncs.c
- src/backend/utils/adt/xml.c 1 addition, 1 deletionsrc/backend/utils/adt/xml.c
- src/include/utils/array.h 5 additions, 3 deletionssrc/include/utils/array.h
- src/pl/plperl/plperl.c 1 addition, 1 deletionsrc/pl/plperl/plperl.c
Loading
Please register or sign in to comment