6060END
6161$$ LANGUAGE plpgsql;
6262
63-
64- CREATE OR REPLACE FUNCTION @extschema@.prepare_for_partitioning(
65- parent_relid REGCLASS,
66- expression TEXT ,
67- partition_data BOOLEAN )
68- RETURNS VOID AS
69- $$
70- BEGIN
71- PERFORM @extschema@.validate_relname(parent_relid);
72-
73- IF partition_data = true THEN
74- /* Acquire data modification lock */
75- PERFORM @extschema@.prevent_relation_modification(parent_relid);
76- ELSE
77- /* Acquire lock on parent */
78- PERFORM @extschema@.lock_partitioned_relation(parent_relid);
79- END IF;
80-
81- expression := lower (expression);
82- PERFORM @extschema@.common_relation_checks(parent_relid, expression);
83- END
84- $$ LANGUAGE plpgsql;
85-
8663/*
8764 * Creates RANGE partitions for specified relation based on datetime attribute
8865 */
@@ -106,7 +83,9 @@ DECLARE
10683
10784BEGIN
10885 expression := lower (expression);
109- PERFORM @extschema@.prepare_for_partitioning(parent_relid, expression, partition_data);
86+ PERFORM @extschema@.prepare_for_partitioning(parent_relid,
87+ expression,
88+ partition_data);
11089
11190 IF p_count < 0 THEN
11291 RAISE EXCEPTION ' "p_count" must not be less than 0' ;
@@ -206,7 +185,9 @@ DECLARE
206185
207186BEGIN
208187 expression := lower (expression);
209- PERFORM @extschema@.prepare_for_partitioning(parent_relid, expression, partition_data);
188+ PERFORM @extschema@.prepare_for_partitioning(parent_relid,
189+ expression,
190+ partition_data);
210191
211192 IF p_count < 0 THEN
212193 RAISE EXCEPTION ' partitions count must not be less than zero' ;
@@ -307,7 +288,9 @@ BEGIN
307288 END IF;
308289
309290 expression := lower (expression);
310- PERFORM @extschema@.prepare_for_partitioning(parent_relid, expression, partition_data);
291+ PERFORM @extschema@.prepare_for_partitioning(parent_relid,
292+ expression,
293+ partition_data);
311294
312295 /* Check boundaries */
313296 PERFORM @extschema@.check_boundaries(parent_relid,
@@ -358,7 +341,9 @@ DECLARE
358341
359342BEGIN
360343 expression := lower (expression);
361- PERFORM @extschema@.prepare_for_partitioning(parent_relid, expression, partition_data);
344+ PERFORM @extschema@.prepare_for_partitioning(parent_relid,
345+ expression,
346+ partition_data);
362347
363348 /* Check boundaries */
364349 PERFORM @extschema@.check_boundaries(parent_relid,
@@ -415,8 +400,9 @@ DECLARE
415400
416401BEGIN
417402 expression := lower (expression);
418- PERFORM @extschema@.prepare_for_partitioning(parent_relid, expression,
419- partition_data);
403+ PERFORM @extschema@.prepare_for_partitioning(parent_relid,
404+ expression,
405+ partition_data);
420406
421407 /* Check boundaries */
422408 PERFORM @extschema@.check_boundaries(parent_relid,
@@ -483,6 +469,9 @@ DECLARE
483469BEGIN
484470 parent_relid = @extschema@.get_parent_of_partition(partition_relid);
485471
472+ PERFORM @extschema@.validate_relname(parent_relid);
473+ PERFORM @extschema@.validate_relname(partition_relid);
474+
486475 /* Acquire lock on parent */
487476 PERFORM @extschema@.lock_partitioned_relation(parent_relid);
488477
@@ -839,8 +828,11 @@ DECLARE
839828
840829BEGIN
841830 parent_relid := @extschema@.get_parent_of_partition(partition_relid);
842- part_name := partition_relid::TEXT ; /* save the name to be returned */
843831
832+ PERFORM @extschema@.validate_relname(parent_relid);
833+ PERFORM @extschema@.validate_relname(partition_relid);
834+
835+ part_name := partition_relid::TEXT ; /* save the name to be returned */
844836 part_type := @extschema@.get_partition_type(parent_relid);
845837
846838 /* Check if this is a RANGE partition */
@@ -972,18 +964,22 @@ RETURNS TEXT AS
972964$$
973965DECLARE
974966 parent_relid REGCLASS;
975- part_expr TEXT ;
967+ part_type INTEGER ;
976968
977969BEGIN
978970 parent_relid := @extschema@.get_parent_of_partition(partition_relid);
979971
972+ PERFORM @extschema@.validate_relname(parent_relid);
973+ PERFORM @extschema@.validate_relname(partition_relid);
974+
980975 /* Acquire lock on parent */
981976 PERFORM @extschema@.prevent_relation_modification(parent_relid);
982977
983- part_expr := @extschema@.get_partition_key (parent_relid);
978+ part_type := @extschema@.get_partition_type (parent_relid);
984979
985- IF part_expr IS NULL THEN
986- RAISE EXCEPTION ' table "%" is not partitioned' , parent_relid::TEXT ;
980+ /* Check if this is a RANGE partition */
981+ IF part_type != 2 THEN
982+ RAISE EXCEPTION ' "%" is not a RANGE partition' , partition_relid::TEXT ;
987983 END IF;
988984
989985 /* Remove inheritance */
0 commit comments