On Wed, 2020-02-05 at 11:56 -0800, Jeff Davis wrote: > Regarding the API, I'd like to change it, but I'm running into some > performance challenges when adding a layer of indirection. If I apply > the very simple attached patch, which simply makes a separate > allocation for the tapes array, it seems to slow down sort by ~5%.
I tried a few different approaches to allow a flexible number of tapes without regressing normal Sort performance. I found some odd hacks, but I can't explain why they perform better than the more obvious approach. The LogicalTapeSetExtend() API is a natural evolution of what's already there, so I think I'll stick with that to keep the scope of Hash Aggregation under control. If we improve the API later I'm happy to adapt the HashAgg work to use it -- anything to take more code out of nodeAgg.c! Regards, Jeff Davis