>From 4e4fcacf40e151b8a244ade82f0cf620f6233be2 Mon Sep 17 00:00:00 2001
From: Daniel Lidstrom <dlidstrom@gmail.com>
Date: Fri, 10 Sep 2010 13:19:38 +0200
Subject: [PATCH] Added possibility to configure sqlite synchronous state using 'pragma synchronous'.

---
 src/backends/sqlite3/session.cpp |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/backends/sqlite3/session.cpp b/src/backends/sqlite3/session.cpp
index b8e40f3..1c762b8 100644
--- a/src/backends/sqlite3/session.cpp
+++ b/src/backends/sqlite3/session.cpp
@@ -46,6 +46,7 @@ sqlite3_session_backend::sqlite3_session_backend(
     std::string const & connectString)
 {
     int timeout = 0;
+    std::string synchronous;
     std::string dbname(connectString);
     std::stringstream ssconn(connectString);
     while (!ssconn.eof() && ssconn.str().find('=') >= 0)
@@ -62,6 +63,10 @@ sqlite3_session_backend::sqlite3_session_backend(
             std::istringstream converter(val);
             converter >> timeout;
         }
+        else if ("synchronous" == key)
+        {
+            synchronous = val;
+        }
     }
 
     int res = sqlite3_open(dbname.c_str(), &conn_);
@@ -81,6 +86,13 @@ sqlite3_session_backend::sqlite3_session_backend(
         ss << "Failed to set busy timeout for connection. " << zErrMsg;
         throw soci_error(ss.str());
     }
+
+    if (!synchronous.empty())
+    {
+        std::string query = "pragma synchronous=" + synchronous;
+        std::string errMsg = "Query failed: " + query;
+        hardExec(conn_, query.c_str(), errMsg.c_str());
+    }
 }
 
 sqlite3_session_backend::~sqlite3_session_backend()
-- 
1.7.1

