aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/parallel.sgml8
-rw-r--r--doc/src/sgml/ref/create_function.sgml20
2 files changed, 15 insertions, 13 deletions
diff --git a/doc/src/sgml/parallel.sgml b/doc/src/sgml/parallel.sgml
index 5acc9537d6f..dae9dd7f2f9 100644
--- a/doc/src/sgml/parallel.sgml
+++ b/doc/src/sgml/parallel.sgml
@@ -545,10 +545,10 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%';
</para>
<para>
- Functions and aggregates must be marked <literal>PARALLEL UNSAFE</literal> if
- they write to the database, access sequences, change the transaction state
- even temporarily (e.g., a PL/pgSQL function that establishes an
- <literal>EXCEPTION</literal> block to catch errors), or make persistent changes to
+ Functions and aggregates must be marked <literal>PARALLEL UNSAFE</literal>
+ if they write to the database, change the transaction state (other than by
+ using a subtransaction for error recovery), access sequences, or make
+ persistent changes to
settings. Similarly, functions must be marked <literal>PARALLEL
RESTRICTED</literal> if they access temporary tables, client connection state,
cursors, prepared statements, or miscellaneous backend-local state that
diff --git a/doc/src/sgml/ref/create_function.sgml b/doc/src/sgml/ref/create_function.sgml
index 863d99d1fc0..0d240484cd3 100644
--- a/doc/src/sgml/ref/create_function.sgml
+++ b/doc/src/sgml/ref/create_function.sgml
@@ -428,22 +428,24 @@ CREATE [ OR REPLACE ] FUNCTION
<term><literal>PARALLEL</literal></term>
<listitem>
- <para><literal>PARALLEL UNSAFE</literal> indicates that the function
- can't be executed in parallel mode and the presence of such a
+ <para>
+ <literal>PARALLEL UNSAFE</literal> indicates that the function
+ can't be executed in parallel mode; the presence of such a
function in an SQL statement forces a serial execution plan. This is
the default. <literal>PARALLEL RESTRICTED</literal> indicates that
- the function can be executed in parallel mode, but the execution is
- restricted to parallel group leader. <literal>PARALLEL SAFE</literal>
+ the function can be executed in parallel mode, but only in the parallel
+ group leader process. <literal>PARALLEL SAFE</literal>
indicates that the function is safe to run in parallel mode without
- restriction.
+ restriction, including in parallel worker processes.
</para>
<para>
Functions should be labeled parallel unsafe if they modify any database
- state, or if they make changes to the transaction such as using
- sub-transactions, or if they access sequences or attempt to make
- persistent changes to settings (e.g., <literal>setval</literal>). They should
- be labeled as parallel restricted if they access temporary tables,
+ state, change the transaction state (other than by using a
+ subtransaction for error recovery), access sequences (e.g., by
+ calling <literal>currval</literal>) or make persistent changes to
+ settings. They should
+ be labeled parallel restricted if they access temporary tables,
client connection state, cursors, prepared statements, or miscellaneous
backend-local state which the system cannot synchronize in parallel mode
(e.g., <literal>setseed</literal> cannot be executed other than by the group