> a transaction doesn't guarantee that all statements in it see the data at the same point in time
This depends on the transaction isolation level. If you use snapshot or serializable this should be the case (but you may have aborted transactions due to optimistic concurrency).