Compatible defaults for LEAD/LAG
Vik Fearing <vik@postgresfriends.org>
From: Vik Fearing <vik@postgresfriends.org>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-05-31T17:20:10Z
Lists: pgsql-hackers
Attachments
- lead_lag_compatible_default.diff (text/x-patch) patch
I noticed that the PostgreSQL entry in a pan-database feature matrix by
Modern SQL was not reflecting the reality of our features.[1]
It turns out that test case used by the author produced an error which
the tool took to mean the feature was not implemented. I don't have the
actual test, but here is a simulation of it:
postgres=# SELECT LAG(n, 1, -99) OVER (ORDER BY n)
postgres-# FROM (VALUES (1.1), (2.2), (3.3)) AS v (n)
postgres-# ORDER BY n;
ERROR: function lag(numeric, integer, integer) does not exist
LINE 1: SELECT LAG(n, 1, -99) OVER (ORDER BY n)
^
HINT: No function matches the given name and argument types. You
might need to add explicit type casts.
Attached is a patch that fixes this issue using the new anycompatible
pseudotype. I am hoping this can be slipped into 13 even though it
requires a catversion bump after BETA1.
I looked for other functions with a similar issue but didn't find any.
[1] https://twitter.com/pg_xocolatl/status/1266694496194093057
--
Vik Fearing
Commits
-
Declare assorted array functions using anycompatible not anyelement.
- 9e38c2bb5093 14.0 landed
-
Declare lead() and lag() using anycompatible not anyelement.
- 5c292e6b9043 14.0 landed