| From: | PG Bug reporting form <noreply(at)postgresql(dot)org> |
|---|---|
| To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
| Cc: | hackerzheng666(at)gmail(dot)com |
| Subject: | BUG #19631: currtid2() on a view with GROUP BY ctid crashes with XX000 |
| Date: | 2026-08-19 03:51:52 |
| Message-ID: | 19631-b443dd6cd8d4e40b@postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 19631
Logged by: Zheng Hacker
Email address: hackerzheng666(at)gmail(dot)com
PostgreSQL version: 19beta3
Operating system: Linux x86_64
Description:
PostgreSQL version: 20devel (commit bdbf662, 2026-08-19)
OS: Linux x86_64
Calling currtid2() on a view whose SELECT includes ctid in a GROUP BY
hits elog(ERROR) without errcode() in tid.c, producing SQLSTATE XX000.
Reproducer:
CREATE TABLE tid_tab (a int);
INSERT INTO tid_tab VALUES (1);
CREATE VIEW tid_view_with_ctid AS
SELECT ctid, a FROM tid_tab GROUP BY ctid, a;
SELECT currtid2('tid_view_with_ctid'::text, '(0,1)'::tid);
-- ERROR: XX000: currtid cannot handle this view
-- LOCATION: currtid_for_view, tid.c:435
Note: the view has a ctid column (so it passes the tididx check at
line 389 which does have a proper errcode), but the GROUP BY prevents
the code from resolving the TLE to a simple base-table Var, so it
falls through to the elog(ERROR) at line 435 which lacks errcode().
Expected: a proper SQLSTATE (e.g. 0A000 feature_not_supported).
Found by automated SQL fuzzing.
Credit: Zheng Wang, Yanjie Zhao, Yiyang Liu
| From | Date | Subject | |
|---|---|---|---|
| Next Message | PG Bug reporting form | 2026-08-19 03:52:11 | BUG #19632: RULE rewriting crashes with XX000 when RETURNING old/new references a system column |
| Previous Message | PG Bug reporting form | 2026-08-19 03:51:32 | BUG #19630: FOR PORTION OF crashes with XX000 when target range is NULL |