forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitbca39b5
committed
Fix planning of SELECT FOR UPDATE on child table with partial index.
Ordinarily we can omit checking of a WHERE condition that matches a partialindex's condition, when we are using an indexscan on that partial index.However, in SELECT FOR UPDATE we must include the "redundant" filtercondition in the plan so that it gets checked properly in an EvalPlanQualrecheck. The planner got this mostly right, but improperly omitted thefilter condition if the index in question was on an inheritance childtable. In READ COMMITTED mode, this could result in incorrectly returningjust-updated rows that no longer satisfy the filter condition.The cause of the error is using get_parse_rowmark() when get_plan_rowmark()is what should be used during planning. In 9.3 and up, also fix the samemistake in contrib/postgres_fdw. It's currently harmless there (for lackof inheritance support) but wrong is wrong, and the incorrect code mightget copied to someplace where it's more significant.Report and fix by Kyotaro Horiguchi. Back-patch to all supported branches.1 parent21946ac commitbca39b5
1 file changed
+2
-1
lines changedLines changed: 2 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
31 | 31 |
| |
32 | 32 |
| |
33 | 33 |
| |
| 34 | + | |
34 | 35 |
| |
35 | 36 |
| |
36 | 37 |
| |
| |||
1159 | 1160 |
| |
1160 | 1161 |
| |
1161 | 1162 |
| |
1162 |
| - | |
| 1163 | + | |
1163 | 1164 |
| |
1164 | 1165 |
| |
1165 | 1166 |
| |
|
0 commit comments
Comments
(0)