1- <!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.62 2006/09/2001:20:38 neilc Exp $ -->
1+ <!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.63 2006/09/2021:30:20 tgl Exp $ -->
22
33<chapter id="ddl">
44 <title>Data Definition</title>
@@ -2478,20 +2478,20 @@ CREATE TABLE measurement_y2006m01 ( ) INHERITS (measurement);
24782478
24792479 <programlisting>
24802480CREATE TABLE measurement_y2004m02 (
2481- CHECK ( logdate> = DATE '2004-02-01' AND logdate< DATE '2004-03-01' )
2481+ CHECK ( logdate> = DATE '2004-02-01' AND logdate< DATE '2004-03-01' )
24822482) INHERITS (measurement);
24832483CREATE TABLE measurement_y2004m03 (
2484- CHECK ( logdate> = DATE '2004-03-01' AND logdate< DATE '2004-04-01' )
2484+ CHECK ( logdate> = DATE '2004-03-01' AND logdate< DATE '2004-04-01' )
24852485) INHERITS (measurement);
24862486...
24872487CREATE TABLE measurement_y2005m11 (
2488- CHECK ( logdate> = DATE '2005-11-01' AND logdate< DATE '2005-12-01' )
2488+ CHECK ( logdate> = DATE '2005-11-01' AND logdate< DATE '2005-12-01' )
24892489) INHERITS (measurement);
24902490CREATE TABLE measurement_y2005m12 (
2491- CHECK ( logdate> = DATE '2005-12-01' AND logdate< DATE '2006-01-01' )
2491+ CHECK ( logdate> = DATE '2005-12-01' AND logdate< DATE '2006-01-01' )
24922492) INHERITS (measurement);
24932493CREATE TABLE measurement_y2006m01 (
2494- CHECK ( logdate> = DATE '2006-01-01' AND logdate< DATE '2006-02-01' )
2494+ CHECK ( logdate> = DATE '2006-01-01' AND logdate< DATE '2006-02-01' )
24952495) INHERITS (measurement);
24962496</programlisting>
24972497 </para>
@@ -2538,7 +2538,7 @@ DO INSTEAD
25382538<programlisting>
25392539CREATE RULE measurement_insert_y2004m02 AS
25402540ON INSERT TO measurement WHERE
2541- ( logdate> = DATE '2004-02-01' AND logdate< DATE '2004-03-01' )
2541+ ( logdate> = DATE '2004-02-01' AND logdate< DATE '2004-03-01' )
25422542DO INSTEAD
25432543 INSERT INTO measurement_y2004m02 VALUES ( NEW.city_id,
25442544 NEW.logdate,
@@ -2547,15 +2547,15 @@ DO INSTEAD
25472547...
25482548CREATE RULE measurement_insert_y2005m12 AS
25492549ON INSERT TO measurement WHERE
2550- ( logdate> = DATE '2005-12-01' AND logdate< DATE '2006-01-01' )
2550+ ( logdate> = DATE '2005-12-01' AND logdate< DATE '2006-01-01' )
25512551DO INSTEAD
25522552 INSERT INTO measurement_y2005m12 VALUES ( NEW.city_id,
25532553 NEW.logdate,
25542554 NEW.peaktemp,
25552555 NEW.unitsales );
25562556CREATE RULE measurement_insert_y2006m01 AS
25572557ON INSERT TO measurement WHERE
2558- ( logdate> = DATE '2006-01-01' AND logdate< DATE '2006-02-01' )
2558+ ( logdate> = DATE '2006-01-01' AND logdate< DATE '2006-02-01' )
25592559DO INSTEAD
25602560 INSERT INTO measurement_y2006m01 VALUES ( NEW.city_id,
25612561 NEW.logdate,
@@ -2577,6 +2577,7 @@ DO INSTEAD
25772577 creating a new partition each month, so it may be wise to write a
25782578 script that generates the required DDL automatically.
25792579 </para>
2580+ </sect2>
25802581
25812582 <sect2 id="ddl-partitioning-managing-partitions">
25822583 <title>Managing Partitions</title>
@@ -2624,7 +2625,7 @@ ALTER TABLE measurement_y2003mm02 NO INHERIT measurement;
26242625
26252626<programlisting>
26262627CREATE TABLE measurement_y2006m02 (
2627- CHECK ( logdate> = DATE '2006-02-01' AND logdate< DATE '2006-03-01' )
2628+ CHECK ( logdate> = DATE '2006-02-01' AND logdate< DATE '2006-03-01' )
26282629) INHERITS (measurement);
26292630</programlisting>
26302631
@@ -2637,7 +2638,7 @@ CREATE TABLE measurement_y2006m02 (
26372638CREATE TABLE measurement_y2006m02 (LIKE measurement INCLUDING DEFAULTS INCLUDING CONSTRAINTS);
26382639\COPY measurement_y2006m02 FROM 'measurement_y2006m02'
26392640UPDATE ... ;
2640- ALTER TABLE measurement_y2006m02 ADD CONSTRAINT y2006m02 CHECK ( logdate> = DATE '2006-02-01' AND logdate< DATE '2006-03-01' );
2641+ ALTER TABLE measurement_y2006m02 ADD CONSTRAINT y2006m02 CHECK ( logdate> = DATE '2006-02-01' AND logdate< DATE '2006-03-01' );
26412642ALTER TABLE measurement_y2006m02 INHERIT measurement;
26422643</programlisting>
26432644 </para>
@@ -2717,7 +2718,7 @@ UNION ALL SELECT * FROM measurement_y2006m01;
27172718
27182719<programlisting>
27192720SET constraint_exclusion = on;
2720- SELECT count(*) FROM measurement WHERE logdate> = DATE '2006-01-01';
2721+ SELECT count(*) FROM measurement WHERE logdate> = DATE '2006-01-01';
27212722</programlisting>
27222723
27232724 Without constraint exclusion, the above query would scan each of
@@ -2736,23 +2737,23 @@ SELECT count(*) FROM measurement WHERE logdate >= DATE '2006-01-01';
27362737
27372738<programlisting>
27382739SET constraint_exclusion = off;
2739- EXPLAIN SELECT count(*) FROM measurement WHERE logdate> = DATE '2006-01-01';
2740+ EXPLAIN SELECT count(*) FROM measurement WHERE logdate> = DATE '2006-01-01';
27402741
27412742 QUERY PLAN
27422743-----------------------------------------------------------------------------------------------
27432744 Aggregate (cost=158.66..158.68 rows=1 width=0)
2744- -> Append (cost=0.00..151.88 rows=2715 width=0)
2745- -> Seq Scan on measurement (cost=0.00..30.38 rows=543 width=0)
2746- Filter: (logdate> = '2006-01-01'::date)
2747- -> Seq Scan on measurement_y2004m02 measurement (cost=0.00..30.38 rows=543 width=0)
2748- Filter: (logdate> = '2006-01-01'::date)
2749- -> Seq Scan on measurement_y2004m03 measurement (cost=0.00..30.38 rows=543 width=0)
2750- Filter: (logdate> = '2006-01-01'::date)
2745+ -> Append (cost=0.00..151.88 rows=2715 width=0)
2746+ -> Seq Scan on measurement (cost=0.00..30.38 rows=543 width=0)
2747+ Filter: (logdate> = '2006-01-01'::date)
2748+ -> Seq Scan on measurement_y2004m02 measurement (cost=0.00..30.38 rows=543 width=0)
2749+ Filter: (logdate> = '2006-01-01'::date)
2750+ -> Seq Scan on measurement_y2004m03 measurement (cost=0.00..30.38 rows=543 width=0)
2751+ Filter: (logdate> = '2006-01-01'::date)
27512752...
2752- -> Seq Scan on measurement_y2005m12 measurement (cost=0.00..30.38 rows=543 width=0)
2753- Filter: (logdate> = '2006-01-01'::date)
2754- -> Seq Scan on measurement_y2006m01 measurement (cost=0.00..30.38 rows=543 width=0)
2755- Filter: (logdate> = '2006-01-01'::date)
2753+ -> Seq Scan on measurement_y2005m12 measurement (cost=0.00..30.38 rows=543 width=0)
2754+ Filter: (logdate> = '2006-01-01'::date)
2755+ -> Seq Scan on measurement_y2006m01 measurement (cost=0.00..30.38 rows=543 width=0)
2756+ Filter: (logdate> = '2006-01-01'::date)
27562757</programlisting>
27572758
27582759 Some or all of the partitions might use index scans instead of
@@ -2763,15 +2764,15 @@ EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2006-01-01';
27632764
27642765<programlisting>
27652766SET constraint_exclusion = on;
2766- EXPLAIN SELECT count(*) FROM measurement WHERE logdate> = DATE '2006-01-01';
2767+ EXPLAIN SELECT count(*) FROM measurement WHERE logdate> = DATE '2006-01-01';
27672768 QUERY PLAN
27682769-----------------------------------------------------------------------------------------------
27692770 Aggregate (cost=63.47..63.48 rows=1 width=0)
2770- -> Append (cost=0.00..60.75 rows=1086 width=0)
2771- -> Seq Scan on measurement (cost=0.00..30.38 rows=543 width=0)
2772- Filter: (logdate> = '2006-01-01'::date)
2773- -> Seq Scan on measurement_y2006m01 measurement (cost=0.00..30.38 rows=543 width=0)
2774- Filter: (logdate> = '2006-01-01'::date)
2771+ -> Append (cost=0.00..60.75 rows=1086 width=0)
2772+ -> Seq Scan on measurement (cost=0.00..30.38 rows=543 width=0)
2773+ Filter: (logdate> = '2006-01-01'::date)
2774+ -> Seq Scan on measurement_y2006m01 measurement (cost=0.00..30.38 rows=543 width=0)
2775+ Filter: (logdate> = '2006-01-01'::date)
27752776</programlisting>
27762777 </para>
27772778