| From: | Richard Guo <guofenglinux(at)gmail(dot)com> |
|---|---|
| To: | Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Unprocessed SubLink from whole-row join alias expansion |
| Date: | 2026-09-18 00:51:37 |
| Message-ID: | CAMbWs49PgeNFhQTZ2gSzwatF0_LXyegMPGt++jSfxUN7NZuQ5Q@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Further fuzzing with Claude on the join alias found this bug. The
following queries fail in various ways on master and all supported
branches:
create table t (a int, b int);
select 1 from ((select (select 1) as x) s cross join t) j
where (select 1 where j is null) is null;
ERROR: cannot handle unplanned sub-select
select 1 from ((select (select 1) as x) s cross join t) j
where (1, 1) in (select (j is null)::int, count(*) from t);
TRAP: failed Assert("!IsA(node, SubLink)"), File: "prepagg.c"
select 1 from ((select (select 1) as x) s cross join t) j
where exists (select 1 from t tablesample system ((j is null)::int * 100));
ERROR: unrecognized node type: 22
Once subquery s is flattened, the joinaliasvars entry for j.x is no
longer a Var but the SubLink (select 1), so expanding a reference to j
inside a sub-select inserts a SubLink into that sub-select.
But flatten_join_alias_vars_mutator fails to notice this and thus does
not set the sub-select's hasSubLinks flag. So preprocess_expression
skips SS_process_sublinks, and the SubLink survives into code that
can't cope with one.
The fix is to make the same checkExprHasSubLink() test in the
whole-row path. See attached.
- Richard
| Attachment | Content-Type | Size |
|---|---|---|
| v1-0001-Set-hasSubLinks-when-expanding-a-whole-row-join-a.patch | application/octet-stream | 4.2 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | shihao zhong | 2026-09-18 00:52:39 | Re: REPACK (CONCURRENTLY) decoding worker is canceled by lock_timeout |
| Previous Message | Masahiko Sawada | 2026-09-18 00:42:23 | Re: Add a hook for handling logical decoding messages on subscribers. |