Use SET TRANSACTION READ ONLY in pg_dump, if server supports it.
authorTom Lane <[email protected]>
Sat, 19 Jan 2013 22:56:40 +0000 (17:56 -0500)
committerTom Lane <[email protected]>
Sat, 19 Jan 2013 22:56:40 +0000 (17:56 -0500)
This currently does little except serve as documentation.  (The one case
where it has a performance benefit, SERIALIZABLE mode in 9.1 and up, was
already using READ ONLY mode.)  However, it's possible that it might have
performance benefits in future, and in any case it seems like good
practice since it would catch any accidentally non-read-only operations.

Pavan Deolasee

src/bin/pg_dump/pg_dump.c

index 9b71c75c334ea723107c4821bdd59738e47c5a2c..6295b5bf2cc77edc8e2c5fbff362cf633b46b6f0 100644 (file)
@@ -618,7 +618,14 @@ main(int argc, char **argv)
                else
                        ExecuteSqlStatement(fout,
                                                                "SET TRANSACTION ISOLATION LEVEL "
-                                                               "REPEATABLE READ");
+                                                               "REPEATABLE READ, READ ONLY");
+       }
+       else if (fout->remoteVersion >= 70400)
+       {
+               /* note: comma was not accepted in SET TRANSACTION before 8.0 */
+               ExecuteSqlStatement(fout,
+                                                       "SET TRANSACTION ISOLATION LEVEL "
+                                                       "SERIALIZABLE READ ONLY");
        }
        else
                ExecuteSqlStatement(fout,