Commit eb81b65
committed
The previous fix in CVS HEAD and 8.4 for handling the case where a cursor
being used in a PL/pgSQL FOR loop is closed was inadequate, as Tom Lane
pointed out. The bug affects FOR statement variants too, because you can
close an implicitly created cursor too by guessing the "<unnamed portal X>"
name created for it.
To fix that, "pin" the portal to prevent it from being dropped while it's
being used in a PL/pgSQL FOR loop. Backpatch all the way to 7.4 which is
the oldest supported version.1 parent 2330d9c commit eb81b65
File tree
3 files changed
+64
-43
lines changed- src
- backend/utils/mmgr
- include/utils
- pl/plpgsql/src
3 files changed
+64
-43
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
376 | 376 | | |
377 | 377 | | |
378 | 378 | | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
379 | 401 | | |
380 | 402 | | |
381 | 403 | | |
| |||
385 | 407 | | |
386 | 408 | | |
387 | 409 | | |
388 | | - | |
389 | | - | |
390 | | - | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
391 | 420 | | |
392 | 421 | | |
393 | 422 | | |
| |||
630 | 659 | | |
631 | 660 | | |
632 | 661 | | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
633 | 669 | | |
634 | 670 | | |
635 | 671 | | |
| |||
738 | 774 | | |
739 | 775 | | |
740 | 776 | | |
741 | | - | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
742 | 786 | | |
743 | 787 | | |
744 | 788 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| 136 | + | |
136 | 137 | | |
137 | 138 | | |
138 | 139 | | |
| |||
199 | 200 | | |
200 | 201 | | |
201 | 202 | | |
| 203 | + | |
| 204 | + | |
202 | 205 | | |
203 | 206 | | |
204 | 207 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
2002 | 2002 | | |
2003 | 2003 | | |
2004 | 2004 | | |
2005 | | - | |
2006 | | - | |
2007 | | - | |
| 2005 | + | |
2008 | 2006 | | |
2009 | 2007 | | |
2010 | | - | |
2011 | | - | |
2012 | | - | |
2013 | | - | |
2014 | | - | |
2015 | | - | |
2016 | 2008 | | |
2017 | 2009 | | |
2018 | | - | |
2019 | 2010 | | |
2020 | 2011 | | |
2021 | 2012 | | |
| |||
4278 | 4269 | | |
4279 | 4270 | | |
4280 | 4271 | | |
4281 | | - | |
4282 | | - | |
4283 | | - | |
4284 | | - | |
4285 | | - | |
4286 | | - | |
4287 | | - | |
4288 | 4272 | | |
4289 | 4273 | | |
4290 | 4274 | | |
| |||
4296 | 4280 | | |
4297 | 4281 | | |
4298 | 4282 | | |
4299 | | - | |
4300 | | - | |
4301 | | - | |
4302 | | - | |
4303 | 4283 | | |
4304 | 4284 | | |
4305 | 4285 | | |
| |||
4311 | 4291 | | |
4312 | 4292 | | |
4313 | 4293 | | |
| 4294 | + | |
| 4295 | + | |
| 4296 | + | |
| 4297 | + | |
| 4298 | + | |
| 4299 | + | |
4314 | 4300 | | |
4315 | 4301 | | |
4316 | 4302 | | |
| |||
4408 | 4394 | | |
4409 | 4395 | | |
4410 | 4396 | | |
4411 | | - | |
4412 | | - | |
4413 | | - | |
4414 | 4397 | | |
4415 | | - | |
4416 | | - | |
4417 | | - | |
4418 | | - | |
4419 | | - | |
4420 | | - | |
4421 | | - | |
4422 | | - | |
4423 | | - | |
4424 | | - | |
4425 | | - | |
4426 | | - | |
| 4398 | + | |
4427 | 4399 | | |
4428 | 4400 | | |
4429 | 4401 | | |
| |||
4435 | 4407 | | |
4436 | 4408 | | |
4437 | 4409 | | |
| 4410 | + | |
| 4411 | + | |
4438 | 4412 | | |
4439 | 4413 | | |
4440 | 4414 | | |
| |||
0 commit comments