Wait...I see my issue. Duh! The where clause is applied after the CTE is evaluated
On Fri, Aug 30, 2024 at 7:37 AM Rumpi Gravenstein <rgravens@xxxxxxxxx> wrote:
<snip>that the lag() functions are seeing some rows that don't show up in
the final output.</snip>I'm under the impression that the predicate filter is applied before the analytic is evaluated. Are you suggesting that I have this wrong -- the analytic is evaluated and then the filter is applied?On Thu, Aug 29, 2024 at 8:07 PM Tom Lane <tgl@xxxxxxxxxxxxx> wrote:Rumpi Gravenstein <rgravens@xxxxxxxxx> writes:
> Is this a PostgreSQL bug?
Maybe, but you haven't provided enough information to let anyone else
reproduce the behavior.
Personally I'm suspicious that because your lag() calls are over
partition by p.logical_partition_key, p.txt order by indx
but then you filter by
where logical_partition_key='TEST_DATA' and usage_text='F(T61)(EXPORT)';
that the lag() functions are seeing some rows that don't show up in
the final output. (This'd require that some output rows from "parse"
share txt values but not usage_text values, but that certainly looks
like it's possible.) So IMO you have not actually demonstrated that
there is any bug.
regards, tom lane
--Rumpi Gravenstein
Rumpi Gravenstein