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

Commitb8659fa

Browse files
committed
rename "partition" arguments to "partition_relid"
1 parent411a111 commitb8659fa

File tree

3 files changed

+141
-78
lines changed

3 files changed

+141
-78
lines changed

‎init.sql

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -643,21 +643,21 @@ SET pg_pathman.enable_partitionfilter = off; /* ensures that PartitionFilter is
643643
*/
644644
CREATEOR REPLACE FUNCTION @extschema@.copy_foreign_keys(
645645
parent_relidREGCLASS,
646-
partitionREGCLASS)
646+
partition_relidREGCLASS)
647647
RETURNS VOIDAS
648648
$$
649649
DECLARE
650650
recRECORD;
651651

652652
BEGIN
653653
PERFORM @extschema@.validate_relname(parent_relid);
654-
PERFORM @extschema@.validate_relname(partition);
654+
PERFORM @extschema@.validate_relname(partition_relid);
655655

656656
FOR recIN (SELECToidas conidFROMpg_catalog.pg_constraint
657657
WHERE conrelid= parent_relidAND contype='f')
658658
LOOP
659659
EXECUTE format('ALTER TABLE %s ADD %s',
660-
partition::TEXT,
660+
partition_relid::TEXT,
661661
pg_catalog.pg_get_constraintdef(rec.conid));
662662
END LOOP;
663663
END
@@ -880,7 +880,7 @@ LANGUAGE C STRICT;
880880
*/
881881
CREATEOR REPLACE FUNCTION @extschema@.invoke_on_partition_created_callback(
882882
parent_relidREGCLASS,
883-
partitionREGCLASS,
883+
partition_relidREGCLASS,
884884
init_callbackREGPROCEDURE,
885885
start_valueANYELEMENT,
886886
end_valueANYELEMENT)
@@ -892,7 +892,7 @@ LANGUAGE C;
892892
*/
893893
CREATEOR REPLACE FUNCTION @extschema@.invoke_on_partition_created_callback(
894894
parent_relidREGCLASS,
895-
partitionREGCLASS,
895+
partition_relidREGCLASS,
896896
init_callbackREGPROCEDURE)
897897
RETURNS VOIDAS'pg_pathman','invoke_on_partition_created_callback'
898898
LANGUAGE C;

‎pg_pathman--1.2--1.3.sql

Lines changed: 98 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,13 @@ DROP FUNCTION @extschema@.get_attribute_type(REGCLASS, TEXT);
6363
DROPFUNCTION @extschema@.create_hash_partitions(REGCLASS,TEXT,INTEGER,BOOLEAN);
6464
DROPFUNCTION @extschema@.create_hash_partitions_internal(REGCLASS,TEXT,INTEGER);
6565
DROPFUNCTION @extschema@.build_range_condition(TEXT, ANYELEMENT, ANYELEMENT);
66-
DROPFUNCTION @extschema@.get_part_range(REGCLASS, ANYELEMENT);
66+
DROPFUNCTION @extschema@.copy_foreign_keys(REGCLASS, REGCLASS);
67+
DROPFUNCTION @extschema@.invoke_on_partition_created_callback(REGCLASS, REGCLASS, REGPROCEDURE, ANYELEMENT, ANYELEMENT);
68+
DROPFUNCTION @extschema@.invoke_on_partition_created_callback(REGCLASS, REGCLASS, REGPROCEDURE);
69+
DROPFUNCTION @extschema@.split_range_partition(REGCLASS, ANYELEMENT,TEXT,TEXT, OUT ANYARRAY);
70+
DROPFUNCTION @extschema@.drop_range_partition(REGCLASS,BOOLEAN);
71+
DROPFUNCTION @extschema@.attach_range_partition(REGCLASS, REGCLASS, ANYELEMENT, ANYELEMENT);
72+
DROPFUNCTION @extschema@.detach_range_partition(REGCLASS);
6773

6874
/* ------------------------------------------------------------------------
6975
* Alter functions' modifiers
@@ -441,7 +447,7 @@ LANGUAGE C;
441447

442448

443449
CREATEOR REPLACE FUNCTION @extschema@.split_range_partition(
444-
partitionREGCLASS,
450+
partition_relidREGCLASS,
445451
split_valueANYELEMENT,
446452
partition_nameTEXT DEFAULTNULL,
447453
tablespaceTEXT DEFAULTNULL,
@@ -458,13 +464,13 @@ DECLARE
458464
v_check_nameTEXT;
459465

460466
BEGIN
461-
v_parent= @extschema@.get_parent_of_partition(partition);
467+
v_parent= @extschema@.get_parent_of_partition(partition_relid);
462468

463469
/* Acquire lock on parent*/
464470
PERFORM @extschema@.lock_partitioned_relation(v_parent);
465471

466472
/* Acquire data modification lock (prevent further modifications)*/
467-
PERFORM @extschema@.prevent_relation_modification(partition);
473+
PERFORM @extschema@.prevent_relation_modification(partition_relid);
468474

469475
v_atttype= @extschema@.get_partition_key_type(v_parent);
470476

@@ -475,13 +481,13 @@ BEGIN
475481

476482
/* Check if this is a RANGE partition*/
477483
IF v_part_type!=2 THEN
478-
RAISE EXCEPTION'"%" is not a RANGE partition',partition::TEXT;
484+
RAISE EXCEPTION'"%" is not a RANGE partition',partition_relid::TEXT;
479485
END IF;
480486

481487
/* Get partition values range*/
482488
EXECUTE format('SELECT @extschema@.get_part_range($1, NULL::%s)',
483489
@extschema@.get_base_type(v_atttype)::TEXT)
484-
USINGpartition
490+
USINGpartition_relid
485491
INTO p_range;
486492

487493
IF p_range ISNULL THEN
@@ -507,21 +513,21 @@ BEGIN
507513
v_attname, split_value, p_range[2]);
508514
EXECUTE format('WITH part_data AS (DELETE FROM %s WHERE %s RETURNING *)
509515
INSERT INTO %s SELECT * FROM part_data',
510-
partition::TEXT,
516+
partition_relid::TEXT,
511517
v_cond,
512518
v_new_partition);
513519

514520
/* Alter original partition*/
515-
v_cond := @extschema@.build_range_condition(partition::regclass,
521+
v_cond := @extschema@.build_range_condition(partition_relid::regclass,
516522
v_attname, p_range[1], split_value);
517-
v_check_name := @extschema@.build_check_constraint_name(partition, v_attname);
523+
v_check_name := @extschema@.build_check_constraint_name(partition_relid, v_attname);
518524

519525
EXECUTE format('ALTER TABLE %s DROP CONSTRAINT %s',
520-
partition::TEXT,
526+
partition_relid::TEXT,
521527
v_check_name);
522528

523529
EXECUTE format('ALTER TABLE %s ADD CONSTRAINT %s CHECK (%s)',
524-
partition::TEXT,
530+
partition_relid::TEXT,
525531
v_check_name,
526532
v_cond);
527533

@@ -747,7 +753,7 @@ LANGUAGE plpgsql;
747753

748754
CREATEOR REPLACE FUNCTION @extschema@.attach_range_partition(
749755
parent_relidREGCLASS,
750-
partitionREGCLASS,
756+
partition_relidREGCLASS,
751757
start_valueANYELEMENT,
752758
end_valueANYELEMENT)
753759
RETURNSTEXTAS
@@ -759,29 +765,29 @@ DECLARE
759765

760766
BEGIN
761767
PERFORM @extschema@.validate_relname(parent_relid);
762-
PERFORM @extschema@.validate_relname(partition);
768+
PERFORM @extschema@.validate_relname(partition_relid);
763769

764770
/* Acquire lock on parent*/
765771
PERFORM @extschema@.lock_partitioned_relation(parent_relid);
766772

767773
/* Ignore temporary tables*/
768774
SELECT relpersistenceFROMpg_catalog.pg_class
769-
WHEREoid=partition INTO rel_persistence;
775+
WHEREoid=partition_relid INTO rel_persistence;
770776

771777
IF rel_persistence='t'::CHAR THEN
772778
RAISE EXCEPTION'temporary table "%" cannot be used as a partition',
773-
partition::TEXT;
779+
partition_relid::TEXT;
774780
END IF;
775781

776782
/* check range overlap*/
777783
PERFORM @extschema@.check_range_available(parent_relid, start_value, end_value);
778784

779-
IF NOT @extschema@.validate_relations_equality(parent_relid,partition) THEN
785+
IF NOT @extschema@.validate_relations_equality(parent_relid,partition_relid) THEN
780786
RAISE EXCEPTION'partition must have the exact same structure as parent';
781787
END IF;
782788

783789
/* Set inheritance*/
784-
EXECUTE format('ALTER TABLE %s INHERIT %s',partition, parent_relid);
790+
EXECUTE format('ALTER TABLE %s INHERIT %s',partition_relid, parent_relid);
785791

786792
v_attname := attnameFROM @extschema@.pathman_configWHERE partrel= parent_relid;
787793

@@ -791,9 +797,9 @@ BEGIN
791797

792798
/* Set check constraint*/
793799
EXECUTE format('ALTER TABLE %s ADD CONSTRAINT %s CHECK (%s)',
794-
partition::TEXT,
795-
@extschema@.build_check_constraint_name(partition, v_attname),
796-
@extschema@.build_range_condition(partition,
800+
partition_relid::TEXT,
801+
@extschema@.build_check_constraint_name(partition_relid, v_attname),
802+
@extschema@.build_range_condition(partition_relid,
797803
v_attname,
798804
start_value,
799805
end_value));
@@ -807,30 +813,30 @@ BEGIN
807813
INTO v_init_callback;
808814

809815
PERFORM @extschema@.invoke_on_partition_created_callback(parent_relid,
810-
partition,
816+
partition_relid,
811817
v_init_callback,
812818
start_value,
813819
end_value);
814820

815821
/* Invalidate cache*/
816822
PERFORM @extschema@.on_update_partitions(parent_relid);
817823

818-
RETURNpartition;
824+
RETURNpartition_relid;
819825
END
820826
$$
821827
LANGUAGE plpgsql;
822828

823829

824830
CREATEOR REPLACE FUNCTION @extschema@.detach_range_partition(
825-
partitionREGCLASS)
831+
partition_relidREGCLASS)
826832
RETURNSTEXTAS
827833
$$
828834
DECLARE
829835
v_attnameTEXT;
830836
parent_relidREGCLASS;
831837

832838
BEGIN
833-
parent_relid := @extschema@.get_parent_of_partition(partition);
839+
parent_relid := @extschema@.get_parent_of_partition(partition_relid);
834840

835841
/* Acquire lock on parent*/
836842
PERFORM @extschema@.prevent_relation_modification(parent_relid);
@@ -845,23 +851,87 @@ BEGIN
845851

846852
/* Remove inheritance*/
847853
EXECUTE format('ALTER TABLE %s NO INHERIT %s',
848-
partition::TEXT,
854+
partition_relid::TEXT,
849855
parent_relid::TEXT);
850856

851857
/* Remove check constraint*/
852858
EXECUTE format('ALTER TABLE %s DROP CONSTRAINT %s',
853-
partition::TEXT,
854-
@extschema@.build_check_constraint_name(partition, v_attname));
859+
partition_relid::TEXT,
860+
@extschema@.build_check_constraint_name(partition_relid, v_attname));
855861

