forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitcd87b6f
committed
Fix an old bug in multixact and two-phase commit. Prepared transactions can
be part of multixacts, so allocate a slot for each prepared transaction inthe "oldest member" array in multixact.c. On PREPARE TRANSACTION, transferthe oldest member value from the current backends slot to the prepared xactslot. Also save and recover the value from the 2pc state file.The symptom of the bug was that after a transaction prepared, a shared lockstill held by the prepared transaction was sometimes ignored by othertransactions.Fix back to 8.1, where both 2PC and multixact were introduced.1 parentc194ff2 commitcd87b6f
File tree
7 files changed
+191
-19
lines changed- src
- backend/access/transam
- include/access
7 files changed
+191
-19
lines changedLines changed: 132 additions & 8 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
42 | 42 |
| |
43 | 43 |
| |
44 | 44 |
| |
45 |
| - | |
| 45 | + | |
46 | 46 |
| |
47 | 47 |
| |
48 | 48 |
| |
| |||
51 | 51 |
| |
52 | 52 |
| |
53 | 53 |
| |
| 54 | + | |
| 55 | + | |
54 | 56 |
| |
55 | 57 |
| |
56 | 58 |
| |
| |||
118 | 120 |
| |
119 | 121 |
| |
120 | 122 |
| |
121 |
| - | |
122 |
| - | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
123 | 128 |
| |
124 | 129 |
| |
125 | 130 |
| |
| |||
152 | 157 |
| |
153 | 158 |
| |
154 | 159 |
| |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
155 | 166 |
| |
156 | 167 |
| |
157 | 168 |
| |
| |||
539 | 550 |
| |
540 | 551 |
| |
541 | 552 |
| |
542 |
| - | |
| 553 | + | |
543 | 554 |
| |
544 | 555 |
| |
545 | 556 |
| |
| |||
1275 | 1286 |
| |
1276 | 1287 |
| |
1277 | 1288 |
| |
| 1289 | + | |
| 1290 | + | |
| 1291 | + | |
| 1292 | + | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
1278 | 1402 |
| |
1279 | 1403 |
| |
1280 | 1404 |
| |
| |||
1287 | 1411 |
| |
1288 | 1412 |
| |
1289 | 1413 |
| |
1290 |
| - | |
| 1414 | + | |
1291 | 1415 |
| |
1292 | 1416 |
| |
1293 | 1417 |
| |
| |||
1329 | 1453 |
| |
1330 | 1454 |
| |
1331 | 1455 |
| |
1332 |
| - | |
| 1456 | + | |
1333 | 1457 |
| |
1334 | 1458 |
| |
1335 |
| - | |
| 1459 | + | |
1336 | 1460 |
| |
1337 | 1461 |
| |
1338 | 1462 |
| |
| |||
1702 | 1826 |
| |
1703 | 1827 |
| |
1704 | 1828 |
| |
1705 |
| - | |
| 1829 | + | |
1706 | 1830 |
| |
1707 | 1831 |
| |
1708 | 1832 |
| |
|
Lines changed: 32 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
109 | 109 |
| |
110 | 110 |
| |
111 | 111 |
| |
| 112 | + | |
112 | 113 |
| |
113 | 114 |
| |
114 | 115 |
| |
| |||
200 | 201 |
| |
201 | 202 |
| |
202 | 203 |
| |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
203 | 218 |
| |
204 | 219 |
| |
205 | 220 |
| |
| |||
647 | 662 |
| |
648 | 663 |
| |
649 | 664 |
| |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
650 | 681 |
| |
651 | 682 |
| |
652 | 683 |
| |
|
Lines changed: 8 additions & 4 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
15 | 15 |
| |
16 | 16 |
| |
| 17 | + | |
17 | 18 |
| |
18 | 19 |
| |
19 | 20 |
| |
| |||
27 | 28 |
| |
28 | 29 |
| |
29 | 30 |
| |
30 |
| - | |
| 31 | + | |
| 32 | + | |
31 | 33 |
| |
32 | 34 |
| |
33 | 35 |
| |
| |||
36 | 38 |
| |
37 | 39 |
| |
38 | 40 |
| |
39 |
| - | |
| 41 | + | |
| 42 | + | |
40 | 43 |
| |
41 | 44 |
| |
42 | 45 |
| |
| |||
45 | 48 |
| |
46 | 49 |
| |
47 | 50 |
| |
48 |
| - | |
| 51 | + | |
| 52 | + | |
49 | 53 |
|
Lines changed: 3 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
13 |
| - | |
| 13 | + | |
14 | 14 |
| |
15 | 15 |
| |
16 | 16 |
| |
| |||
1856 | 1856 |
| |
1857 | 1857 |
| |
1858 | 1858 |
| |
| 1859 | + | |
1859 | 1860 |
| |
1860 | 1861 |
| |
1861 | 1862 |
| |
| |||
1909 | 1910 |
| |
1910 | 1911 |
| |
1911 | 1912 |
| |
1912 |
| - | |
| 1913 | + | |
1913 | 1914 |
| |
1914 | 1915 |
| |
1915 | 1916 |
| |
|
Lines changed: 10 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
6 | 6 |
| |
7 | 7 |
| |
8 | 8 |
| |
9 |
| - | |
| 9 | + | |
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
| |||
52 | 52 |
| |
53 | 53 |
| |
54 | 54 |
| |
| 55 | + | |
| 56 | + | |
55 | 57 |
| |
56 | 58 |
| |
57 | 59 |
| |
| |||
67 | 69 |
| |
68 | 70 |
| |
69 | 71 |
| |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
70 | 79 |
| |
71 | 80 |
| |
72 | 81 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
15 | 15 |
| |
16 | 16 |
| |
17 | 17 |
| |
| 18 | + | |
18 | 19 |
| |
19 | 20 |
| |
20 | 21 |
| |
| |||
31 | 32 |
| |
32 | 33 |
| |
33 | 34 |
| |
| 35 | + | |
34 | 36 |
| |
35 | 37 |
| |
36 | 38 |
| |
|
0 commit comments
Comments
(0)