forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit49a7610
committed
Fix an ancient oversight in btree xlog replay. When trying to determine if an
upper-level insertion completes a previously-seen split, we cannot simply grabthe downlink block number out of the buffer, because the buffer could containa later state of the page --- or perhaps the page doesn't even exist at allany more, due to relation truncation. These possibilities have been masked upto now because the use of full_page_writes effectively ensured that no xlogreplay routine ever actually saw a page state newer than its own change.Since we're deprecating full_page_writes in 8.1.*, there's no need to fix thisin existing release branches, but we need a fix in HEAD if we want to have anyhope of re-allowing full_page_writes. Accordingly, adjust the contents ofbtree WAL records so that we can always get the downlink block number from theWAL record rather than having to depend on buffer contents. Per report fromKevin Grittner and Peter Brant.Improve a few comments in related code while at it.1 parent3ef151e commit49a7610
File tree
3 files changed
+96
-55
lines changed- src
- backend/access/nbtree
- include/access
3 files changed
+96
-55
lines changedLines changed: 31 additions & 11 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 |
| |
| |||
323 | 323 |
| |
324 | 324 |
| |
325 | 325 |
| |
326 |
| - | |
327 |
| - | |
328 |
| - | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
329 | 329 |
| |
330 | 330 |
| |
331 | 331 |
| |
| |||
527 | 527 |
| |
528 | 528 |
| |
529 | 529 |
| |
| 530 | + | |
| 531 | + | |
530 | 532 |
| |
531 | 533 |
| |
532 | 534 |
| |
| |||
557 | 559 |
| |
558 | 560 |
| |
559 | 561 |
| |
| 562 | + | |
560 | 563 |
| |
561 | 564 |
| |
562 | 565 |
| |
563 |
| - | |
| 566 | + | |
564 | 567 |
| |
565 | 568 |
| |
566 | 569 |
| |
| |||
572 | 575 |
| |
573 | 576 |
| |
574 | 577 |
| |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
575 | 594 |
| |
576 | 595 |
| |
577 | 596 |
| |
| |||
584 | 603 |
| |
585 | 604 |
| |
586 | 605 |
| |
| 606 | + | |
587 | 607 |
| |
588 | 608 |
| |
589 |
| - | |
590 |
| - | |
591 |
| - | |
592 |
| - | |
593 | 609 |
| |
594 | 610 |
| |
595 | 611 |
| |
| |||
633 | 649 |
| |
634 | 650 |
| |
635 | 651 |
| |
636 |
| - | |
| 652 | + | |
637 | 653 |
| |
638 | 654 |
| |
639 | 655 |
| |
| |||
860 | 876 |
| |
861 | 877 |
| |
862 | 878 |
| |
863 |
| - | |
| 879 | + | |
| 880 | + | |
864 | 881 |
| |
865 | 882 |
| |
866 | 883 |
| |
| |||
1445 | 1462 |
| |
1446 | 1463 |
| |
1447 | 1464 |
| |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
1448 | 1468 |
| |
1449 | 1469 |
| |
1450 | 1470 |
| |
|
Lines changed: 63 additions & 43 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 |
| |
| |||
51 | 51 |
| |
52 | 52 |
| |
53 | 53 |
| |
54 |
| - | |
55 |
| - | |
56 |
| - | |
| 54 | + | |
57 | 55 |
| |
58 |
| - | |
59 |
| - | |
60 |
| - | |
61 |
| - | |
62 | 56 |
| |
63 | 57 |
| |
64 |
| - | |
65 |
| - | |
66 |
| - | |
67 |
| - | |
68 |
| - | |
69 |
| - | |
70 |
| - | |
71 |
| - | |
72 |
| - | |
73 |
| - | |
74 | 58 |
| |
75 | 59 |
| |
76 | 60 |
| |
77 | 61 |
| |
78 | 62 |
| |
79 |
| - | |
| 63 | + | |
80 | 64 |
| |
81 | 65 |
| |
82 | 66 |
| |
| |||
87 | 71 |
| |
88 | 72 |
| |
89 | 73 |
| |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
90 | 88 |
| |
91 | 89 |
| |
92 | 90 |
| |
| |||
158 | 156 |
| |
159 | 157 |
| |
160 | 158 |
| |
| 159 | + | |
161 | 160 |
| |
162 | 161 |
| |
163 | 162 |
| |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
164 | 169 |
| |
165 | 170 |
| |
166 | 171 |
| |
167 | 172 |
| |
168 | 173 |
| |
169 | 174 |
| |
170 | 175 |
| |
171 |
| - | |
172 |
| - | |
| 176 | + | |
173 | 177 |
| |
174 | 178 |
| |
175 | 179 |
| |
| |||
208 | 212 |
| |
209 | 213 |
| |
210 | 214 |
| |
211 |
| - | |
212 |
| - | |
213 |
| - | |
214 |
| - | |
215 |
| - | |
216 |
| - | |
217 |
| - | |
| 215 | + | |
| 216 | + | |
218 | 217 |
| |
219 | 218 |
| |
220 | 219 |
| |
| |||
224 | 223 |
| |
225 | 224 |
| |
226 | 225 |
| |
| 226 | + | |
227 | 227 |
| |
228 | 228 |
| |
| 229 | + | |
229 | 230 |
| |
230 | 231 |
| |
231 | 232 |
| |
232 | 233 |
| |
233 | 234 |
| |
234 | 235 |
| |
| 236 | + | |
235 | 237 |
| |
236 | 238 |
| |
237 | 239 |
| |
| |||
252 | 254 |
| |
253 | 255 |
| |
254 | 256 |
| |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
255 | 267 |
| |
256 | 268 |
| |
257 | 269 |
| |
| |||
274 | 286 |
| |
275 | 287 |
| |
276 | 288 |
| |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
277 | 299 |
| |
278 | 300 |
| |
279 | 301 |
| |
| |||
308 | 330 |
| |
309 | 331 |
| |
310 | 332 |
| |
311 |
| - | |
312 |
| - | |
313 |
| - | |
314 |
| - | |
315 |
| - | |
316 |
| - | |
317 |
| - | |
| 333 | + | |
| 334 | + | |
318 | 335 |
| |
319 | 336 |
| |
320 | 337 |
| |
| |||
516 | 533 |
| |
517 | 534 |
| |
518 | 535 |
| |
| 536 | + | |
519 | 537 |
| |
520 | 538 |
| |
521 | 539 |
| |
| |||
532 | 550 |
| |
533 | 551 |
| |
534 | 552 |
| |
| 553 | + | |
| 554 | + | |
| 555 | + | |
535 | 556 |
| |
536 | 557 |
| |
537 | 558 |
| |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
538 | 564 |
| |
539 | 565 |
| |
540 | 566 |
| |
| |||
546 | 572 |
| |
547 | 573 |
| |
548 | 574 |
| |
549 |
| - | |
550 |
| - | |
551 |
| - | |
552 |
| - | |
553 |
| - | |
554 |
| - | |
555 |
| - | |
556 |
| - | |
| 575 | + | |
| 576 | + | |
557 | 577 |
| |
558 | 578 |
| |
559 | 579 |
| |
|
Lines changed: 2 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 |
| |
| |||
206 | 206 |
| |
207 | 207 |
| |
208 | 208 |
| |
| 209 | + | |
209 | 210 |
| |
210 | 211 |
| |
211 | 212 |
| |
|
0 commit comments
Comments
(0)