More docs on DDL locking
authorCraig Ringer <craig@2ndquadrant.com>
Fri, 17 Apr 2015 07:23:59 +0000 (15:23 +0800)
committerCraig Ringer <craig@2ndquadrant.com>
Mon, 20 Apr 2015 13:17:55 +0000 (21:17 +0800)
doc/manual-ddl-replication.sgml

index 961805ae81d0450a75020ee7cb7a88a38dc636b0..c1eb29af640ad025841d4c3ea49cb10139558e0a 100644 (file)
  <para>
   This also makes DDL a heavier weight operation than on standalone
   PostgreSQL. Performing DDL will cancel currently running
-  transactions and stop new transactions from proceeding until
+  transactions and prevent new transactions from proceeding until
   replication has caught up and the DDL has been applied.
+  <important>
+   <para>
+    While DDL is in progress on any node in the system, statements that perform
+    writes (<literal>INSERT</literal>, <literal>UPDATE</literal>
+    <literal>DELETE</literal>, any DDL, etc) on that node or any other node will
+    <literal>ERROR</literal> with <literal>SQLSTATE</literal> <literal>55P03</literal>:
+    <programlisting>
+     ERROR: Database is locked against DDL operations
+    </programlisting>
+    This makes DDL a very heavyweight operation. Transactions performing DDL
+    should be short, should not be combined with lots of row changes, and
+    should avoid long running foreign key lookups, etc.
+   </para>
+  </important>
  </para>
 
  <sect1 id="ddl-replication-statements">