750
750
DECLARE
751
751
v_part_name TEXT ;
752
752
v_atttype REGTYPE;
753
+ v_args_format TEXT ;
753
754
754
755
BEGIN
755
756
IF @extschema@.get_number_of_partitions(parent_relid) = 0 THEN
@@ -769,26 +770,22 @@ BEGIN
769
770
END IF;
770
771
771
772
IF @extschema@.is_date_type(p_atttype) THEN
772
- v_part_name := @extschema@.create_single_range_partition(
773
- parent_relid,
774
- p_range[2 ],
775
- p_range[2 ] + p_interval::interval,
776
- partition_name,
777
- tablespace);
773
+ v_args_format := format(' $1, $2, ($2 + $3::interval)::%s, $4, $5' , v_atttype::TEXT );
778
774
ELSE
779
- EXECUTE
780
- format(' SELECT @extschema@.create_single_range_partition($1, $2, $2 + $3::%s, $4, $5)' ,
781
- v_atttype::TEXT )
782
- USING
783
- parent_relid,
784
- p_range[2 ],
785
- p_interval,
786
- partition_name,
787
- tablespace
788
- INTO
789
- v_part_name;
775
+ v_args_format := format(' $1, $2, $2 + $3::%s, $4, $5' , v_atttype::TEXT );
790
776
END IF;
791
777
778
+ EXECUTE
779
+ format(' SELECT @extschema@.create_single_range_partition(%s)' , v_args_format)
780
+ USING
781
+ parent_relid,
782
+ p_range[2 ],
783
+ p_interval,
784
+ partition_name,
785
+ tablespace
786
+ INTO
787
+ v_part_name;
788
+
792
789
RETURN v_part_name;
793
790
END
794
791
$$
864
861
DECLARE
865
862
v_part_name TEXT ;
866
863
v_atttype REGTYPE;
864
+ v_args_format TEXT ;
867
865
868
866
BEGIN
869
867
IF @extschema@.get_number_of_partitions(parent_relid) = 0 THEN
@@ -883,26 +881,22 @@ BEGIN
883
881
END IF;
884
882
885
883
IF @extschema@.is_date_type(p_atttype) THEN
886
- v_part_name := @extschema@.create_single_range_partition(
887
- parent_relid,
888
- p_range[1 ] - p_interval::interval,
889
- p_range[1 ],
890
- partition_name,
891
- tablespace);
884
+ v_args_format := format(' $1, ($2 - $3::interval)::%s, $2, $4, $5' , v_atttype::TEXT );
892
885
ELSE
893
- EXECUTE
894
- format(' SELECT @extschema@.create_single_range_partition($1, $2 - $3::%s, $2, $4, $5)' ,
895
- v_atttype::TEXT )
896
- USING
897
- parent_relid,
898
- p_range[1 ],
899
- p_interval,
900
- partition_name,
901
- tablespace
902
- INTO
903
- v_part_name;
886
+ v_args_format := format(' $1, $2 - $3::%s, $2, $4, $5' , v_atttype::TEXT );
904
887
END IF;
905
888
889
+ EXECUTE
890
+ format(' SELECT @extschema@.create_single_range_partition(%s)' , v_args_format)
891
+ USING
892
+ parent_relid,
893
+ p_range[1 ],
894
+ p_interval,
895
+ partition_name,
896
+ tablespace
897
+ INTO
898
+ v_part_name;
899
+
906
900
RETURN v_part_name;
907
901
END
908
902
$$
0 commit comments