| From: | Henson Choi <assam258(at)gmail(dot)com> |
|---|---|
| To: | Tatsuo Ishii <ishii(at)postgresql(dot)org>, jian(dot)universality(at)gmail(dot)com |
| Cc: | pgsql-hackers(at)postgresql(dot)org, zsolt(dot)parragi(at)percona(dot)com, sjjang112233(at)gmail(dot)com, 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, li(dot)evan(dot)chao(at)gmail(dot)com |
| Subject: | Re: Row pattern recognition |
| Date: | 2026-06-28 10:12:22 |
| Message-ID: | CAAAe_zCd+gzpYSsC04NsKyCJeneChVZCaBP540d0p2=c3abvvw@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi Tatsuo,
Two things before the next review round. Both aim at the same thing:
keeping the v50 diff to what RPR genuinely changes, so the next round
reviews RPR on its own merits rather than hunks that drifted in or touch
pre-existing window code.
First, the cfbot is currently red on v49 across all platforms. The cause
is not RPR: master recently reworded the RESPECT/IGNORE NULLS error, which
left rpr_base's expected output stale, so the regression diff fails "make
check" everywhere. That is exactly the one-line fix you already agreed to
fold in; I have posted it here as v50-0021 so the series builds green on
its own. This one is required regardless.
Second, while going over the v49 diff against master I found several hunks
that are either unrelated to RPR or that touch pre-existing window code. I
split them into small patches so each can be decided on its own.
Patch list
----------
Every patch in this reply. revert-* removes the change from RPR;
optional-* re-applies the same change to master separately.
v50-0021 cfbot build fix (required regardless)
revert-0001 drop unrelated include and stray blank line (required
cleanup)
revert-0004 restore doc paragraph line wrapping (required
cleanup)
revert-0002 #2 drop the mark-position diagnostic (your call)
optional-0001 #2 land the diagnostic on master
revert-0003 #3 restore the funcname guard (your call)
optional-0002 #3 land the guard removal on master
revert-0005 #5 drop the EXCLUDE TIES tests (your call)
optional-0003 #5 land the tests on master
Required cleanups
-----------------
These only remove changes that crept in but have nothing to do with RPR.
I split them out so you can fold them into the feature patch; being
required cleanups, I recommend applying them:
revert-0001 drop an unrelated "nodes/plannodes.h" include and a stray
blank line in eval_windowaggregates()
revert-0004 restore the line wrapping of two pre-existing doc
paragraphs (advanced.sgml, ref/select.sgml)
Your call
---------
The next three touch pre-existing window code, so I would rather you decide
where each belongs. I prepared the building blocks so you can pick any
option:
#2 window_gettupleslot() mark-position elog -- add row positions
v49 extended the can't-happen error with the pos/markpos values.
(a) keep it in RPR -> apply neither patch
(b) drop it -> apply revert-0002
(c) land it on master separately -> revert-0002 + optional-0001
A tiny additive diagnostic; I lean to (c), but (a) is fine too.
#3 funcname guard in WinCheckAndInitializeNullTreatment()
v49 removed the "could not get function name" guard as unreachable.
(a) keep the removal in RPR -> apply neither patch
(b) restore the guard, drop it -> apply revert-0003
(c) remove it on master separately -> revert-0003 + optional-0002
The branch is genuinely unreachable, but it drops a deliberate guard
in pre-existing code, so of the three this one most warrants caution.
Preserving the guard via (b) or (c) looks safest, but I will leave the
decision to you.
#5 EXCLUDE TIES window-frame test coverage
Two nth_value/last_value cases. The accounting they exercise already
exists on master and the tests pass without RPR, so they are not RPR
coverage.
(a) keep them in RPR -> apply neither patch
(b) land them on master separately -> revert-0005 + optional-0003
I lean to (b).
For my part, I will carry out the deeper review against v50 with v50-0021
and revert-0001/0004 applied, plus whichever of the above you choose, as
the minimal green baseline.
Best,
Henson
| Attachment | Content-Type | Size |
|---|---|---|
| v50-0021-adjust-rpr_base-expected-output.patch | application/octet-stream | 1.5 KB |
| revert-0001-remove-incidental-changes.patch | application/octet-stream | 1.2 KB |
| revert-0002-revert-mark-position-elog.patch | application/octet-stream | 1.1 KB |
| revert-0003-restore-funcname-guard.patch | application/octet-stream | 1.2 KB |
| revert-0004-restore-doc-line-wrapping.patch | application/octet-stream | 2.3 KB |
| revert-0005-remove-exclude-ties-tests.patch | application/octet-stream | 2.9 KB |
| optional-0001-include-row-positions-in-mark-position-error.patch | application/octet-stream | 1.2 KB |
| optional-0002-remove-unreachable-funcname-guard.patch | application/octet-stream | 1.4 KB |
| optional-0003-add-exclude-ties-test-coverage.patch | application/octet-stream | 2.8 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Henson Choi | 2026-06-28 10:22:46 | Re: Row pattern recognition |
| Previous Message | JoongHyuk Shin | 2026-06-28 10:05:53 | Re: [PATCH] Prevent repeated deadlock-check signals in standby buffer pin waits |