I'm looking at the following code in pg_dump.c
/* * Start transaction-snapshot mode transaction to dump consistent data. */ ExecuteSqlStatement(fout,
"BEGIN"); if (fout->remoteVersion >= 90100) { if (serializable_deferrable) ExecuteSqlStatement(fout,
"SET TRANSACTION ISOLATION LEVEL " "SERIALIZABLE, READ ONLY,
DEFERRABLE"); else ExecuteSqlStatement(fout, "SET TRANSACTION ISOLATION
LEVEL" "REPEATABLE READ"); } else ExecuteSqlStatement(fout,
"SET TRANSACTION ISOLATION LEVEL SERIALIZABLE");
Is there a reason why we do not the RR transaction as READ ONLY above
? I understand that unlike in the case of SERIALIZABLE transaction, it
may not have any performance impact. But isn't it a good practice
anyways to guard against any unintended database modification while
taking a dump or a safe guard against any future optimizations for
read-only transactions ? More so because RR seems to the default for
pg_dump
Thanks,
Pavan