Skip to content

Instantly share code, notes, and snippets.

@gilfernandes
Created September 24, 2014 17:49
Show Gist options
  • Save gilfernandes/3bb207d0db7f5437763b to your computer and use it in GitHub Desktop.
Save gilfernandes/3bb207d0db7f5437763b to your computer and use it in GitHub Desktop.
CREATE OR REPLACE FUNCTION partitioned.transaction_insert_trigger()
RETURNS trigger AS
$BODY$
DECLARE
bucket integer;
BEGIN
bucket := partitioned.calcbucket(NEW.customer_id, 50);
INSERT INTO partitioned.bucket_debug VALUES (bucket, NEW.customer_id);
IF (bucket = 0) THEN
INSERT INTO partitioned.transaction_bucket_0 VALUES (NEW.*);
ELSIF (bucket = 1) THEN
INSERT INTO partitioned.transaction_bucket_1 VALUES (NEW.*);
ELSIF (bucket = 2) THEN
INSERT INTO partitioned.transaction_bucket_2 VALUES (NEW.*);
ELSIF (bucket = 3) THEN
INSERT INTO partitioned.transaction_bucket_3 VALUES (NEW.*);
ELSIF (bucket = 4) THEN
INSERT INTO partitioned.transaction_bucket_4 VALUES (NEW.*);
ELSIF (bucket = 5) THEN
INSERT INTO partitioned.transaction_bucket_5 VALUES (NEW.*);
ELSIF (bucket = 6) THEN
INSERT INTO partitioned.transaction_bucket_6 VALUES (NEW.*);
ELSIF (bucket = 7) THEN
INSERT INTO partitioned.transaction_bucket_7 VALUES (NEW.*);
ELSIF (bucket = 8) THEN
INSERT INTO partitioned.transaction_bucket_8 VALUES (NEW.*);
ELSIF (bucket = 9) THEN
INSERT INTO partitioned.transaction_bucket_9 VALUES (NEW.*);
ELSIF (bucket = 10) THEN
INSERT INTO partitioned.transaction_bucket_10 VALUES (NEW.*);
ELSIF (bucket = 11) THEN
INSERT INTO partitioned.transaction_bucket_11 VALUES (NEW.*);
ELSIF (bucket = 12) THEN
INSERT INTO partitioned.transaction_bucket_12 VALUES (NEW.*);
ELSIF (bucket = 13) THEN
INSERT INTO partitioned.transaction_bucket_13 VALUES (NEW.*);
ELSIF (bucket = 14) THEN
INSERT INTO partitioned.transaction_bucket_14 VALUES (NEW.*);
ELSIF (bucket = 15) THEN
INSERT INTO partitioned.transaction_bucket_15 VALUES (NEW.*);
ELSIF (bucket = 16) THEN
INSERT INTO partitioned.transaction_bucket_16 VALUES (NEW.*);
ELSIF (bucket = 17) THEN
INSERT INTO partitioned.transaction_bucket_17 VALUES (NEW.*);
ELSIF (bucket = 18) THEN
INSERT INTO partitioned.transaction_bucket_18 VALUES (NEW.*);
ELSIF (bucket = 19) THEN
INSERT INTO partitioned.transaction_bucket_19 VALUES (NEW.*);
ELSIF (bucket = 20) THEN
INSERT INTO partitioned.transaction_bucket_20 VALUES (NEW.*);
ELSIF (bucket = 21) THEN
INSERT INTO partitioned.transaction_bucket_21 VALUES (NEW.*);
ELSIF (bucket = 22) THEN
INSERT INTO partitioned.transaction_bucket_22 VALUES (NEW.*);
ELSIF (bucket = 23) THEN
INSERT INTO partitioned.transaction_bucket_23 VALUES (NEW.*);
ELSIF (bucket = 24) THEN
INSERT INTO partitioned.transaction_bucket_24 VALUES (NEW.*);
ELSIF (bucket = 25) THEN
INSERT INTO partitioned.transaction_bucket_25 VALUES (NEW.*);
ELSIF (bucket = 26) THEN
INSERT INTO partitioned.transaction_bucket_26 VALUES (NEW.*);
ELSIF (bucket = 27) THEN
INSERT INTO partitioned.transaction_bucket_27 VALUES (NEW.*);
ELSIF (bucket = 28) THEN
INSERT INTO partitioned.transaction_bucket_28 VALUES (NEW.*);
ELSIF (bucket = 29) THEN
INSERT INTO partitioned.transaction_bucket_29 VALUES (NEW.*);
ELSIF (bucket = 30) THEN
INSERT INTO partitioned.transaction_bucket_30 VALUES (NEW.*);
ELSIF (bucket = 31) THEN
INSERT INTO partitioned.transaction_bucket_31 VALUES (NEW.*);
ELSIF (bucket = 32) THEN
INSERT INTO partitioned.transaction_bucket_32 VALUES (NEW.*);
ELSIF (bucket = 33) THEN
INSERT INTO partitioned.transaction_bucket_33 VALUES (NEW.*);
ELSIF (bucket = 34) THEN
INSERT INTO partitioned.transaction_bucket_34 VALUES (NEW.*);
ELSIF (bucket = 35) THEN
INSERT INTO partitioned.transaction_bucket_35 VALUES (NEW.*);
ELSIF (bucket = 36) THEN
INSERT INTO partitioned.transaction_bucket_36 VALUES (NEW.*);
ELSIF (bucket = 37) THEN
INSERT INTO partitioned.transaction_bucket_37 VALUES (NEW.*);
ELSIF (bucket = 38) THEN
INSERT INTO partitioned.transaction_bucket_38 VALUES (NEW.*);
ELSIF (bucket = 39) THEN
INSERT INTO partitioned.transaction_bucket_39 VALUES (NEW.*);
ELSIF (bucket = 40) THEN
INSERT INTO partitioned.transaction_bucket_40 VALUES (NEW.*);
ELSIF (bucket = 41) THEN
INSERT INTO partitioned.transaction_bucket_41 VALUES (NEW.*);
ELSIF (bucket = 42) THEN
INSERT INTO partitioned.transaction_bucket_42 VALUES (NEW.*);
ELSIF (bucket = 43) THEN
INSERT INTO partitioned.transaction_bucket_43 VALUES (NEW.*);
ELSIF (bucket = 44) THEN
INSERT INTO partitioned.transaction_bucket_44 VALUES (NEW.*);
ELSIF (bucket = 45) THEN
INSERT INTO partitioned.transaction_bucket_45 VALUES (NEW.*);
ELSIF (bucket = 46) THEN
INSERT INTO partitioned.transaction_bucket_46 VALUES (NEW.*);
ELSIF (bucket = 47) THEN
INSERT INTO partitioned.transaction_bucket_47 VALUES (NEW.*);
ELSIF (bucket = 48) THEN
INSERT INTO partitioned.transaction_bucket_48 VALUES (NEW.*);
ELSIF (bucket = 49) THEN
INSERT INTO partitioned.transaction_bucket_49 VALUES (NEW.*);
ELSE
RAISE EXCEPTION 'Value out of range: ';
END IF;
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment