@@ -138,7 +138,7 @@ BEGIN
138138 p_attribute,
139139 p_start_value,
140140 p_start_value + p_interval * p_count,
141- pg_typeof(p_start_value));
141+ @extschema@.get_base_type( pg_typeof(p_start_value)):: TEXT );
142142 END IF;
143143
144144 /* Create sequence for child partitions names */
@@ -153,7 +153,7 @@ BEGIN
153153 FOR i IN 1 ..p_count
154154 LOOP
155155 EXECUTE format(' SELECT @extschema@.create_single_range_partition($1, $2, $3::%s)' ,
156- pg_typeof(p_start_value))
156+ @extschema@.get_base_type( pg_typeof(p_start_value)):: TEXT )
157157 USING parent_relid, p_start_value, p_start_value + p_interval;
158158
159159 p_start_value := p_start_value + p_interval;
@@ -283,7 +283,7 @@ CREATE OR REPLACE FUNCTION @extschema@.create_partitions_from_range(
283283 p_start_value ANYELEMENT,
284284 p_end_value ANYELEMENT,
285285 p_interval ANYELEMENT,
286- partition_data BOOLEAN DEFAULT true)
286+ partition_data BOOLEAN DEFAULT true)
287287RETURNS INTEGER AS
288288$$
289289DECLARE
@@ -353,7 +353,7 @@ CREATE OR REPLACE FUNCTION @extschema@.create_partitions_from_range(
353353 p_start_value ANYELEMENT,
354354 p_end_value ANYELEMENT,
355355 p_interval INTERVAL,
356- partition_data BOOLEAN DEFAULT true)
356+ partition_data BOOLEAN DEFAULT true)
357357RETURNS INTEGER AS
358358$$
359359DECLARE
@@ -389,7 +389,7 @@ BEGIN
389389 WHILE p_start_value <= p_end_value
390390 LOOP
391391 EXECUTE format(' SELECT @extschema@.create_single_range_partition($1, $2, $3::%s);' ,
392- pg_typeof(p_start_value))
392+ @extschema@.get_base_type( pg_typeof(p_start_value)):: TEXT )
393393 USING parent_relid, p_start_value, p_start_value + p_interval;
394394
395395 p_start_value := p_start_value + p_interval;
@@ -588,7 +588,7 @@ DECLARE
588588 v_parent_relid2 REGCLASS;
589589 v_attname TEXT ;
590590 v_part_type INTEGER ;
591- v_atttype TEXT ;
591+ v_atttype REGTYPE ;
592592
593593BEGIN
594594 IF partition1 = partition2 THEN
@@ -623,10 +623,10 @@ BEGIN
623623 RAISE EXCEPTION ' Specified partitions aren' ' t RANGE partitions' ;
624624 END IF;
625625
626- v_atttype := @extschema@.get_attribute_type_name (partition1, v_attname);
626+ v_atttype := @extschema@.get_attribute_type (partition1, v_attname);
627627
628628 EXECUTE format(' SELECT @extschema@.merge_range_partitions_internal($1, $2, $3, NULL::%s)' ,
629- v_atttype)
629+ @extschema@.get_base_type( v_atttype):: TEXT )
630630 USING v_parent_relid1, partition1, partition2;
631631
632632 /* Tell backend to reload configuration */
@@ -713,7 +713,7 @@ RETURNS TEXT AS
713713$$
714714DECLARE
715715 v_attname TEXT ;
716- v_atttype TEXT ;
716+ v_atttype REGTYPE ;
717717 v_part_name TEXT ;
718718 v_interval TEXT ;
719719
@@ -730,12 +730,11 @@ BEGIN
730730 RAISE EXCEPTION ' Table "%" is not partitioned' , parent_relid::TEXT ;
731731 END IF;
732732
733- v_atttype := @extschema@.get_attribute_type_name (parent_relid, v_attname);
733+ v_atttype := @extschema@.get_attribute_type (parent_relid, v_attname);
734734
735735 EXECUTE
736- format(
737- ' SELECT @extschema@.append_partition_internal($1, $2, $3, ARRAY[]::%s[], $4)' ,
738- v_atttype)
736+ format(' SELECT @extschema@.append_partition_internal($1, $2, $3, ARRAY[]::%s[], $4)' ,
737+ @extschema@.get_base_type(v_atttype)::TEXT )
739738 USING
740739 parent_relid,
741740 v_atttype,
@@ -759,7 +758,7 @@ LANGUAGE plpgsql;
759758 */
760759CREATE OR REPLACE FUNCTION @extschema@.append_partition_internal(
761760 parent_relid REGCLASS,
762- p_atttype TEXT ,
761+ p_atttype REGTYPE ,
763762 p_interval TEXT ,
764763 p_range ANYARRAY DEFAULT NULL ,
765764 partition_name TEXT DEFAULT NULL )
@@ -775,17 +774,16 @@ BEGIN
775774
776775 p_range := @extschema@.get_range_by_idx(parent_relid, - 1 , 0 );
777776
778- IF @extschema@.is_date_type(p_atttype::regtype ) THEN
777+ IF @extschema@.is_date_type(p_atttype) THEN
779778 v_part_name := @extschema@.create_single_range_partition(
780779 parent_relid,
781780 p_range[2 ],
782781 p_range[2 ] + p_interval::interval,
783782 partition_name);
784783 ELSE
785784 EXECUTE
786- format(
787- ' SELECT @extschema@.create_single_range_partition($1, $2, $2 + $3::%s, $4)' ,
788- p_atttype)
785+ format(' SELECT @extschema@.create_single_range_partition($1, $2, $2 + $3::%s, $4)' ,
786+ @extschema@.get_base_type(p_atttype)::TEXT )
789787 USING
790788 parent_relid,
791789 p_range[2 ],
@@ -811,7 +809,7 @@ RETURNS TEXT AS
811809$$
812810DECLARE
813811 v_attname TEXT ;
814- v_atttype TEXT ;
812+ v_atttype REGTYPE ;
815813 v_part_name TEXT ;
816814 v_interval TEXT ;
817815
@@ -825,12 +823,11 @@ BEGIN
825823 RAISE EXCEPTION ' Table "%" is not partitioned' , parent_relid::TEXT ;
826824 END IF;
827825
828- v_atttype := @extschema@.get_attribute_type_name (parent_relid, v_attname);
826+ v_atttype := @extschema@.get_attribute_type (parent_relid, v_attname);
829827
830828 EXECUTE
831- format(
832- ' SELECT @extschema@.prepend_partition_internal($1, $2, $3, ARRAY[]::%s[], $4)' ,
833- v_atttype)
829+ format(' SELECT @extschema@.prepend_partition_internal($1, $2, $3, ARRAY[]::%s[], $4)' ,
830+ @extschema@.get_base_type(v_atttype)::TEXT )
834831 USING
835832 parent_relid,
836833 v_atttype,
@@ -854,7 +851,7 @@ LANGUAGE plpgsql;
854851 */
855852CREATE OR REPLACE FUNCTION @extschema@.prepend_partition_internal(
856853 parent_relid REGCLASS,
857- p_atttype TEXT ,
854+ p_atttype REGTYPE ,
858855 p_interval TEXT ,
859856 p_range ANYARRAY DEFAULT NULL ,
860857 partition_name TEXT DEFAULT NULL )
@@ -870,17 +867,16 @@ BEGIN
870867
871868 p_range := @extschema@.get_range_by_idx(parent_relid, 0 , 0 );
872869
873- IF @extschema@.is_date_type(p_atttype::regtype ) THEN
870+ IF @extschema@.is_date_type(p_atttype) THEN
874871 v_part_name := @extschema@.create_single_range_partition(
875872 parent_relid,
876873 p_range[1 ] - p_interval::interval,
877874 p_range[1 ],
878875 partition_name);
879876 ELSE
880877 EXECUTE
881- format(
882- ' SELECT @extschema@.create_single_range_partition($1, $2 - $3::%s, $2, $4)' ,
883- p_atttype)
878+ format(' SELECT @extschema@.create_single_range_partition($1, $2 - $3::%s, $2, $4)' ,
879+ @extschema@.get_base_type(p_atttype)::TEXT )
884880 USING
885881 parent_relid,
886882 p_range[1 ],
0 commit comments