From: | Tatsuo Ishii <ishii(at)sraoss(dot)co(dot)jp> |
---|---|
To: | vik(at)postgresfriends(dot)org |
Cc: | jchampion(at)timescale(dot)com, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Row pattern recognition |
Date: | 2023-07-24 00:22:40 |
Message-ID: | 20230724.092240.1715162767227740389.t-ishii@sranhm.sra.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
>>> What we are talking about here is *defining* a window
>>> frame.
>> Well, we are defining a "reduced" window frame within a (full) window
>> frame. A "reduced" window frame is calculated each time when a window
>> function is called.
>
>
> Why? It should only be recalculated when the current row changes and
> we need a new frame. The reduced window frame *is* the window frame
> for all functions over that window.
We already recalculate a frame each time a row is processed even
without RPR. See ExecWindowAgg.
Also RPR always requires a frame option ROWS BETWEEN CURRENT ROW,
which means the frame head is changed each time current row position
changes.
> I strongly disagree with this. Window function do not need to know
> how the frame is defined, and indeed they should not.
We already break the rule by defining *support functions. See
windowfuncs.c.
> WinGetFuncArgInFrame should answer yes or no and the window function
> just works on that. Otherwise we will get extension (and possibly even
> core) functions that don't handle the frame properly.
Maybe I can move row_is_in_reduced_frame into WinGetFuncArgInFrame
just for convenience.
Best reagards,
--
Tatsuo Ishii
SRA OSS LLC
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp
From | Date | Subject | |
---|---|---|---|
Next Message | Masahiro Ikeda | 2023-07-24 01:04:39 | Re: Support worker_spi to execute the function dynamically. |
Previous Message | Vik Fearing | 2023-07-23 21:29:46 | Re: Row pattern recognition |