Re: Attribute of type record has wrong type error with MERGE ... WHEN NOT MATCHED BY SOURCE THEN DELETE
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Tender Wang <tndrwang@gmail.com>
Cc: Dean Rasheed <dean.a.rasheed@gmail.com>,
Duncan Sands <duncan.sands@deepbluecap.com>,
pgsql-bugs@lists.postgresql.org
Date: 2025-03-10T15:00:46Z
Lists: pgsql-bugs
Tender Wang <tndrwang@gmail.com> writes: > When the query has NOT MATCHED BY SOURCE, commit d7d297f84 add "src IS NOT > NULL" join condition. > In this case, the src is view(e.g. subquery), so in makeWholeRowVar(), it > will call below code: > result = makeVar(varno, > InvalidAttrNumber, > RECORDOID, > -1, > InvalidOid, > varlevelsup); > the vartype is RECORDOID, but te reltype of src is not RECORDOID, so > $SUBJECT error reports. Hmm. I tried adjusting the example to make _country_or_region be a materialized view or plain table instead of a view, and those cases did not fail. I wonder why the difference... > I add the below codes to makeWholeRowVar() default branch: > if (rte->relkind == RELKIND_VIEW) > toid = get_rel_type_id(rte->relid); > else > toid = RECORDOID; > It can work. I'm quite uncomfortable with the idea of changing makeWholeRowVar() itself in this way --- the potential blast radius from that seems rather large. A localized fix in transform_MERGE_to_join() might be a wiser answer. regards, tom lane
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Repair commits 317aba70e et al for -DWRITE_READ_PARSE_PLAN_TREES.
- b200180dec98 13.21 landed
- 7713f4592ad0 15.13 landed
- 1a20bc94623e 14.18 landed
-
Build whole-row Vars the same way during parsing and planning.
- f4e7756ef9a4 18.0 landed
- fec43428c966 16.9 landed
- d3a29ae6a60c 14.18 landed
- ca0830e5a27a 17.5 landed
- ae0be2f0bd72 15.13 landed
- 39af32f7883f 13.21 landed
-
Preserve RangeTblEntry.relid when expanding a view RTE.
- 28a7e31d0cec 13.21 landed
- 584f17a9063e 14.18 landed
- 317aba70ef83 15.13 landed
-
Fix incorrect non-strict join recheck in MERGE WHEN NOT MATCHED BY SOURCE.
- d7d297f84496 17.1 cited