postgresql/src/include
Thomas Munro 2fc7af5e96 Add basic infrastructure for 64 bit transaction IDs.
Instead of inferring epoch progress from xids and checkpoints,
introduce a 64 bit FullTransactionId type and use it to track xid
generation.  This fixes an unlikely bug where the epoch is reported
incorrectly if the range of active xids wraps around more than once
between checkpoints.

The only user-visible effect of this commit is to correct the epoch
used by txid_current() and txid_status(), also visible with
pg_controldata, in those rare circumstances.  It also creates some
basic infrastructure so that later patches can use 64 bit
transaction IDs in more places.

The new type is a struct that we pass by value, as a form of strong
typedef.  This prevents the sort of accidental confusion between
TransactionId and FullTransactionId that would be possible if we
were to use a plain old uint64.

Author: Thomas Munro
Reported-by: Amit Kapila
Reviewed-by: Andres Freund, Tom Lane, Heikki Linnakangas
Discussion: https://postgr.es/m/CAA4eK1%2BMv%2Bmb0HFfWM9Srtc6MVe160WFurXV68iAFMcagRZ0dQ%40mail.gmail.com
2019-03-28 18:12:20 +13:00
..
access Add basic infrastructure for 64 bit transaction IDs. 2019-03-28 18:12:20 +13:00
bootstrap Update copyright for 2019 2019-01-02 12:44:25 -05:00
catalog Add basic infrastructure for 64 bit transaction IDs. 2019-03-28 18:12:20 +13:00
commands Add progress reporting for CLUSTER and VACUUM FULL. 2019-03-25 10:59:04 -04:00
common Refactor more code logic to update the control file 2019-03-18 12:59:35 +09:00
datatype Update copyright for 2019 2019-01-02 12:44:25 -05:00
executor Transaction chaining 2019-03-24 11:33:02 +01:00
fe_utils pgbench: Remove \cset 2019-03-25 12:16:07 -03:00
foreign Store tuples for EvalPlanQual in slots, rather than as HeapTuples. 2019-03-01 10:37:57 -08:00
jit Renaming for new subscripting mechanism 2019-02-01 12:50:32 -03:00
lib Add IntegerSet, to hold large sets of 64-bit ints efficiently. 2019-03-22 13:21:45 +02:00
libpq Add new clientcert hba option verify-full 2019-03-09 12:19:47 -08:00
mb Update copyright for 2019 2019-01-02 12:44:25 -05:00
nodes Add support for multivariate MCV lists 2019-03-27 18:32:18 +01:00
optimizer Add support for multivariate MCV lists 2019-03-27 18:32:18 +01:00
parser Improve error reporting for DROP FUNCTION/PROCEDURE/AGGREGATE/ROUTINE. 2019-03-21 11:52:08 -04:00
partitioning Collations with nondeterministic comparison 2019-03-22 12:12:43 +01:00
port Fix previous MinGW fix. 2019-02-16 15:23:02 +00:00
portability Update copyright for 2019 2019-01-02 12:44:25 -05:00
postmaster Convert [autovacuum_]vacuum_cost_delay into floating-point GUCs. 2019-03-10 15:01:39 -04:00
regex Partial implementation of SQL/JSON path language 2019-03-16 12:16:48 +03:00
replication Add walreceiver API to get remote server version 2019-03-15 10:16:26 +01:00
rewrite Update copyright for 2019 2019-01-02 12:44:25 -05:00
snowball Update copyright for 2019 2019-01-02 12:44:25 -05:00
statistics Minor improvements for the multivariate MCV lists 2019-03-27 20:07:41 +01:00
storage Add basic infrastructure for 64 bit transaction IDs. 2019-03-28 18:12:20 +13:00
tcop Update copyright for 2019 2019-01-02 12:44:25 -05:00
tsearch Update copyright for 2019 2019-01-02 12:44:25 -05:00
utils tableam: Add tuple_{insert, delete, update, lock} and use. 2019-03-23 19:55:57 -07:00
.gitignore Refactor dlopen() support 2018-09-06 11:33:04 +02:00
c.h Add macro to cast away volatile without allowing changes to underlying type 2019-03-25 09:37:03 +01:00
fmgr.h Change function call information to be variable length. 2019-01-26 14:17:52 -08:00
funcapi.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
getaddrinfo.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
getopt_long.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
Makefile Get rid of jsonpath_gram.h and jsonpath_scanner.h 2019-03-20 11:13:34 +03:00
miscadmin.h Convert [autovacuum_]vacuum_cost_delay into floating-point GUCs. 2019-03-10 15:01:39 -04:00
pg_config.h.in Make use of compiler builtins and/or assembly for CLZ, CTZ, POPCNT. 2019-02-15 23:22:33 -05:00
pg_config.h.win32 Make use of compiler builtins and/or assembly for CLZ, CTZ, POPCNT. 2019-02-15 23:22:33 -05:00
pg_config_ext.h.in Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_ext.h.win32 Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_manual.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
pg_getopt.h Use our own getopt() on OpenBSD. 2019-01-18 15:06:26 -05:00
pg_trace.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
pgstat.h Add progress reporting for CLUSTER and VACUUM FULL. 2019-03-25 10:59:04 -04:00
pgtar.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
pgtime.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
port.h Cygwin and Mingw floating-point fixes. 2019-02-16 01:50:16 +00:00
postgres.h Change function call information to be variable length. 2019-01-26 14:17:52 -08:00
postgres_ext.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
postgres_fe.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
rusagestub.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
windowapi.h Update copyright for 2019 2019-01-02 12:44:25 -05:00