Both functions advance the transaction ID, which modifies the system
state. Thus, they should be marked as VOLATILE.
Additionally, they call the AssignTransactionId function, which cannot
be invoked in parallel mode, so they should be marked as PARALLEL
UNSAFE.
Author: Yushi Ogiwara <
[email protected]>
Discussion: https://www.postgresql.org/message-id/
18f01e4fd46448f88c7a1363050a9955@oss.nttdata.com
\echo Use "CREATE EXTENSION xid_wraparound" to load this file. \quit
CREATE FUNCTION consume_xids(nxids bigint)
-RETURNS xid8 IMMUTABLE PARALLEL SAFE STRICT
+RETURNS xid8 VOLATILE PARALLEL UNSAFE STRICT
AS 'MODULE_PATHNAME' LANGUAGE C;
CREATE FUNCTION consume_xids_until(targetxid xid8)
-RETURNS xid8 IMMUTABLE PARALLEL SAFE STRICT
+RETURNS xid8 VOLATILE PARALLEL UNSAFE STRICT
AS 'MODULE_PATHNAME' LANGUAGE C;