One concern that come into my mind while reading updated patch is about creating extra bool field in GlobalTransactionData structure. While this improves readability, it also increases size of that structure and that size have impact on performance on systems with many cores (say like 60-80). Probably one byte will not make measurable difference, but I think it is good idea to keep GXact as small as possible. As far as I understand the same logic was behind split of PGPROC to PGPROC+PGXACT in 9.2 (comment in proc.h:166)
I think padding will negate the effects of the additional bool.
If we want to reduce the size of the array GIDSIZE is currently 200, but XA says maximum 128 bytes.
Anybody know why that is set to 200?
Even though GlobalTransactionId and BranchQualifer have a maximum of 64 each, external clients may choose to encode the information, and thereby need more space,