maya
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
event_p2016_05_12_part_trig_func()
Parameters
Name
Type
Mode
Definition
DECLARE v_current_partition_id bigint; v_last_partition text := 'public.event_p2016_05_12_p46000'; v_id_position int; v_next_partition_id bigint; v_next_partition_name text; v_partition_created boolean; BEGIN IF TG_OP = 'INSERT' THEN IF NEW.iddevice >= 0 AND NEW.iddevice < 1000 THEN -- Child table for current values does not exist in this partition set, so write to parent RETURN NEW; ELSE RETURN NEW; END IF; v_current_partition_id := NEW.iddevice - (NEW.iddevice % 1000); IF (NEW.iddevice % 1000) > (1000 / 2) THEN v_id_position := (length(v_last_partition) - position('p_' in reverse(v_last_partition))) + 2; v_next_partition_id := (substring(v_last_partition from v_id_position)::bigint) + 1000; WHILE ((v_next_partition_id - v_current_partition_id) / 1000) <= 4 LOOP v_partition_created := public.create_partition_id('public.event_p2016_05_12', ARRAY[v_next_partition_id]); IF v_partition_created THEN PERFORM public.create_function_id('public.event_p2016_05_12'); PERFORM public.apply_constraints('public.event_p2016_05_12'); END IF; v_next_partition_id := v_next_partition_id + 1000; END LOOP; END IF; END IF; RETURN NULL; END