From: Tom Lane Date: Mon, 3 Dec 2007 04:59:55 +0000 (+0000) Subject: Improve partitioning example, per Itagaki Takahiro. X-Git-Tag: REL9_0_0~4425 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=57da4cca27ab8d693f1fd7ac5d0c95df2fb68cc7;p=pg-rex%2Fsyncrep.git Improve partitioning example, per Itagaki Takahiro. --- diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index dc60146001..41679a7967 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -1,4 +1,4 @@ - + Data Definition @@ -2466,8 +2466,9 @@ CREATE TABLE measurement_y2008m01 ( ) INHERITS (measurement); - We must add non-overlapping table constraints, so that our - table creation script becomes: + We must provide non-overlapping table constraints. Rather than + just creating the partition tables as above, the table creation + script should really be: CREATE TABLE measurement_y2006m02 ( @@ -2550,12 +2551,12 @@ CREATE TRIGGER insert_measurement_trigger CREATE OR REPLACE FUNCTION measurement_insert_trigger() RETURNS TRIGGER AS $$ BEGIN - IF ( logdate >= DATE '2006-02-01' AND logdate < DATE '2006-03-01' ) THEN + IF ( NEW.logdate >= DATE '2006-02-01' AND NEW.logdate < DATE '2006-03-01' ) THEN INSERT INTO measurement_y2006m02 VALUES (NEW.*); - ELSIF ( logdate >= DATE '2006-03-01' AND logdate < DATE '2006-04-01' ) THEN + ELSIF ( NEW.logdate >= DATE '2006-03-01' AND NEW.logdate < DATE '2006-04-01' ) THEN INSERT INTO measurement_y2006m03 VALUES (NEW.*); ... - ELSIF ( logdate >= DATE '2008-01-01' AND logdate < DATE '2008-02-01' ) THEN + ELSIF ( NEW.logdate >= DATE '2008-01-01' AND NEW.logdate < DATE '2008-02-01' ) THEN INSERT INTO measurement_y2008m01 VALUES (NEW.*); ELSE RAISE EXCEPTION 'Date out of range. Fix the measurement_insert_trigger() function!'; @@ -2576,6 +2577,15 @@ LANGUAGE plpgsql; it doesn't need to be updated as often, since branches can be added in advance of being needed. + + + + In practice it might be best to check the newest partition first, + if most inserts go into that partition. For simplicity we have + shown the trigger's tests in the same order as in other parts + of this example. + +