> Why do you say truncate is non-transactional? Something simple proves that it's not?
Right, I meant 'non-transactional' in the sense that "persisted changes" as you quoted them will also appear in the case of Truncate (MVCC-safety is more correct here). As David mention I also thought it was not transactional at all, but it seems it is in recent version or I am seeing ghosts. Regardless, it's definitely fits the description of what you are trying to be aware of when it comes to transactional behavior.
Consider starting a transaction in REPEATABLE READ, do a "begin", then nothing (because if you select you block the upcoming truncate). In a different session, do the truncation, commit it. Back to the REPEATABLE READ transaction, still open, you select, the data is gone. Therefore "persisted changes" is true.
Right, I meant 'non-transactional' in the sense that "persisted changes" as you quoted them will also appear in the case of Truncate (MVCC-safety is more correct here). As David mention I also thought it was not transactional at all, but it seems it is in recent version or I am seeing ghosts. Regardless, it's definitely fits the description of what you are trying to be aware of when it comes to transactional behavior.
Consider starting a transaction in REPEATABLE READ, do a "begin", then nothing (because if you select you block the upcoming truncate). In a different session, do the truncation, commit it. Back to the REPEATABLE READ transaction, still open, you select, the data is gone. Therefore "persisted changes" is true.