Re: BUG #17800: ON CONFLICT DO UPDATE fails to detect incompatible fields that leads to a server crash
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: Michael Paquier <michael@paquier.xyz>, exclusion@gmail.com,
pgsql-bugs@lists.postgresql.org
Date: 2023-02-21T22:34:30Z
Lists: pgsql-bugs
Andres Freund <andres@anarazel.de> writes: > On 2023-02-21 15:55:15 -0500, Tom Lane wrote: >> What I'm wondering about is adding a separate array, and likely a separate >> ParamKind, that would have a less-than-query-wide scope. We might be able >> to get away with having that be plan-node-wide, but making it local to the >> specific compiled expression feels safer and easier to reason about. > What I was trying to suggest is that you could have a dedicated ExprContext > that'd point to such a separate array. That'd allow you to choose the the > separate array on a per-expression-evaluation basis (not even per ExprState). > We already have multiple ExprContexts in some nodes, so this wouldn't break > new ground. I'd really like to *not* need the surrounding plan node to know about this. The tlist push-down behavior shown upthread would result in that requirement propagating to just about every plan node type, certainly every one that allows projection. If we're certain that we'll only need this for MULTIEXPR_SUBLINK and thus only in tlists, we could conceivably put the support into ExecProject and friends rather than directly in the ExprState infrastructure. But that feels like a rather strange compromise, and it'd foreclose using the concept for other short-lifespan Param-like nodes. Another idea I'm toying with is that the expression compiler could allocate some space when it sees a MULTIEXPR_SUBLINK, and then connect up the multiexec Params to that. regards, tom lane
Commits
-
Fix MULTIEXPR_SUBLINK with partitioned target tables, yet again.
- ffec64ba86c4 11.20 landed
- a033f9165c2c 15.3 landed
- 9eaba06027ae 14.8 landed
- 904b171a4655 12.15 landed
- 87f3667ec079 16.0 landed
- 1e199c259947 13.11 landed
-
Repair rare failure of MULTIEXPR_SUBLINK subplans in inherited updates.
- 3f7323cbbdd3 13.9 cited