- Notifications
You must be signed in to change notification settings - Fork5
Commit1575fbc
committed
Prevent adding relations to a concurrently dropped schema.
In the previous coding, it was possible for a relation to be createdvia CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE FOREIGN TABLE,etc. in a schema while that schema was meanwhile being concurrentlydropped. This led to a pg_class entry with an invalid relnamespacevalue. The same problem could occur if a relation was moved usingALTER .. SET SCHEMA while the target schema was being concurrentlydropped. This patch prevents both of those scenarios by locking theschema to which the relation is being added using AccessShareLock,which conflicts with the AccessExclusiveLock taken by DROP.As a desirable side effect, this also prevents the use of CREATE ORREPLACE VIEW to queue for an AccessExclusiveLock on a relation on whichyou have no rights: that will now fail immediately with a permissionserror, before trying to obtain a lock.We need similar protection for all other object types, but as everythingother than relations uses a slightly different set of code paths, I'mleaving that for a separate commit.Original complaint (as far as I could find) about CREATE by NikhilSontakke; risk for ALTER .. SET SCHEMA pointed out by Tom Lane;further details by Dan Farina; patch by me; review by Hitoshi Harada.1 parent01d83ff commit1575fbc
File tree
7 files changed
+158
-59
lines changed- src
- backend
- catalog
- commands
- executor
- parser
- include/catalog
7 files changed
+158
-59
lines changedLines changed: 111 additions & 11 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
480 | 480 |
| |
481 | 481 |
| |
482 | 482 |
| |
483 |
| - | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
484 | 506 |
| |
485 | 507 |
| |
486 |
| - | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
487 | 511 |
| |
488 |
| - | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
489 | 518 |
| |
490 |
| - | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
491 | 531 |
| |
492 | 532 |
| |
493 |
| - | |
494 |
| - | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
495 | 537 |
| |
496 |
| - | |
| 538 | + | |
497 | 539 |
| |
498 | 540 |
| |
499 | 541 |
| |
500 |
| - | |
501 |
| - | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
502 | 562 |
| |
503 | 563 |
| |
504 |
| - | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
505 | 602 |
| |
506 | 603 |
| |
507 |
| - | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
508 | 608 |
| |
509 | 609 |
| |
510 | 610 |
| |
|
Lines changed: 9 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
451 | 451 |
| |
452 | 452 |
| |
453 | 453 |
| |
454 |
| - | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
455 | 457 |
| |
456 |
| - | |
457 |
| - | |
| 458 | + | |
| 459 | + | |
458 | 460 |
| |
459 | 461 |
| |
460 | 462 |
| |
| |||
9417 | 9419 |
| |
9418 | 9420 |
| |
9419 | 9421 |
| |
| 9422 | + | |
9420 | 9423 |
| |
9421 | 9424 |
| |
9422 | 9425 |
| |
| |||
9441 | 9444 |
| |
9442 | 9445 |
| |
9443 | 9446 |
| |
9444 |
| - | |
9445 |
| - | |
| 9447 | + | |
| 9448 | + | |
| 9449 | + | |
9446 | 9450 |
| |
9447 | 9451 |
| |
9448 | 9452 |
| |
|
Lines changed: 2 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2005 | 2005 |
| |
2006 | 2006 |
| |
2007 | 2007 |
| |
2008 |
| - | |
| 2008 | + | |
| 2009 | + | |
2009 | 2010 |
| |
2010 | 2011 |
| |
2011 | 2012 |
| |
|
Lines changed: 15 additions & 21 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
98 | 98 |
| |
99 | 99 |
| |
100 | 100 |
| |
101 |
| - | |
102 |
| - | |
| 101 | + | |
| 102 | + | |
103 | 103 |
| |
104 | 104 |
| |
| 105 | + | |
| 106 | + | |
105 | 107 |
| |
106 | 108 |
| |
107 | 109 |
| |
| |||
159 | 161 |
| |
160 | 162 |
| |
161 | 163 |
| |
162 |
| - | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
163 | 168 |
| |
164 |
| - | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
165 | 172 |
| |
166 | 173 |
| |
167 | 174 |
| |
| |||
170 | 177 |
| |
171 | 178 |
| |
172 | 179 |
| |
173 |
| - | |
174 |
| - | |
175 |
| - | |
176 |
| - | |
| 180 | + | |
| 181 | + | |
177 | 182 |
| |
178 |
| - | |
179 |
| - | |
180 |
| - | |
| 183 | + | |
181 | 184 |
| |
182 | 185 |
| |
183 | 186 |
| |
184 | 187 |
| |
185 | 188 |
| |
186 | 189 |
| |
187 |
| - | |
188 |
| - | |
189 |
| - | |
190 |
| - | |
191 | 190 |
| |
192 | 191 |
| |
193 | 192 |
| |
| |||
428 | 427 |
| |
429 | 428 |
| |
430 | 429 |
| |
431 |
| - | |
432 | 430 |
| |
433 | 431 |
| |
434 | 432 |
| |
| |||
514 | 512 |
| |
515 | 513 |
| |
516 | 514 |
| |
517 |
| - | |
518 |
| - | |
519 |
| - | |
520 |
| - | |
521 | 515 |
| |
522 | 516 |
| |
523 | 517 |
| |
524 | 518 |
| |
525 | 519 |
| |
526 | 520 |
| |
527 | 521 |
| |
528 |
| - | |
| 522 | + | |
529 | 523 |
| |
530 | 524 |
| |
531 | 525 |
| |
|
Lines changed: 5 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2532 | 2532 |
| |
2533 | 2533 |
| |
2534 | 2534 |
| |
2535 |
| - | |
| 2535 | + | |
| 2536 | + | |
| 2537 | + | |
2536 | 2538 |
| |
2537 | 2539 |
| |
2538 |
| - | |
2539 |
| - | |
| 2540 | + | |
| 2541 | + | |
2540 | 2542 |
| |
2541 | 2543 |
| |
2542 | 2544 |
| |
|
Lines changed: 13 additions & 17 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
146 | 146 |
| |
147 | 147 |
| |
148 | 148 |
| |
| 149 | + | |
149 | 150 |
| |
150 | 151 |
| |
151 | 152 |
| |
| |||
155 | 156 |
| |
156 | 157 |
| |
157 | 158 |
| |
158 |
| - | |
159 |
| - | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
160 | 162 |
| |
161 |
| - | |
162 |
| - | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
163 | 166 |
| |
164 | 167 |
| |
165 | 168 |
| |
166 | 169 |
| |
167 | 170 |
| |
168 |
| - | |
| 171 | + | |
169 | 172 |
| |
170 |
| - | |
171 |
| - | |
172 |
| - | |
173 |
| - | |
174 |
| - | |
175 |
| - | |
176 |
| - | |
177 |
| - | |
178 |
| - | |
179 |
| - | |
180 |
| - | |
181 |
| - | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
182 | 178 |
| |
183 | 179 |
| |
184 | 180 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
58 | 58 |
| |
59 | 59 |
| |
60 | 60 |
| |
61 |
| - | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
62 | 64 |
| |
63 | 65 |
| |
64 | 66 |
| |
|
0 commit comments
Comments
(0)