Hi all!
I decided to start new thread for this patch for following two reasons.
* It's renamed from "Partial sort" to "Incremental sort" per suggestion by Robert Haas [1]. New name much better characterizes the essence of algorithm.
* I think it's not PoC anymore. Patch received several rounds of review and now it's in the pretty good shape.
Attached revision of patch has following changes.
* According to review [1], two new path and plan nodes are responsible for incremental sort: IncSortPath and IncSort which are inherited from SortPath and Sort correspondingly. That allowed to get rid of set of hacks with minimal code changes.
* According to review [1] and comment [2], previous tuple is stored in standalone tuple slot of SortState rather than just HeapTuple.
* New GUC parameter enable_incsort is introduced to control planner ability to choose incremental sort.
* Test of postgres_fdw with not pushed down cross join is corrected. It appeared that with incremental sort such query is profitable to push down. I changed ORDER BY columns so that index couldn't be used. I think this solution is more elegant than setting enable_incsort = off.
Also patch has set of assorted code and comments improvements.
Links