A rather hackish POC for alternative implementation of WITH TIES
Andrew Gierth <andrew@tao11.riddles.org.uk>
From: Andrew Gierth <andrew@tao11.riddles.org.uk>
To: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>,
Surafel Temesgen <surafel3000@gmail.com>,
Tomas Vondra <tomas.vondra@2ndquadrant.com>
Date: 2019-11-29T05:39:57Z
Lists: pgsql-hackers
Attachments
- with_ties_window.patch (text/x-patch) patch
This patch is a rather hacky implementation of the basic idea for implementing FETCH ... WITH TIES, and potentially also PERCENT, by using a window function expression to compute a stopping point. Large chunks of this (the parser/ruleutils changes, docs, tests) are taken from Surafel Temesgen's patch. The difference is that the executor change in my version is minimal: Limit allows a boolean column in the input to signal the point at which to stop. The planner inserts a WindowAgg node to compute the necessary condition using the rank() function. The way this is done in the planner isn't (IMO) the best and should probably be improved; in particular it currently misses some possible optimizations (most notably constant-folding of the offset+limit subexpression). I also haven't tested it properly to see whether I broke anything, though it does pass regression. -- Andrew (irc:RhodiumToad)
Commits
-
Support FETCH FIRST WITH TIES
- 357889eb17bb 13.0 landed