On Tue, Mar 26, 2019 at 12:58 PM Thomas Munro <thomas.munro@gmail.com> wrote:
> On Tue, Mar 26, 2019 at 3:23 AM Heikki Linnakangas <hlinnaka@iki.fi> wrote:
> > Looks good.
I did some testing and proof-reading and made a few minor changes:
* I tidied up the code that serialises transaction state. It was
already hammering round pegs into square holes, and the previous patch
made that even worse, so I added a new struct
SerializedTransactionState to do this properly.
* I open-coded Get{Current,Top}TransactionId[IfAny](), rather than
having them call the "Full" variants, so that nobody could accuse me
of adding an extra function call that might not be inlined. It's just
a couple of lines anyway.
* I kept the name GetNewTransactionId(), since it's referred to in
many places in comments etc. Previously I had called it
GetNewFullTransactionId() and had GetNewTransactionId() just call that
and truncate to 32 bits, but there wasn't much point without an
in-tree caller for the narrow version. If there is any out-of-tree
code calling this, it will now fail to compile thanks to our
non-convertible return type.
These are the patches I'm planning to push tomorrow.
I still need to look into Andres's suggestion about getting rid of
epoch from various user interfaces and showing 64 bit numbers. I
should probably also find a place in the relevant README to explain
this new scheme. I will post follow-up patches for those.
--
Thomas Munro
https://enterprisedb.com