From: | Oliver Ford <ojford(at)gmail(dot)com> |
---|---|
To: | Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Cc: | tgl(at)sss(dot)pgh(dot)pa(dot)us, vik(at)postgresfriends(dot)org, andrew(at)tao11(dot)riddles(dot)org(dot)uk, david(at)fetter(dot)org, krasiyan(at)gmail(dot)com, Tatsuo Ishii <ishii(at)sraoss(dot)co(dot)jp> |
Subject: | Re: Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options |
Date: | 2023-05-01 11:57:38 |
Message-ID: | CAGMVOdt3CoqizLw8yx=y_4vD_nF+T2CubpAn5TTm5OkD5J80Wg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sun, Apr 23, 2023 at 4:29 AM Tatsuo Ishii <ishii(at)sraoss(dot)co(dot)jp> wrote:
> > Vik Fearing <vik(at)postgresfriends(dot)org> writes:
> >
> >> For me, this is perfectly okay. Keep them at the lowest level of
> >> reservation as possible.
> >
> > Yeah, keep them unreserved if at all possible. Any higher reservation
> > level risks breaking existing applications that might be using these
> > words as column or function names.
>
> Agreed.
> <http://www.sraoss.co.jp>
<http://www.sraoss.co.jp>
Attached is a new version of the code and tests to implement this. There's
now no modification to windowfuncs.c or the catalog,
it's only a bool added to FuncCall which if set to true, ignores nulls. It
adds IGNORE/RESPECT at the Unreserved, As Label level.
The implementation also aims at better performance over previous versions
by not disabling set_mark, and using an array to
track previous non-null positions in SEEK_HEAD or SEEK_CURRENT with Forward
(lead, but not lag). The mark is set if a row
is out of frame and further rows can't be in frame (to ensure it works with
an exclusion clause).
The attached test patch is mostly the same as in the previous patch
set, but it doesn't fail on row_number anymore as the main patch
only rejects aggregate functions. The test patch also adds a test for
EXCLUDE CURRENT ROW and for two contiguous null rows.
I've not yet tested custom window functions with the patch, but I'm happy
to add them to the test patch in v2 if we want to go this way
in implementing this feature.
Attachment | Content-Type | Size |
---|---|---|
0001-initial-window-ignore.patch | application/x-patch | 17.0 KB |
0002-ignore-nulls-tests.patch | application/x-patch | 14.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | John Naylor | 2023-05-01 12:33:52 | Re: [PATCH] Clarify the behavior of the system when approaching XID wraparound |
Previous Message | Masahiko Sawada | 2023-05-01 03:52:06 | Re: Perform streaming logical transactions by background workers and parallel apply |