mirror of
https://github.com/postgres/postgres.git
synced 2026-03-28 13:23:48 -04:00
Under some circumstances, concurrent MERGE operations could lead to inconsistent results, that varied according the plan chosen. This was caused by a lack of rowmarks on the source relation, which meant that EvalPlanQual rechecking was not guaranteed to return the same source tuples when re-running the join query. Fix by ensuring that preprocess_rowmarks() sets up PlanRowMarks for all non-target relations used in MERGE, in the same way that it does for UPDATE and DELETE. Per bug #18103. Back-patch to v15, where MERGE was introduced. Dean Rasheed, reviewed by Richard Guo. Discussion: https://postgr.es/m/18103-c4386baab8e355e3%40postgresql.org |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| bitmapset.h | ||
| execnodes.h | ||
| extensible.h | ||
| lockoptions.h | ||
| makefuncs.h | ||
| memnodes.h | ||
| meson.build | ||
| miscnodes.h | ||
| multibitmapset.h | ||
| nodeFuncs.h | ||
| nodes.h | ||
| params.h | ||
| parsenodes.h | ||
| pathnodes.h | ||
| pg_list.h | ||
| plannodes.h | ||
| primnodes.h | ||
| print.h | ||
| queryjumble.h | ||
| readfuncs.h | ||
| replnodes.h | ||
| subscripting.h | ||
| supportnodes.h | ||
| tidbitmap.h | ||
| value.h | ||