I am sorry for the delay, here is the latest re-based patch.
my colleague Neha Sharma, reported one regression with the patch, where
explain output for the Sort node under GatherMerge was always showing
cost as zero:
explain analyze select '' AS "xxx" from pgbench_accounts where filler like '%foo%' order by aid;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------
Gather Merge (cost=47169.81..70839.91 rows=197688 width=36) (actual time=406.297..653.572 rows=200000 loops=1)
Workers Planned: 4
Workers Launched: 4
-> Sort (cost=0.00..0.00 rows=0 width=0) (actual time=368.945..391.124 rows=40000 loops=5)
Sort Key: aid
Sort Method: quicksort Memory: 3423kB
-> Parallel Seq Scan on pgbench_accounts (cost=0.00..42316.60 rows=49422 width=36) (actual time=296.612..338.873 rows=40000 loops=5)
Filter: (filler ~~ '%foo%'::text)
Rows Removed by Filter: 360000
Planning time: 0.184 ms
Execution time: 734.963 ms
This patch also fix that issue.