Re: Todo: Teach planner to evaluate multiple windows in the optimal order
Ankit Kumar Pandey <itsankitkp@gmail.com>
From: Ankit Kumar Pandey <itsankitkp@gmail.com>
To: David Rowley <dgrowleyml@gmail.com>
Cc: pghackers <pgsql-hackers@lists.postgresql.org>,
Vik Fearing <vik@postgresfriends.org>
Date: 2023-01-08T10:21:35Z
Lists: pgsql-hackers
Attachments
- better_windowclause_sorting_dgr-v3.patch (text/x-patch) patch v3
Hi David, Please find attached patch with addressed issues mentioned before. Things resolved: 1. Correct position of window function from where order by push down can happen is determined, this fixes issue mentioned in case #1. > While writing test cases, I found that optimization do not happen for > case #1 > > (which is prime candidate for such operation) like > > EXPLAIN (COSTS OFF) > SELECT empno, > depname, > min(salary) OVER (PARTITION BY depname ORDER BY empno) depminsalary, > sum(salary) OVER (PARTITION BY depname) depsalary > FROM empsalary > ORDER BY depname, empno, enroll_date 2. Point #2 as in above discussions > a) looks like the best plan to me. What's the point of pushing the > sort below the WindowAgg in this case? The point of this optimisation > is to reduce the number of sorts not to push them as deep into the > plan as possible. We should only be pushing them down when it can > reduce the number of sorts. There's no reduction in the number of > sorts in the above plan. Works as mentioned. All test cases (newly added and existing ones) are green. -- Regards, Ankit Kumar Pandey
Commits
-
Split out tiebreaker comparisons from comparetup_* functions
- c9bfa40914be 17.0 landed
-
Add additional regression tests for select_active_windows
- a14a5832923e 16.0 landed