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>
Date: 2023-01-04T12:07:46Z
Lists: pgsql-hackers
On 04/01/23 09:32, David Rowley wrote: > > It looks like that works by accident. I see no mention of this either > in the comments or in [1]. This kind of troubles me because function name /select_active_windows///doesn't tell me if its only job is to reorder window clauses for optimizing sort. From code, I don't see it doing anything else either. > If we don't have one already, then we should likely add a regression > test that ensures that this remains true. Since it does not seem to > be documented in the code anywhere, it seems like something that could > easily be overlooked if we were to ever refactor that code. > I don't see any tests in windows specific to sorting operation (and in what order). I will add those. Also, one thing, consider the following query: explain analyze select row_number() over (order by a,b),count(*) over (order by a) from abcd order by a,b,c; In this case, sorting is done on (a,b) followed by incremental sort on c at final stage. If we do just one sort: a,b,c at first stage then there won't be need to do another sort (incremental one). Now, I am not sure if which one would be faster: sorting (a,b,c) vs sort(a,b) + incremental sort(c) because even though datum sort is fast, there can be n number of combos where we won't be doing that. I might be looking at extreme corner cases though but still wanted to share. -- 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