@@ -91,6 +91,7 @@ DECLARE
9191v_rows_countINTEGER ;
9292v_maxp_start_value%TYPE;
9393v_cur_valuep_start_value%TYPE := p_start_value;
94+ p_end_valuep_start_value%TYPE;
9495iINTEGER ;
9596
9697BEGIN
@@ -132,12 +133,19 @@ BEGIN
132133 * and specifies partition count as 0 then do not check boundaries
133134*/
134135IF p_count!= 0 THEN
136+ /* compute right bound of partitioning through additions*/
137+ p_end_value := p_start_value;
138+ FOR iIN 1 ..p_count
139+ LOOP
140+ p_end_value := p_end_value+ p_interval;
141+ END LOOP;
142+
135143/* Check boundaries*/
136144EXECUTE format(' SELECT @extschema@.check_boundaries(' ' %s' ' ,' ' %s' ' ,' ' %s' ' ,' ' %s' ' ::%s)' ,
137145 parent_relid,
138146 p_attribute,
139147 p_start_value,
140- p_start_value + p_interval * p_count ,
148+ p_end_value ,
141149 pg_typeof(p_start_value));
142150END IF;
143151
@@ -190,6 +198,7 @@ DECLARE
190198v_rows_countINTEGER ;
191199v_maxp_start_value%TYPE;
192200v_cur_valuep_start_value%TYPE := p_start_value;
201+ p_end_valuep_start_value%TYPE;
193202iINTEGER ;
194203
195204BEGIN
@@ -235,11 +244,18 @@ BEGIN
235244 * and specifies partition count as 0 then do not check boundaries
236245*/
237246IF p_count!= 0 THEN
247+ /* compute right bound of partitioning through additions*/
248+ p_end_value := p_start_value;
249+ FOR iIN 1 ..p_count
250+ LOOP
251+ p_end_value := p_end_value+ p_interval;
252+ END LOOP;
253+
238254/* check boundaries*/
239255PERFORM @extschema@.check_boundaries(parent_relid,
240256 p_attribute,
241257 p_start_value,
242- p_start_value + p_interval * p_count );
258+ p_end_value );
243259END IF;
244260
245261/* Create sequence for child partitions names*/