forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit04e298b
committed
Avoid palloc in critical section in GiST WAL-logging.
Memory allocation can fail if you run out of memory, and inside a criticalsection that will lead to a PANIC. Use conservatively-sized arrays in stackinstead.There was previously no explicit limit on the number of pages a GiST splitcan produce, it was only limited by the number of LWLocks that can be heldsimultaneously (100 at the moment). This patch adds an explicit limit of 75pages. That should be plenty, a typical split shouldn't produce more than2-3 page halves.The bug has been there forever, but only backpatch down to 9.1. The codewas changed significantly in 9.1, and it doesn't seem worth the risk ortrouble to adapt this for 9.0 and 8.4.1 parentfc75250 commit04e298b
File tree
4 files changed
+38
-9
lines changed- src
- backend/access/gist
- include/access
4 files changed
+38
-9
lines changedLines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
135 | 135 |
| |
136 | 136 |
| |
137 | 137 |
| |
138 |
| - | |
| 138 | + | |
139 | 139 |
| |
140 | 140 |
| |
141 | 141 |
| |
|
Lines changed: 14 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
220 | 220 |
| |
221 | 221 |
| |
222 | 222 |
| |
| 223 | + | |
223 | 224 |
| |
224 | 225 |
| |
225 | 226 |
| |
| |||
240 | 241 |
| |
241 | 242 |
| |
242 | 243 |
| |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
243 | 257 |
| |
244 | 258 |
| |
245 | 259 |
| |
|
Lines changed: 8 additions & 8 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
379 | 379 |
| |
380 | 380 |
| |
381 | 381 |
| |
382 |
| - | |
| 382 | + | |
383 | 383 |
| |
384 | 384 |
| |
385 | 385 |
| |
| |||
388 | 388 |
| |
389 | 389 |
| |
390 | 390 |
| |
391 |
| - | |
392 |
| - | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
393 | 397 |
| |
394 | 398 |
| |
395 | 399 |
| |
| |||
439 | 443 |
| |
440 | 444 |
| |
441 | 445 |
| |
442 |
| - | |
443 | 446 |
| |
444 | 447 |
| |
445 | 448 |
| |
| |||
462 | 465 |
| |
463 | 466 |
| |
464 | 467 |
| |
465 |
| - | |
| 468 | + | |
466 | 469 |
| |
467 | 470 |
| |
468 | 471 |
| |
469 | 472 |
| |
470 | 473 |
| |
471 |
| - | |
472 |
| - | |
473 | 474 |
| |
474 | 475 |
| |
475 | 476 |
| |
| |||
516 | 517 |
| |
517 | 518 |
| |
518 | 519 |
| |
519 |
| - | |
520 | 520 |
| |
521 | 521 |
|
Lines changed: 15 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
22 | 22 |
| |
23 | 23 |
| |
24 | 24 |
| |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
25 | 40 |
| |
26 | 41 |
| |
27 | 42 |
| |
|
0 commit comments
Comments
(0)