Michail Nikolaev <michail.nikolaev@gmail.com> wrote:
> > Sorry, I missed the fact that your example can be executed inside BEGIN - END
> > block, in which case minRecoveryPoint won't advance after each command.
>
> No, the block is not executed as a single transaction, all commands
> are separated transactions (see below)
>
> > Actually I think that a commit record should be replayed
> > more often than XLOG_RUNNING_XACTS, shouldn't it?
>
> Yes, but replaying commit records DOES NOT affect minRecoveryPoint in
> almost all cases.
>
> UpdateMinRecoveryPoint is called by XLogFlush, but xact_redo_commit
> calls XLogFlush only in two cases:
> * DropRelationFiles is called (some relation are dropped)
> * If ForceSyncCommit was used on primary - few “heavy” commands, like
> DropTableSpace, CreateTableSpace, movedb, etc.
>
> But “regular” commit record is replayed without XLogFlush and, as
> result, without UpdateMinRecoveryPoint.
ok, I missed this. Thanks for explanation.
--
Antonin Houska
Web: https://www.cybertec-postgresql.com