diff options
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/parallel.sgml | 8 | ||||
-rw-r--r-- | doc/src/sgml/ref/create_function.sgml | 20 |
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 |