Hi Stephen, On 2016/12/08 22:35, Stephen Frost wrote: >>> * The fact that there's no implementation of row movement should be >>> documented as a limitation. We should also look at removing that >>> limitation. >> >> Yes, something to improve. By the way, since we currently mention INSERT >> tuple-routing directly in the description of the partitioned tables in the >> CREATE TABLE command reference, is that also the place to list this >> particular limitation? Or is UPDATE command reference rather the correct >> place? > > Both.
Attached a documentation fix patch. Actually, there was no mention on the INSERT reference page of tuple-routing occurring in case of partitioned tables and also the possibility of an error if a *partition* is directly targeted in an INSERT. Mentioned that as well. Thanks, Amit
diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index 8bf8af302b..01abe71f84 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -275,7 +275,8 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI <para> Rows inserted into a partitioned table will be automatically routed to the correct partition. If no suitable partition exists, an error will - occur. + occur. Also, if updating a row in a given partition causes it to move + to another partition due to the new partition key, an error will occur. </para> <para> diff --git a/doc/src/sgml/ref/insert.sgml b/doc/src/sgml/ref/insert.sgml index 06f416039b..00c984d8d5 100644 --- a/doc/src/sgml/ref/insert.sgml +++ b/doc/src/sgml/ref/insert.sgml @@ -526,6 +526,17 @@ INSERT <replaceable>oid</replaceable> <replaceable class="parameter">count</repl updated by the command. </para> </refsect1> + + <refsect1> + <title>Notes</title> + + <para> + If the specified table is a partitioned table, each row is routed to + the appropriate partition and inserted into it. If the specified table + is a partition, an error will occur if one of the input rows violates + the partition constraint. + </para> + </refsect1> <refsect1> <title>Examples</title> diff --git a/doc/src/sgml/ref/update.sgml b/doc/src/sgml/ref/update.sgml index 2de0f4aad1..e86993b9cf 100644 --- a/doc/src/sgml/ref/update.sgml +++ b/doc/src/sgml/ref/update.sgml @@ -279,6 +279,13 @@ UPDATE <replaceable class="parameter">count</replaceable> sub-selects is safer, though often harder to read and slower than using a join. </para> + + <para> + In case of partitioned tables, updating a row might cause it to move + to a new partition due to the new partition key. An error will occur + in this case. Also, if the specified table is a partition, an error + will occur if the new row violates the partition constraint. + </para> </refsect1> <refsect1>
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers