| From: | Tatsuo Ishii <ishii(at)postgresql(dot)org> |
|---|---|
| To: | assam258(at)gmail(dot)com |
| Cc: | vik(at)postgresfriends(dot)org, er(at)xs4all(dot)nl, jacob(dot)champion(at)enterprisedb(dot)com, david(dot)g(dot)johnston(at)gmail(dot)com, peter(at)eisentraut(dot)org, pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: Row pattern recognition |
| Date: | 2026-03-04 06:38:22 |
| Message-ID: | 20260304.153822.445473532741409674.ishii@postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi Henson,
> Hi,Tatsuo
>
> While reviewing the RPR test cases, I noticed that a subquery filter
> on RPR window function results silently returns wrong results.
>
> For example, given this query:
>
> SELECT * FROM (
> SELECT id, val, COUNT(*) OVER w as cnt
> FROM rpr_copy
> WINDOW w AS (
> ORDER BY id
> ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
> PATTERN (A B?)
> DEFINE A AS val > 10, B AS val > 20
> )
> ) sub
> WHERE cnt > 0
> ORDER BY id;
>
> This should return 2 rows, but returns 0 rows instead.
Thanks for the report!
> The EXPLAIN plan shows that "cnt > 0" is pushed down into the
> WindowAgg node as a Run Condition:
>
> WindowAgg
> Run Condition: (count(*) OVER w > 0) <-- pushed down
> -> Sort
> -> Seq Scan on rpr_copy
>
> I will investigate the cause and work on a fix.
I think there are two ways to solve the issue:
1) Fix the executor
2) Fix the planner
I tried #1 but I don't know how to fix it. The run condition is
already pushed in the window function. Existing code forces to stop
the aggregate evaluation if the run condition is not
satisfied. Without RPR, the optimization is correct because once the
run condition is not satisfied, there's no chance that the subsequence
rows satisfy the condition. But RPR is used, a partition/frame is
divided into multiple reduced frames and each should be evaluated to
the end of the partition/frame.
So, I tried #2 so that the planner does not push down the run
condition.
Attached is the patch.
Best regards,
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp
| Attachment | Content-Type | Size |
|---|---|---|
| unknown_filename | text/plain | 948 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Zhijie Hou (Fujitsu) | 2026-03-04 06:56:40 | RE: Improve pg_sync_replication_slots() to wait for primary to advance |
| Previous Message | Michael Paquier | 2026-03-04 06:30:58 | Re: BUG: Former primary node might stuck when started as a standby |