Andres Freund <and...@anarazel.de> writes: > On 2018-07-10 11:35:59 +1200, Thomas Munro wrote: >> I think it's probably a good idea to make it very explicit when moving >> between big and small transaction IDs, hence the including of the word >> 'big' in variable and function names and the use of a function-like >> macro (rather than implicit conversion, which C doesn't give me a good >> way to prevent). Otherwise there is a class of bug that is hidden for >> the first 2^32 transactions.
> You could have BigTransactionId (maybe renamed to FullTransactionId?) be > a struct type. That'd prevent such issues. Most compilers these days > should be more than good enough to optimize passing around an 8byte > struct by value... Or, perhaps, use a struct in assert builds and int64 otherwise? You could hide the ensuing notational differences in macros. regards, tom lane