diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index 3bc4fed85e..0b02b22c05 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -4266,21 +4266,21 @@ CREATE TABLE measurement_y2008m02 PARTITION OF measurement TABLESPACE fasttablespace; - As an alternative, it is sometimes more convenient to create a - new table outside of the partition structure, and attach it as a - partition later. This allows new data to be loaded, checked, and - transformed prior to it appearing in the partitioned table. + As an alternative to creating new partitions, it is sometimes more + convenient to create a new table seperate from the partition structure + and attach it as a partition later. This allows new data to be loaded, + checked, and transformed prior to it appearing in the partitioned table. Moreover, the ATTACH PARTITION operation requires - only SHARE UPDATE EXCLUSIVE lock on the - partitioned table, as opposed to the ACCESS - EXCLUSIVE lock that is required by CREATE TABLE + only a SHARE UPDATE EXCLUSIVE lock on the + partitioned table rather than the ACCESS + EXCLUSIVE lock required by CREATE TABLE ... PARTITION OF, so it is more friendly to concurrent operations on the partitioned table; see ALTER TABLE ... ATTACH PARTITION for additional details. The - CREATE TABLE ... LIKE + CREATE TABLE ... LIKE command can be helpful to avoid tediously repeating the parent table's definition, for example: @@ -4321,7 +4321,7 @@ ALTER TABLE measurement ATTACH PARTITION measurement_y2008m02 Similarly, if the partitioned table has a DEFAULT partition, it is recommended to create a CHECK constraint which excludes the to-be-attached partition's constraint. If - this is not done then the DEFAULT partition will be + this is not done, the DEFAULT partition must be scanned to verify that it contains no records which should be located in the partition being attached. This operation will be performed whilst holding an ACCESS EXCLUSIVE lock on the @@ -4332,18 +4332,19 @@ ALTER TABLE measurement ATTACH PARTITION measurement_y2008m02 - As explained above, it is possible to create indexes on partitioned tables - so that they are applied automatically to the entire hierarchy. - This is very - convenient as not only will the existing partitions become indexed, but - any partitions created in the future will as well. One limitation is - that it's not possible to use the CONCURRENTLY - qualifier when creating such a partitioned index. To avoid long lock - times, it is possible to use CREATE INDEX ON ONLY + As mentioned above, it is possible to create indexes on partitioned tables + so that they are applied automatically to the entire hierarchy. This can + be very convenient as not only will all existing partitions be indexed, + but any future attached or created partitions will be indexed as well. + One limitation when creating new indexes on partitioned tables is that it + is not possible to use the CONCURRENTLY + qualifier when creating such a partitioned index. To avoid long + lock times, it is possible to use CREATE INDEX ON ONLY the partitioned table; such an index is marked invalid and the partitions - do not get the index applied automatically. The partition indexes can - then be created individually using CONCURRENTLY and - attached to the index on the parent using + do not get the index applied automatically. Instead, the indexes can + then be created individually on each partition using + CONCURRENTLY and attached to the + partitioned index on the parent using ALTER INDEX .. ATTACH PARTITION. Once indexes for all partitions are attached to the parent index, the parent index is marked valid automatically. Example: