@@ -469,40 +469,48 @@ $$ LANGUAGE plpgsql;
469
469
/*
470
470
* Append new partition
471
471
*/
472
- CREATE OR REPLACE FUNCTION @extschema@.append_partition(p_relation TEXT )
473
- RETURNS VOID AS
472
+ CREATE OR REPLACE FUNCTION @extschema@.append_partition(
473
+ p_relation TEXT )
474
+ RETURNS TEXT AS
474
475
$$
475
476
DECLARE
476
477
v_attname TEXT ;
477
478
v_atttype TEXT ;
479
+ v_part_name TEXT ;
478
480
BEGIN
479
481
p_relation := @extschema@.validate_relname(p_relation);
480
482
481
483
v_attname := attname FROM @extschema@.pathman_config WHERE relname = p_relation;
482
484
v_atttype := @extschema@.get_attribute_type_name(p_relation, v_attname);
483
- EXECUTE format(' SELECT @extschema@.append_partition_internal($1, NULL::%s)' , v_atttype)
485
+ EXECUTE format(' SELECT @extschema@.append_partition_internal($1, ARRAY[]::%s[])'
486
+ , v_atttype)
487
+ INTO v_part_name
484
488
USING p_relation;
489
+
490
+ RETURN v_part_name;
485
491
END
486
492
$$
487
493
LANGUAGE plpgsql;
488
494
489
495
490
496
CREATE OR REPLACE FUNCTION @extschema@.append_partition_internal(
491
497
p_relation TEXT
492
- , dummy ANYELEMENT
493
- , OUT p_range ANYARRAY)
494
- RETURNS ANYARRAY AS
498
+ , p_range ANYARRAY DEFAULT NULL )
499
+ RETURNS TEXT AS
495
500
$$
501
+ DECLARE
502
+ v_part_name TEXT ;
496
503
BEGIN
497
504
p_range := @extschema@.get_range_by_idx(p_relation::regclass::oid , - 1 , 0 );
498
505
RAISE NOTICE ' Appending new partition...' ;
499
- PERFORM @extschema@.create_single_range_partition(p_relation
500
- , p_range[2 ]
501
- , p_range[2 ] + (p_range[2 ] - p_range[1 ]));
506
+ v_part_name : = @extschema@.create_single_range_partition(p_relation
507
+ , p_range[2 ]
508
+ , p_range[2 ] + (p_range[2 ] - p_range[1 ]));
502
509
503
510
/* Tell backend to reload configuration */
504
511
PERFORM @extschema@.on_create_partitions(p_relation::regclass::oid );
505
512
RAISE NOTICE ' Done!' ;
513
+ RETURN v_part_name;
506
514
END
507
515
$$
508
516
LANGUAGE plpgsql;
@@ -512,39 +520,47 @@ LANGUAGE plpgsql;
512
520
* Append new partition
513
521
*/
514
522
CREATE OR REPLACE FUNCTION @extschema@.prepend_partition(p_relation TEXT )
515
- RETURNS VOID AS
523
+ RETURNS TEXT AS
516
524
$$
517
525
DECLARE
518
526
v_attname TEXT ;
519
527
v_atttype TEXT ;
528
+ v_part_name TEXT ;
520
529
BEGIN
521
530
p_relation := @extschema@.validate_relname(p_relation);
522
531
523
532
v_attname := attname FROM @extschema@.pathman_config WHERE relname = p_relation;
524
533
v_atttype := @extschema@.get_attribute_type_name(p_relation, v_attname);
525
- EXECUTE format(' SELECT @extschema@.prepend_partition_internal($1, NULL::%s)' , v_atttype)
534
+ EXECUTE format(' SELECT @extschema@.prepend_partition_internal($1, ARRAY[]::%s[])'
535
+ , v_atttype)
536
+ INTO v_part_name
526
537
USING p_relation;
538
+
539
+ RETURN v_part_name;
527
540
END
528
541
$$
529
542
LANGUAGE plpgsql;
530
543
531
544
532
545
CREATE OR REPLACE FUNCTION @extschema@.prepend_partition_internal(
533
546
p_relation TEXT
534
- , dummy ANYELEMENT
535
- , OUT p_range ANYARRAY)
536
- RETURNS ANYARRAY AS
547
+ , p_range ANYARRAY DEFAULT NULL )
548
+ RETURNS TEXT AS
537
549
$$
550
+ DECLARE
551
+ v_part_name TEXT ;
538
552
BEGIN
539
553
p_range := @extschema@.get_range_by_idx(p_relation::regclass::oid , 0 , 0 );
540
554
RAISE NOTICE ' Prepending new partition...' ;
541
- PERFORM @extschema@.create_single_range_partition(p_relation
542
- , p_range[1 ] - (p_range[2 ] - p_range[1 ])
543
- , p_range[1 ]);
555
+ v_part_name : = @extschema@.create_single_range_partition(p_relation
556
+ , p_range[1 ] - (p_range[2 ] - p_range[1 ])
557
+ , p_range[1 ]);
544
558
545
559
/* Tell backend to reload configuration */
546
560
PERFORM @extschema@.on_create_partitions(p_relation::regclass::oid );
547
561
RAISE NOTICE ' Done!' ;
562
+
563
+ RETURN v_part_name;
548
564
END
549
565
$$
550
566
LANGUAGE plpgsql;
0 commit comments