Hello! Josh Curtis <[email protected]>: > This is definitely a bit more complex. It requires that SetNewSxactGlobalXmin > is never called when SxactGlobalXmin is invalid to prevent readers from > seeing an invalid transaction ID when they should see a valid one -- I think > this is the case now since before SetNewSxactGlobalXmin is called postgres > checks that PredXact->SxactGlobalXminCount > 0. I assume this entails that > SxactGlobalXmin is valid, but I have not checked every place the two > variables are modified.
Such logic feels fragile to me. Maybe add a special flag like 'PredXact->SxactGlobalSkipAllowed' which will be updated to 'true' by SetNewSxactGlobalXmin, and dropped to 'false' by functions affecting PredXact->activeList? But I prefer the first solution anyway. Best regards, Mikhail.
