|
97 | 97 | /* Acquire exclusive lock on parent */ |
98 | 98 | PERFORM @extschema@.lock_partitioned_relation(parent_relid); |
99 | 99 |
|
| 100 | + IF partition_data = true THEN |
| 101 | + /* Acquire data modification lock */ |
| 102 | + PERFORM @extschema@.lock_relation_modification(parent_relid); |
| 103 | + END IF; |
| 104 | + |
100 | 105 | PERFORM @extschema@.validate_relname(parent_relid); |
101 | 106 | p_attribute := lower(p_attribute); |
102 | 107 | PERFORM @extschema@.common_relation_checks(parent_relid, p_attribute); |
@@ -194,6 +199,11 @@ BEGIN |
194 | 199 | /* Acquire exclusive lock on parent */ |
195 | 200 | PERFORM @extschema@.lock_partitioned_relation(parent_relid); |
196 | 201 |
|
| 202 | + IF partition_data = true THEN |
| 203 | + /* Acquire data modification lock */ |
| 204 | + PERFORM @extschema@.lock_relation_modification(parent_relid); |
| 205 | + END IF; |
| 206 | + |
197 | 207 | PERFORM @extschema@.validate_relname(parent_relid); |
198 | 208 | p_attribute := lower(p_attribute); |
199 | 209 | PERFORM @extschema@.common_relation_checks(parent_relid, p_attribute); |
@@ -289,6 +299,11 @@ BEGIN |
289 | 299 | /* Acquire exclusive lock on parent */ |
290 | 300 | PERFORM @extschema@.lock_partitioned_relation(parent_relid); |
291 | 301 |
|
| 302 | + IF partition_data = true THEN |
| 303 | + /* Acquire data modification lock */ |
| 304 | + PERFORM @extschema@.lock_relation_modification(parent_relid); |
| 305 | + END IF; |
| 306 | + |
292 | 307 | PERFORM @extschema@.validate_relname(parent_relid); |
293 | 308 | p_attribute := lower(p_attribute); |
294 | 309 | PERFORM @extschema@.common_relation_checks(parent_relid, p_attribute); |
@@ -357,6 +372,11 @@ BEGIN |
357 | 372 | /* Acquire exclusive lock on parent */ |
358 | 373 | PERFORM @extschema@.lock_partitioned_relation(parent_relid); |
359 | 374 |
|
| 375 | + IF partition_data = true THEN |
| 376 | + /* Acquire data modification lock */ |
| 377 | + PERFORM @extschema@.lock_relation_modification(parent_relid); |
| 378 | + END IF; |
| 379 | + |
360 | 380 | PERFORM @extschema@.validate_relname(parent_relid); |
361 | 381 | p_attribute := lower(p_attribute); |
362 | 382 | PERFORM @extschema@.common_relation_checks(parent_relid, p_attribute); |
@@ -501,6 +521,9 @@ BEGIN |
501 | 521 | /* Acquire exclusive lock on parent */ |
502 | 522 | PERFORM @extschema@.lock_partitioned_relation(v_parent_relid); |
503 | 523 |
|
| 524 | + /* Acquire data modification lock */ |
| 525 | + PERFORM @extschema@.lock_relation_modification(p_partition); |
| 526 | + |
504 | 527 | SELECT attname, parttype |
505 | 528 | FROM @extschema@.pathman_config |
506 | 529 | WHERE partrel = v_parent_relid |
@@ -585,6 +608,10 @@ BEGIN |
585 | 608 | v_parent_relid1 := @extschema@.get_parent_of_partition(partition1); |
586 | 609 | v_parent_relid2 := @extschema@.get_parent_of_partition(partition2); |
587 | 610 |
|
| 611 | + /* Acquire data modification lock */ |
| 612 | + PERFORM @extschema@.lock_relation_modification(partition1); |
| 613 | + PERFORM @extschema@.lock_relation_modification(partition2); |
| 614 | + |
588 | 615 | IF v_parent_relid1 != v_parent_relid2 THEN |
589 | 616 | RAISE EXCEPTION 'Cannot merge partitions with different parents'; |
590 | 617 | END IF; |
|
0 commit comments