Add configurable PRAGMA synchronous =
authorproller <proller@github.com>
Mon, 16 Sep 2013 22:09:28 +0000 (02:09 +0400)
committerproller <proller@github.com>
Mon, 16 Sep 2013 22:11:30 +0000 (02:11 +0400)
minetest.conf.example
src/database-sqlite3.cpp
src/defaultsettings.cpp

index b876ecab87ade6777e3f02013fe6336839a30620..8094100e596110f091ec0c869873618d016b9897 100644 (file)
 #max_objects_per_block = 49
 # Interval of saving important changes in the world
 #server_map_save_interval = 5.3
+# http://www.sqlite.org/pragma.html#pragma_synchronous only numeric values: 0 1 2
+#sqlite_synchronous = 2
 # To reduce lag, block transfers are slowed down when a player is building something.
 # This determines how long they are slowed down after placing or removing a node.
 #full_block_send_enable_min_time_from_building = 2.0
index 17484d48cdb742c74208b787732aa30a28092aca..9714d10351744ff5fd0b292adc7c66cc031a7e5f 100644 (file)
@@ -108,7 +108,16 @@ void Database_SQLite3::verifyDatabase() {
                
                if(needs_create)
                        createDatabase();
-       
+
+               std::string querystr = std::string("PRAGMA synchronous = ")
+                                + itos(g_settings->getU16("sqlite_synchronous"));
+               d = sqlite3_exec(m_database, querystr.c_str(), NULL, NULL, NULL);
+               if(d != SQLITE_OK) {
+                       infostream<<"WARNING: Database pragma set failed: "
+                                       <<sqlite3_errmsg(m_database)<<std::endl;
+                       throw FileNotGoodException("Cannot set pragma");
+               }
+
                d = sqlite3_prepare(m_database, "SELECT `data` FROM `blocks` WHERE `pos`=? LIMIT 1", -1, &m_database_read, NULL);
                if(d != SQLITE_OK) {
                        infostream<<"WARNING: SQLite3 database read statment failed to prepare: "<<sqlite3_errmsg(m_database)<<std::endl;
index 373a74746dd992211506c1f214d923480d03ee0b..3fbdad4f2018c343bb48c44ac39cb26a15353946 100644 (file)
@@ -191,6 +191,7 @@ void set_default_settings(Settings *settings)
        settings->setDefault("server_unload_unused_data_timeout", "29");
        settings->setDefault("max_objects_per_block", "49");
        settings->setDefault("server_map_save_interval", "5.3");
+       settings->setDefault("sqlite_synchronous", "2");
        settings->setDefault("full_block_send_enable_min_time_from_building", "2.0");
        settings->setDefault("dedicated_server_step", "0.1");
        settings->setDefault("ignore_world_load_errors", "false");