1
- <!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.62 2006/09/20 01:20:38 neilc Exp $ -->
1
+ <!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.63 2006/09/20 21:30:20 tgl Exp $ -->
2
2
3
3
<chapter id="ddl">
4
4
<title>Data Definition</title>
@@ -2478,20 +2478,20 @@ CREATE TABLE measurement_y2006m01 ( ) INHERITS (measurement);
2478
2478
2479
2479
<programlisting>
2480
2480
CREATE 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' )
2482
2482
) INHERITS (measurement);
2483
2483
CREATE 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' )
2485
2485
) INHERITS (measurement);
2486
2486
...
2487
2487
CREATE 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' )
2489
2489
) INHERITS (measurement);
2490
2490
CREATE 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' )
2492
2492
) INHERITS (measurement);
2493
2493
CREATE 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' )
2495
2495
) INHERITS (measurement);
2496
2496
</programlisting>
2497
2497
</para>
@@ -2538,7 +2538,7 @@ DO INSTEAD
2538
2538
<programlisting>
2539
2539
CREATE RULE measurement_insert_y2004m02 AS
2540
2540
ON 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' )
2542
2542
DO INSTEAD
2543
2543
INSERT INTO measurement_y2004m02 VALUES ( NEW.city_id,
2544
2544
NEW.logdate,
@@ -2547,15 +2547,15 @@ DO INSTEAD
2547
2547
...
2548
2548
CREATE RULE measurement_insert_y2005m12 AS
2549
2549
ON 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' )
2551
2551
DO INSTEAD
2552
2552
INSERT INTO measurement_y2005m12 VALUES ( NEW.city_id,
2553
2553
NEW.logdate,
2554
2554
NEW.peaktemp,
2555
2555
NEW.unitsales );
2556
2556
CREATE RULE measurement_insert_y2006m01 AS
2557
2557
ON 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' )
2559
2559
DO INSTEAD
2560
2560
INSERT INTO measurement_y2006m01 VALUES ( NEW.city_id,
2561
2561
NEW.logdate,
@@ -2577,6 +2577,7 @@ DO INSTEAD
2577
2577
creating a new partition each month, so it may be wise to write a
2578
2578
script that generates the required DDL automatically.
2579
2579
</para>
2580
+ </sect2>
2580
2581
2581
2582
<sect2 id="ddl-partitioning-managing-partitions">
2582
2583
<title>Managing Partitions</title>
@@ -2624,7 +2625,7 @@ ALTER TABLE measurement_y2003mm02 NO INHERIT measurement;
2624
2625
2625
2626
<programlisting>
2626
2627
CREATE 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' )
2628
2629
) INHERITS (measurement);
2629
2630
</programlisting>
2630
2631
@@ -2637,7 +2638,7 @@ CREATE TABLE measurement_y2006m02 (
2637
2638
CREATE TABLE measurement_y2006m02 (LIKE measurement INCLUDING DEFAULTS INCLUDING CONSTRAINTS);
2638
2639
\COPY measurement_y2006m02 FROM 'measurement_y2006m02'
2639
2640
UPDATE ... ;
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' );
2641
2642
ALTER TABLE measurement_y2006m02 INHERIT measurement;
2642
2643
</programlisting>
2643
2644
</para>
@@ -2717,7 +2718,7 @@ UNION ALL SELECT * FROM measurement_y2006m01;
2717
2718
2718
2719
<programlisting>
2719
2720
SET 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';
2721
2722
</programlisting>
2722
2723
2723
2724
Without constraint exclusion, the above query would scan each of
@@ -2736,23 +2737,23 @@ SELECT count(*) FROM measurement WHERE logdate >= DATE '2006-01-01';
2736
2737
2737
2738
<programlisting>
2738
2739
SET 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';
2740
2741
2741
2742
QUERY PLAN
2742
2743
-----------------------------------------------------------------------------------------------
2743
2744
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)
2751
2752
...
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)
2756
2757
</programlisting>
2757
2758
2758
2759
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';
2763
2764
2764
2765
<programlisting>
2765
2766
SET 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';
2767
2768
QUERY PLAN
2768
2769
-----------------------------------------------------------------------------------------------
2769
2770
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)
2775
2776
</programlisting>
2776
2777
</para>
2777
2778
0 commit comments