aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2024-03-25 16:30:36 +0100
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2024-03-25 16:30:36 +0100
commit374c7a2290429eac3217b0c7b0b485db9c2bcc72 (patch)
tree569f900a12d9a95d881f2dc45faf6ad285decdd9 /doc/src
parentb8528fe026b18976b5d5b4fcb066a8a55def3375 (diff)
downloadpostgresql-374c7a2290429eac3217b0c7b0b485db9c2bcc72.tar.gz
postgresql-374c7a2290429eac3217b0c7b0b485db9c2bcc72.zip
Allow specifying an access method for partitioned tables
It's now possible to specify a table access method via CREATE TABLE ... USING for a partitioned table, as well change it with ALTER TABLE ... SET ACCESS METHOD. Specifying an AM for a partitioned table lets the value be used for all future partitions created under it, closely mirroring the behavior of the TABLESPACE option for partitioned tables. Existing partitions are not modified. For a partitioned table with no AM specified, any new partitions are created with the default_table_access_method. Also add ALTER TABLE ... SET ACCESS METHOD DEFAULT, which reverts to the original state of using the default for new partitions. The relcache of partitioned tables is not changed: rd_tableam is not set, even if a partitioned table has a relam set. Author: Justin Pryzby <pryzby@telsasoft.com> Author: Soumyadeep Chakraborty <soumyadeep2007@gmail.com> Author: Michaƫl Paquier <michael@paquier.xyz> Reviewed-by: The authors themselves Discussion: https://postgr.es/m/CAE-ML+9zM4wJCGCBGv01k96qQ3gFv4WFcFy=zqPHKeaEFwwv6A@mail.gmail.com Discussion: https://postgr.es/m/20210308010707.GA29832%40telsasoft.com
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/catalogs.sgml10
-rw-r--r--doc/src/sgml/ref/alter_table.sgml18
-rw-r--r--doc/src/sgml/ref/create_table.sgml4
3 files changed, 25 insertions, 7 deletions
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml
index 29817fb33c6..096ddab481c 100644
--- a/doc/src/sgml/catalogs.sgml
+++ b/doc/src/sgml/catalogs.sgml
@@ -1988,9 +1988,13 @@ SCRAM-SHA-256$<replaceable>&lt;iteration count&gt;</replaceable>:<replaceable>&l
(references <link linkend="catalog-pg-am"><structname>pg_am</structname></link>.<structfield>oid</structfield>)
</para>
<para>
- If this is a table or an index, the access method used (heap,
- B-tree, hash, etc.); otherwise zero (zero occurs for sequences,
- as well as relations without storage, such as views)
+ The access method used to access this table or index.
+ Not meaningful if the relation is a sequence or
+ has no on-disk file,
+ except for partitioned tables, where, if set, it takes
+ precedence over <varname>default_table_access_method</varname>
+ when determining the access method to use for partitions created
+ when one is not specified in the creation command.
</para></entry>
</row>
diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml
index 96e3d776051..6cdcd779ef8 100644
--- a/doc/src/sgml/ref/alter_table.sgml
+++ b/doc/src/sgml/ref/alter_table.sgml
@@ -732,10 +732,20 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
<term><literal>SET ACCESS METHOD</literal></term>
<listitem>
<para>
- This form changes the access method of the table by rewriting it. See
- <xref linkend="tableam"/> for more information. Writing
- <literal>DEFAULT</literal> changes the access method of the table
- to <xref linkend="guc-default-table-access-method"/>.
+ This form changes the access method of the table by rewriting it
+ using the indicated access method; specifying
+ <literal>DEFAULT</literal> selects the access method set as the
+ <xref linkend="guc-default-table-access-method"/> configuration
+ parameter.
+ See <xref linkend="tableam"/> for more information.
+ </para>
+ <para>
+ When applied to a partitioned table, there is no data to rewrite,
+ but partitions created afterwards will default to the given access
+ method unless overridden by a <literal>USING</literal> clause.
+ Specifying <varname>DEFAULT</varname> removes a previous value,
+ causing future partitions to default to
+ <varname>default_table_access_method</varname>.
</para>
</listitem>
</varlistentry>
diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml
index 118c7053e60..dfb7822985e 100644
--- a/doc/src/sgml/ref/create_table.sgml
+++ b/doc/src/sgml/ref/create_table.sgml
@@ -1365,6 +1365,10 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
method is chosen for the new table. See <xref
linkend="guc-default-table-access-method"/> for more information.
</para>
+ <para>
+ When creating a partition, the table access method is the access method
+ of its partitioned table, if set.
+ </para>
</listitem>
</varlistentry>