- Notifications
You must be signed in to change notification settings - Fork5
Commitd487afb
committed
Fix PlanRowMark/ExecRowMark structures to handle inheritance correctly.
In an inherited UPDATE/DELETE, each target table has its own subplan,because it might have a column set different from other targets. Thismeans that the resjunk columns we add to support EvalPlanQual might beat different physical column numbers in each subplan. The EvalPlanQualrewrite I did for 9.0 failed to account for this, resulting in possiblemisbehavior or even crashes during concurrent updates to the same row,as seen in a recent report from Gordon Shannon. Revise the data structureso that we track resjunk column numbers separately for each subplan.I also chose to move responsibility for identifying the physical columnnumbers back to executor startup, instead of assuming that numbers derivedduring preprocess_targetlist would stay valid throughout subsequentmassaging of the plan. That's a bit slower, so we might want to considerundoing it someday; but it would complicate the patch considerably anddidn't seem justifiable in a bug fix that has to be back-patched to 9.0.1 parent7a32ff9 commitd487afb
File tree
12 files changed
+192
-122
lines changed- src
- backend
- executor
- nodes
- optimizer
- plan
- prep
- include
- executor
- nodes
12 files changed
+192
-122
lines changedLines changed: 13 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
207 | 207 |
| |
208 | 208 |
| |
209 | 209 |
| |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
210 | 222 |
| |
211 | 223 |
| |
212 | 224 |
| |
213 |
| - | |
| 225 | + | |
214 | 226 |
| |
215 | 227 |
| |
216 | 228 |
| |
|
Lines changed: 82 additions & 25 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
744 | 744 |
| |
745 | 745 |
| |
746 | 746 |
| |
747 |
| - | |
748 |
| - | |
749 |
| - | |
750 | 747 |
| |
751 | 748 |
| |
752 | 749 |
| |
| |||
1386 | 1383 |
| |
1387 | 1384 |
| |
1388 | 1385 |
| |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
| 1428 | + | |
| 1429 | + | |
| 1430 | + | |
| 1431 | + | |
| 1432 | + | |
| 1433 | + | |
| 1434 | + | |
| 1435 | + | |
| 1436 | + | |
| 1437 | + | |
| 1438 | + | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
1389 | 1451 |
| |
1390 | 1452 |
| |
1391 | 1453 |
| |
| |||
1676 | 1738 |
| |
1677 | 1739 |
| |
1678 | 1740 |
| |
1679 |
| - | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
1680 | 1744 |
| |
1681 | 1745 |
| |
1682 | 1746 |
| |
1683 |
| - | |
| 1747 | + | |
1684 | 1748 |
| |
1685 | 1749 |
| |
1686 | 1750 |
| |
1687 | 1751 |
| |
1688 | 1752 |
| |
1689 | 1753 |
| |
1690 | 1754 |
| |
1691 |
| - | |
| 1755 | + | |
1692 | 1756 |
| |
1693 | 1757 |
| |
1694 | 1758 |
| |
| |||
1698 | 1762 |
| |
1699 | 1763 |
| |
1700 | 1764 |
| |
1701 |
| - | |
| 1765 | + | |
1702 | 1766 |
| |
1703 | 1767 |
| |
1704 | 1768 |
| |
1705 | 1769 |
| |
1706 | 1770 |
| |
1707 |
| - | |
1708 |
| - | |
1709 |
| - | |
1710 |
| - | |
1711 |
| - | |
1712 |
| - | |
1713 |
| - | |
1714 |
| - | |
1715 |
| - | |
1716 |
| - | |
1717 |
| - | |
1718 |
| - | |
1719 |
| - | |
| 1771 | + | |
| 1772 | + | |
1720 | 1773 |
| |
1721 | 1774 |
| |
1722 | 1775 |
| |
| |||
1766 | 1819 |
| |
1767 | 1820 |
| |
1768 | 1821 |
| |
1769 |
| - | |
| 1822 | + | |
1770 | 1823 |
| |
1771 |
| - | |
| 1824 | + | |
| 1825 | + | |
1772 | 1826 |
| |
1773 | 1827 |
| |
1774 | 1828 |
| |
1775 | 1829 |
| |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
1776 | 1833 |
| |
1777 | 1834 |
| |
1778 | 1835 |
| |
| |||
1788 | 1845 |
| |
1789 | 1846 |
| |
1790 | 1847 |
| |
1791 |
| - | |
| 1848 | + | |
1792 | 1849 |
| |
1793 | 1850 |
| |
1794 | 1851 |
| |
| |||
1804 | 1861 |
| |
1805 | 1862 |
| |
1806 | 1863 |
| |
1807 |
| - | |
| 1864 | + | |
1808 | 1865 |
| |
1809 | 1866 |
| |
1810 | 1867 |
| |
| |||
1829 | 1886 |
| |
1830 | 1887 |
| |
1831 | 1888 |
| |
1832 |
| - | |
| 1889 | + | |
1833 | 1890 |
| |
1834 | 1891 |
| |
1835 | 1892 |
| |
|
Lines changed: 26 additions & 25 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
58 | 58 |
| |
59 | 59 |
| |
60 | 60 |
| |
61 |
| - | |
| 61 | + | |
62 | 62 |
| |
63 | 63 |
| |
64 |
| - | |
| 64 | + | |
65 | 65 |
| |
66 |
| - | |
| 66 | + | |
| 67 | + | |
67 | 68 |
| |
68 | 69 |
| |
69 | 70 |
| |
| |||
84 | 85 |
| |
85 | 86 |
| |
86 | 87 |
| |
87 |
| - | |
| 88 | + | |
88 | 89 |
| |
89 | 90 |
| |
90 | 91 |
| |
| |||
101 | 102 |
| |
102 | 103 |
| |
103 | 104 |
| |
104 |
| - | |
| 105 | + | |
105 | 106 |
| |
106 | 107 |
| |
107 | 108 |
| |
| |||
189 | 190 |
| |
190 | 191 |
| |
191 | 192 |
| |
192 |
| - | |
| 193 | + | |
193 | 194 |
| |
194 |
| - | |
| 195 | + | |
| 196 | + | |
195 | 197 |
| |
196 | 198 |
| |
197 | 199 |
| |
| |||
251 | 253 |
| |
252 | 254 |
| |
253 | 255 |
| |
| 256 | + | |
254 | 257 |
| |
255 | 258 |
| |
256 | 259 |
| |
| |||
262 | 265 |
| |
263 | 266 |
| |
264 | 267 |
| |
265 |
| - | |
266 | 268 |
| |
267 | 269 |
| |
268 | 270 |
| |
| |||
288 | 290 |
| |
289 | 291 |
| |
290 | 292 |
| |
291 |
| - | |
292 |
| - | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
293 | 296 |
| |
294 |
| - | |
| 297 | + | |
| 298 | + | |
295 | 299 |
| |
296 | 300 |
| |
297 | 301 |
| |
298 |
| - | |
299 |
| - | |
| 302 | + | |
| 303 | + | |
300 | 304 |
| |
301 | 305 |
| |
302 | 306 |
| |
303 | 307 |
| |
304 | 308 |
| |
305 | 309 |
| |
306 | 310 |
| |
307 |
| - | |
308 |
| - | |
309 |
| - | |
310 |
| - | |
311 |
| - | |
312 |
| - | |
313 |
| - | |
314 |
| - | |
315 |
| - | |
316 |
| - | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
317 | 314 |
| |
318 | 315 |
| |
319 | 316 |
| |
| |||
322 | 319 |
| |
323 | 320 |
| |
324 | 321 |
| |
325 |
| - | |
| 322 | + | |
326 | 323 |
| |
327 |
| - | |
| 324 | + | |
328 | 325 |
| |
329 | 326 |
| |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
330 | 331 |
| |
331 | 332 |
| |
332 | 333 |
| |
|
0 commit comments
Comments
(0)