856862
/* Invalidate cache*/
857863
PERFORM @extschema@.on_update_partitions(parent_relid);
858864

859-
RETURNpartition;
865+
RETURNpartition_relid;
860866
END
861867
$$
862868
LANGUAGE plpgsql;
863869

864870

871+
CREATEOR REPLACE FUNCTION @extschema@.drop_range_partition(
872+
partition_relidREGCLASS,
873+
delete_dataBOOLEAN DEFAULT TRUE)
874+
RETURNSTEXTAS
875+
$$
876+
DECLARE
877+
parent_relidREGCLASS;
878+
part_nameTEXT;
879+
v_relkindCHAR;
880+
v_rowsBIGINT;
881+
v_part_typeINTEGER;
882+
883+
BEGIN
884+
parent_relid := @extschema@.get_parent_of_partition(partition_relid);
885+
part_name := partition_relid::TEXT;/* save the name to be returned*/
886+
887+
SELECT parttype
888+
FROM @extschema@.pathman_config
889+
WHERE partrel= parent_relid
890+
INTO v_part_type;
891+
892+
/* Check if this is a RANGE partition*/
893+
IF v_part_type!=2 THEN
894+
RAISE EXCEPTION'"%" is not a RANGE partition', partition_relid::TEXT;
895+
END IF;
896+
897+
/* Acquire lock on parent*/
898+
PERFORM @extschema@.lock_partitioned_relation(parent_relid);
899+
900+
IF NOT delete_data THEN
901+
EXECUTE format('INSERT INTO %s SELECT * FROM %s',
902+
parent_relid::TEXT,
903+
partition_relid::TEXT);
904+
GET DIAGNOSTICS v_rows= ROW_COUNT;
905+
906+
/* Show number of copied rows*/
907+
RAISE NOTICE'% rows copied from %', v_rows, partition_relid::TEXT;
908+
END IF;
909+
910+
SELECT relkindFROMpg_catalog.pg_class
911+
WHEREoid= partition_relid
912+
INTO v_relkind;
913+
914+
/*
915+
* Determine the kind of child relation. It can be either regular
916+
* table (r) or foreign table (f). Depending on relkind we use
917+
* DROP TABLE or DROP FOREIGN TABLE.
918+
*/
919+
IF v_relkind='f' THEN
920+
EXECUTE format('DROP FOREIGN TABLE %s', partition_relid::TEXT);
921+
ELSE
922+
EXECUTE format('DROP TABLE %s', partition_relid::TEXT);
923+
END IF;
924+
925+
/* Invalidate cache*/
926+
PERFORM @extschema@.on_update_partitions(parent_relid);
927+
928+
RETURN part_name;
929+
END
930+
$$
931+
LANGUAGE plpgsql
932+
SETpg_pathman.enable_partitionfilter= off;
933+
934+
865935
CREATEOR REPLACE FUNCTION @extschema@.drop_range_partition_expand_next(
866936
partitionREGCLASS)
867937
RETURNS VOIDAS'pg_pathman','drop_range_partition_expand_next'
@@ -875,10 +945,3 @@ CREATE OR REPLACE FUNCTION @extschema@.build_range_condition(
875945
end_valueANYELEMENT)
876946
RETURNSTEXTAS'pg_pathman','build_range_condition'
877947
LANGUAGE C;
878-
879-
880-
CREATEOR REPLACE FUNCTION @extschema@.get_part_range(
881-
partitionREGCLASS,
882-
dummyANYELEMENT)
883-
RETURNS ANYARRAYAS'pg_pathman','get_part_range_by_oid'
884-
LANGUAGE C;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp