now() vs transaction_timestamp()
Konstantin Knizhnik <k.knizhnik@postgrespro.ru>
From: Konstantin Knizhnik <k.knizhnik@postgrespro.ru>
To: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2018-10-05T13:29:28Z
Lists: pgsql-hackers
Postgres documentation says that |"now()| is a traditional PostgreSQL equivalent to |transaction_timestamp()|". Also both use the same implementation. But them have different parallel safety property: postgres=# \df+ now List of functions Schema | Name | Result data type | Argument data types | Type | Volatility | Parallel | Owner | Security | Access privileges | Language | Source code | Description ------------+------+--------------------------+---------------------+------+------------+------------+----------+----------+-------------------+----------+ -------------+-------------------------- pg_catalog | now | timestamp with time zone | | func | stable | restricted | knizhnik | invoker | | internal | now | current transaction time (1 row) postgres=# \df+ transaction_timestamp List of functions Schema | Name | Result data type | Argument data types | Type | Volatility | Parallel | Owner | Security | Access privileg es | Language | Source code | Description ------------+-----------------------+--------------------------+---------------------+------+------------+----------+----------+----------+---------------- ---+----------+-------------+-------------------------- pg_catalog | transaction_timestamp | timestamp with time zone | | func | stable | safe | knizhnik | invoker | | internal | now | current transaction time (1 row) As a result using now() in query disable parallel execution while transaction_timestamp allows it. Was it done intentionally or it is just a bug? -- Konstantin Knizhnik Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
Commits
-
Propagate xactStartTimestamp and stmtStartTimestamp to parallel workers.
- bdc2e7a19af7 9.6.11 landed
- 58454d0bb07c 10.6 landed
- 3c9dd963cec6 9.5.15 landed
- 6bf278df891d 11.0 landed
- 07ee62ce9e50 12.0 landed