Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfc069f5

Browse files
committed
pathman: append and prepend functions return value
1 parent3018919 commitfc069f5

File tree

3 files changed

+54
-31
lines changed

3 files changed

+54
-31
lines changed

‎contrib/pg_pathman/expected/pg_pathman.out

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -386,33 +386,33 @@ NOTICE: Done!
386386
SELECT pathman.append_partition('test.num_range_rel');
387387
NOTICE: Appending new partition...
388388
NOTICE: Done!
389-
append_partition
390-
------------------
391-
389+
append_partition
390+
----------------------
391+
test.num_range_rel_6
392392
(1 row)
393393

394394
SELECT pathman.prepend_partition('test.num_range_rel');
395395
NOTICE: Prepending new partition...
396396
NOTICE: Done!
397-
prepend_partition
398-
-------------------
399-
397+
prepend_partition
398+
----------------------
399+
test.num_range_rel_7
400400
(1 row)
401401

402402
SELECT pathman.append_partition('test.range_rel');
403403
NOTICE: Appending new partition...
404404
NOTICE: Done!
405405
append_partition
406406
------------------
407-
407+
test.range_rel_6
408408
(1 row)
409409

410410
SELECT pathman.prepend_partition('test.range_rel');
411411
NOTICE: Prepending new partition...
412412
NOTICE: Done!
413413
prepend_partition
414414
-------------------
415-
415+
test.range_rel_7
416416
(1 row)
417417

418418
/*
@@ -590,17 +590,17 @@ NOTICE: Done!
590590
SELECT append_partition('range_rel');
591591
NOTICE: Appending new partition...
592592
NOTICE: Done!
593-
append_partition
594-
------------------
595-
593+
append_partition
594+
---------------------
595+
public.range_rel_14
596596
(1 row)
597597

598598
SELECT prepend_partition('range_rel');
599599
NOTICE: Prepending new partition...
600600
NOTICE: Done!
601-
prepend_partition
602-
-------------------
603-
601+
prepend_partition
602+
---------------------
603+
public.range_rel_15
604604
(1 row)
605605

606606
EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt < '2010-03-01';

‎contrib/pg_pathman/sql/hash.sql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,20 @@ CREATE OR REPLACE FUNCTION @extschema@.create_hash_partitions(
77
, partitions_countINTEGER
88
) RETURNSINTEGERAS
99
$$
10+
DECLARE
11+
v_typeTEXT;
1012
BEGIN
1113
relation := @extschema@.validate_relname(relation);
14+
v_type := @extschema@.get_attribute_type_name(relation, attribute);
1215

1316
IF EXISTS (SELECT*FROM @extschema@.pathman_configWHERE relname= relation) THEN
1417
RAISE EXCEPTION'Relation "%" has already been partitioned', relation;
1518
END IF;
1619

20+
IF v_type::regtype!='integer'::regtype THEN
21+
RAISE EXCEPTION'Attribute type must be INTEGER';
22+
END IF;
23+
1724
/* Create partitions and update pg_pathman configuration*/
1825
FOR partnumIN0..partitions_count-1
1926
LOOP

‎contrib/pg_pathman/sql/range.sql

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -469,40 +469,48 @@ $$ LANGUAGE plpgsql;
469469
/*
470470
* Append new partition
471471
*/
472-
CREATEOR REPLACE FUNCTION @extschema@.append_partition(p_relationTEXT)
473-
RETURNS VOIDAS
472+
CREATEOR REPLACE FUNCTION @extschema@.append_partition(
473+
p_relationTEXT)
474+
RETURNSTEXTAS
474475
$$
475476
DECLARE
476477
v_attnameTEXT;
477478
v_atttypeTEXT;
479+
v_part_nameTEXT;
478480
BEGIN
479481
p_relation := @extschema@.validate_relname(p_relation);
480482

481483
v_attname := attnameFROM @extschema@.pathman_configWHERE relname= p_relation;
482484
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
484488
USING p_relation;
489+
490+
RETURN v_part_name;
485491
END
486492
$$
487493
LANGUAGE plpgsql;
488494

489495

490496
CREATEOR REPLACE FUNCTION @extschema@.append_partition_internal(
491497
p_relationTEXT
492-
, dummy ANYELEMENT
493-
, OUT p_range ANYARRAY)
494-
RETURNS ANYARRAYAS
498+
, p_range ANYARRAY DEFAULTNULL)
499+
RETURNSTEXTAS
495500
$$
501+
DECLARE
502+
v_part_nameTEXT;
496503
BEGIN
497504
p_range := @extschema@.get_range_by_idx(p_relation::regclass::oid,-1,0);
498505
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]));
502509

503510
/* Tell backend to reload configuration*/
504511
PERFORM @extschema@.on_create_partitions(p_relation::regclass::oid);
505512
RAISE NOTICE'Done!';
513+
RETURN v_part_name;
506514
END
507515
$$
508516
LANGUAGE plpgsql;
@@ -512,39 +520,47 @@ LANGUAGE plpgsql;
512520
* Append new partition
513521
*/
514522
CREATEOR REPLACE FUNCTION @extschema@.prepend_partition(p_relationTEXT)
515-
RETURNSVOIDAS
523+
RETURNSTEXTAS
516524
$$
517525
DECLARE
518526
v_attnameTEXT;
519527
v_atttypeTEXT;
528+
v_part_nameTEXT;
520529
BEGIN
521530
p_relation := @extschema@.validate_relname(p_relation);
522531

523532
v_attname := attnameFROM @extschema@.pathman_configWHERE relname= p_relation;
524533
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
526537
USING p_relation;
538+
539+
RETURN v_part_name;
527540
END
528541
$$
529542
LANGUAGE plpgsql;
530543

531544

532545
CREATEOR REPLACE FUNCTION @extschema@.prepend_partition_internal(
533546
p_relationTEXT
534-
, dummy ANYELEMENT
535-
, OUT p_range ANYARRAY)
536-
RETURNS ANYARRAYAS
547+
, p_range ANYARRAY DEFAULTNULL)
548+
RETURNSTEXTAS
537549
$$
550+
DECLARE
551+
v_part_nameTEXT;
538552
BEGIN
539553
p_range := @extschema@.get_range_by_idx(p_relation::regclass::oid,0,0);
540554
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]);
544558

545559
/* Tell backend to reload configuration*/
546560
PERFORM @extschema@.on_create_partitions(p_relation::regclass::oid);
547561
RAISE NOTICE'Done!';
562+
563+
RETURN v_part_name;
548564
END
549565
$$
550566
LANGUAGE plpgsql;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp