diff options
author | Adam Chlipala <adam@chlipala.net> | 2013-12-12 17:42:48 -0500 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2013-12-12 17:42:48 -0500 |
commit | a24c2bdaf85c3d4eef19783e95b11d1cf15add09 (patch) | |
tree | d3c882ae31c045044de6538db6dc9e13cf347f66 /src/postgres.sml | |
parent | 106d1b7275e44cf419665e92b2682e009b51f095 (diff) |
Start SQL transactions as read-only when possible, based on conservative program analysis
Diffstat (limited to 'src/postgres.sml')
-rw-r--r-- | src/postgres.sml | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/postgres.sml b/src/postgres.sml index 41529173..272097e7 100644 --- a/src/postgres.sml +++ b/src/postgres.sml @@ -402,11 +402,11 @@ fun init {dbstring, prepared = ss, tables, views, sequences} = newline, newline, - string "static int uw_db_begin(uw_context ctx) {", + string "static int uw_db_begin(uw_context ctx, int could_write) {", newline, string "PGconn *conn = uw_get_db(ctx);", newline, - string "PGresult *res = PQexec(conn, \"BEGIN ISOLATION LEVEL SERIALIZABLE\");", + string "PGresult *res = PQexec(conn, could_write ? \"BEGIN ISOLATION LEVEL SERIALIZABLE\" : \"BEGIN ISOLATION LEVEL SERIALIZABLE, READ ONLY\");", newline, newline, string "if (res == NULL) return 1;", |