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: Dean Rasheed <dean.a.rasheed@gmail.com>
Cc: Tender Wang <tndrwang@gmail.com>,
Duncan Sands <duncan.sands@deepbluecap.com>,
pgsql-bugs@lists.postgresql.org
Date: 2025-03-10T17:52:42Z
Lists: pgsql-bugs
Attachments
- generate-correct-vartype-for-whole-row-view-refs.patch (text/x-diff) patch
Dean Rasheed <dean.a.rasheed@gmail.com> writes: > Unfortunately, it looks like this bug pre-dates MERGE WHEN NOT MATCHED > BY SOURCE, and even MERGE itself. All that's needed to trigger it is a > query that causes 2 whole-row Vars to be added, one before and one > after view expansion. That can be made to happen via the rowmarking > mechanism in all supported branches as follows: Ugh, right. So I withdraw my objection to fixing this in makeWholeRowVar: all of the post-rewrite calls have need for this behavior. However, the proposed code change is wrong in detail. The existing places that are checking for this situation are doing tests like (rte->rtekind == RTE_SUBQUERY && OidIsValid(rte->relid))) I don't believe that checking relkind instead is an improvement. > Reading the commit message for 47bb9db7599 suggests that maybe it > would be OK to further back-patch the changes to ApplyRetrieveRule() > to retain relkind and relid on subquery RTEs for this purpose. That > wouldn't affect stored rules, but I haven't looked to see what else it > might affect. Yeah, I think we can likely get away with that. We cannot back-patch the changes that added relid to the outfuncs/readfuncs representation, which means that the RTE's relid won't propagate to parallel workers, but I don't see why they'd need it. We only need that info to get as far as planning. I've not tried though. Draft HEAD patch attached. 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