@@ -107,8 +107,7 @@ BEGIN
107
107
RETURN p_count;
108
108
109
109
EXCEPTION WHEN others THEN
110
- PERFORM @
[email protected] _remove_partitions(p_relation::
integer );
111
- RAISE EXCEPTION ' % %' , SQLERRM, SQLSTATE;
110
+ RAISE EXCEPTION ' %' , SQLERRM;
112
111
END
113
112
$$ LANGUAGE plpgsql;
114
113
@@ -188,6 +187,7 @@ BEGIN
188
187
/* Create triggers */
189
188
PERFORM @
[email protected] _range_insert_trigger(p_relation, p_attribute);
190
189
-- PERFORM create_hash_update_trigger(relation, attribute, partitions_count);
190
+
191
191
/* Notify backend about changes */
192
192
PERFORM @
[email protected] _create_partitions(p_relation::regclass::
oid );
193
193
@@ -197,8 +197,7 @@ BEGIN
197
197
RETURN p_count;
198
198
199
199
EXCEPTION WHEN others THEN
200
- PERFORM @
[email protected] _remove_partitions(p_relation::regclass::
integer );
201
- RAISE EXCEPTION ' % %' , SQLERRM, SQLSTATE;
200
+ RAISE EXCEPTION ' %' , SQLERRM;
202
201
END
203
202
$$ LANGUAGE plpgsql;
204
203
@@ -262,8 +261,7 @@ BEGIN
262
261
RETURN i;
263
262
264
263
EXCEPTION WHEN others THEN
265
- PERFORM @
[email protected] _remove_partitions(p_relation::regclass::
integer );
266
- RAISE EXCEPTION ' % %' , SQLERRM, SQLSTATE;
264
+ RAISE EXCEPTION ' %' , SQLERRM;
267
265
END
268
266
$$ LANGUAGE plpgsql;
269
267
@@ -322,8 +320,7 @@ BEGIN
322
320
RETURN i;
323
321
324
322
EXCEPTION WHEN others THEN
325
- PERFORM @
[email protected] _remove_partitions(p_relation::regclass::
integer );
326
- RAISE EXCEPTION ' % %' , SQLERRM, SQLSTATE;
323
+ RAISE EXCEPTION ' %' , SQLERRM;
327
324
END
328
325
$$ LANGUAGE plpgsql;
329
326
@@ -409,19 +406,19 @@ CREATE OR REPLACE FUNCTION @
[email protected] _single_range_partition(
409
406
RETURNS TEXT AS
410
407
$$
411
408
DECLARE
412
- v_part_num INT ;
409
+ v_part_num INT ;
413
410
v_child_relname TEXT ;
414
- v_plain_child_relname TEXT ;
411
+ v_plain_child_relname TEXT ;
415
412
v_attname TEXT ;
416
- v_sql TEXT ;
417
- v_cond TEXT ;
418
- v_plain_schema TEXT ;
419
- v_plain_relname TEXT ;
420
- v_child_relname_exists INTEGER := 1 ;
421
- v_seq_name TEXT ;
413
+ v_sql TEXT ;
414
+ v_cond TEXT ;
415
+ v_plain_schema TEXT ;
416
+ v_plain_relname TEXT ;
417
+ v_child_relname_exists INTEGER := 1 ;
418
+ v_seq_name TEXT ;
422
419
BEGIN
423
- v_attname :
= attname
FROM @
[email protected] _config
424
- WHERE relname::regclass = p_parent;
420
+ v_attname :
= attname
FROM @
[email protected] _config
421
+ WHERE relname::regclass = p_parent;
425
422
426
423
IF v_attname IS NULL THEN
427
424
RAISE EXCEPTION ' Table % is not partitioned' , quote_ident(p_parent::TEXT );
@@ -432,36 +429,36 @@ BEGIN
432
429
433
430
v_seq_name :
= @
[email protected] _sequence_name(v_plain_schema, v_plain_relname);
434
431
435
- /* get next value from sequence */
436
- LOOP
437
- v_part_num := nextval(v_seq_name);
438
- v_plain_child_relname := format(' %s_%s' , v_plain_relname, v_part_num);
439
- v_child_relname := format(' %s.%s' ,
440
- v_plain_schema,
441
- quote_ident(v_plain_child_relname));
442
- v_child_relname_exists := count (* )
443
- FROM pg_class
444
- WHERE relnamespace::regnamespace || ' .' || relname = v_child_relname
445
- LIMIT 1 ;
446
- EXIT WHEN v_child_relname_exists = 0 ;
447
- END LOOP;
448
-
449
- EXECUTE format(' CREATE TABLE %s (LIKE %s INCLUDING ALL)'
450
- , v_child_relname
451
- , p_parent);
452
-
453
- EXECUTE format(' ALTER TABLE %s INHERIT %s'
454
- , v_child_relname
455
- , p_parent);
456
-
457
- v_cond :
= @
[email protected] _range_condition(v_attname, p_start_value, p_end_value);
458
- v_sql := format(' ALTER TABLE %s ADD CONSTRAINT %s CHECK (%s)'
459
- , v_child_relname
460
- , quote_ident(format(' %s_%s_check' , v_plain_schema, v_plain_child_relname))
461
- , v_cond);
462
-
463
- EXECUTE v_sql;
464
- RETURN v_child_relname;
432
+ /* get next value from sequence */
433
+ LOOP
434
+ v_part_num := nextval(v_seq_name);
435
+ v_plain_child_relname := format(' %s_%s' , v_plain_relname, v_part_num);
436
+ v_child_relname := format(' %s.%s' ,
437
+ v_plain_schema,
438
+ quote_ident(v_plain_child_relname));
439
+ v_child_relname_exists := count (* )
440
+ FROM pg_class
441
+ WHERE relnamespace::regnamespace || ' .' || relname = v_child_relname
442
+ LIMIT 1 ;
443
+ EXIT WHEN v_child_relname_exists = 0 ;
444
+ END LOOP;
445
+
446
+ EXECUTE format(' CREATE TABLE %s (LIKE %s INCLUDING ALL)'
447
+ , v_child_relname
448
+ , p_parent);
449
+
450
+ EXECUTE format(' ALTER TABLE %s INHERIT %s'
451
+ , v_child_relname
452
+ , p_parent);
453
+
454
+ v_cond :
= @
[email protected] _range_condition(v_attname, p_start_value, p_end_value);
455
+ v_sql := format(' ALTER TABLE %s ADD CONSTRAINT %s CHECK (%s)'
456
+ , v_child_relname
457
+ , quote_ident(format(' %s_%s_check' , v_plain_schema, v_plain_child_relname))
458
+ , v_cond);
459
+
460
+ EXECUTE v_sql;
461
+ RETURN v_child_relname;
465
462
END
466
463
$$ LANGUAGE plpgsql;
467
464
@@ -743,7 +740,7 @@ BEGIN
743
740
RETURN v_part_name;
744
741
745
742
EXCEPTION WHEN others THEN
746
- RAISE EXCEPTION ' % % ' , SQLERRM, SQLSTATE ;
743
+ RAISE EXCEPTION ' %' , SQLERRM;
747
744
END
748
745
$$
749
746
LANGUAGE plpgsql;
@@ -817,7 +814,7 @@ BEGIN
817
814
RETURN v_part_name;
818
815
819
816
EXCEPTION WHEN others THEN
820
- RAISE EXCEPTION ' % % ' , SQLERRM, SQLSTATE ;
817
+ RAISE EXCEPTION ' %' , SQLERRM;
821
818
END
822
819
$$
823
820
LANGUAGE plpgsql;
@@ -887,7 +884,7 @@ BEGIN
887
884
RETURN v_part_name;
888
885
889
886
EXCEPTION WHEN others THEN
890
- RAISE EXCEPTION ' % % ' , SQLERRM, SQLSTATE ;
887
+ RAISE EXCEPTION ' %' , SQLERRM;
891
888
END
892
889
$$
893
890
LANGUAGE plpgsql;
@@ -926,7 +923,7 @@ BEGIN
926
923
RETURN v_part_name;
927
924
928
925
EXCEPTION WHEN others THEN
929
- RAISE EXCEPTION ' % % ' , SQLERRM, SQLSTATE ;
926
+ RAISE EXCEPTION ' %' , SQLERRM;
930
927
END
931
928
$$
932
929
LANGUAGE plpgsql;
@@ -959,15 +956,13 @@ BEGIN
959
956
/* Prevent concurrent partition management */
960
957
PERFORM @
[email protected] _partitions_lock();
961
958
962
- -- p_relation := @[email protected] _relname(p_relation);
963
-
964
959
IF @
[email protected] _overlap(p_relation::
oid , p_start_value, p_end_value)
!= FALSE THEN
965
960
RAISE EXCEPTION ' Specified range overlaps with existing partitions' ;
966
961
END IF;
967
962
968
- IF NOT @
[email protected] _relations_equality(p_relation, p_partition) THEN
969
- RAISE EXCEPTION ' Partition must have the exact same structure as parent' ;
970
- END IF;
963
+ IF NOT @
[email protected] _relations_equality(p_relation, p_partition) THEN
964
+ RAISE EXCEPTION ' Partition must have the exact same structure as parent' ;
965
+ END IF;
971
966
972
967
/* Set inheritance */
973
968
EXECUTE format(' ALTER TABLE %s INHERIT %s'
@@ -1001,7 +996,7 @@ BEGIN
1001
996
RETURN p_partition;
1002
997
1003
998
EXCEPTION WHEN others THEN
1004
- RAISE EXCEPTION ' % % ' , SQLERRM, SQLSTATE ;
999
+ RAISE EXCEPTION ' %' , SQLERRM;
1005
1000
END
1006
1001
$$
1007
1002
LANGUAGE plpgsql;
@@ -1042,7 +1037,7 @@ BEGIN
1042
1037
RETURN p_partition;
1043
1038
1044
1039
EXCEPTION WHEN others THEN
1045
- RAISE EXCEPTION ' % % ' , SQLERRM, SQLSTATE ;
1040
+ RAISE EXCEPTION ' %' , SQLERRM;
1046
1041
END
1047
1042
$$
1048
1043
LANGUAGE plpgsql;
0 commit comments