aboutsummaryrefslogtreecommitdiff
path: root/src/namecache
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2018-12-11 19:27:34 +0100
committerChristian Grothoff <christian@grothoff.org>2018-12-11 19:27:34 +0100
commitc1dd4d02762d51d1ac4078407cda2796aff8faf4 (patch)
tree612004af9190770e9c75235005873c92afc862c4 /src/namecache
parentb362752b69f705754327dfb7e025260d97289ad9 (diff)
downloadgnunet-c1dd4d02762d51d1ac4078407cda2796aff8faf4.tar.gz
gnunet-c1dd4d02762d51d1ac4078407cda2796aff8faf4.zip
cache NICK results in namestore to avoid unnecessary load on the DB; improve sqlite DB style, use WAL for sqlite DB
Diffstat (limited to 'src/namecache')
-rw-r--r--src/namecache/plugin_namecache_sqlite.c63
1 files changed, 22 insertions, 41 deletions
diff --git a/src/namecache/plugin_namecache_sqlite.c b/src/namecache/plugin_namecache_sqlite.c
index f67831708..b355d37ba 100644
--- a/src/namecache/plugin_namecache_sqlite.c
+++ b/src/namecache/plugin_namecache_sqlite.c
@@ -168,6 +168,18 @@ create_indices (sqlite3 * dbh)
168static int 168static int
169database_setup (struct Plugin *plugin) 169database_setup (struct Plugin *plugin)
170{ 170{
171 struct GNUNET_SQ_ExecuteStatement es[] = {
172 GNUNET_SQ_make_try_execute ("PRAGMA temp_store=MEMORY"),
173 GNUNET_SQ_make_try_execute ("PRAGMA synchronous=NORMAL"),
174 GNUNET_SQ_make_try_execute ("PRAGMA legacy_file_format=OFF"),
175 GNUNET_SQ_make_try_execute ("PRAGMA auto_vacuum=INCREMENTAL"),
176 GNUNET_SQ_make_try_execute ("PRAGMA encoding=\"UTF-8\""),
177 GNUNET_SQ_make_try_execute ("PRAGMA locking_mode=EXCLUSIVE"),
178 GNUNET_SQ_make_try_execute ("PRAGMA page_size=4092"),
179 GNUNET_SQ_make_try_execute ("PRAGMA journal_mode=WAL"),
180 GNUNET_SQ_EXECUTE_STATEMENT_END
181 };
182
171 sqlite3_stmt *stmt; 183 sqlite3_stmt *stmt;
172 char *afsdir; 184 char *afsdir;
173#if ENULL_DEFINED 185#if ENULL_DEFINED
@@ -208,47 +220,16 @@ database_setup (struct Plugin *plugin)
208 sqlite3_errmsg (plugin->dbh)); 220 sqlite3_errmsg (plugin->dbh));
209 return GNUNET_SYSERR; 221 return GNUNET_SYSERR;
210 } 222 }
211 CHECK (SQLITE_OK == 223 if (GNUNET_OK !=
212 sqlite3_exec (plugin->dbh, 224 GNUNET_SQ_exec_statements (plugin->dbh,
213 "PRAGMA temp_store=MEMORY", 225 es))
214 NULL, NULL, 226 {
215 ENULL)); 227 GNUNET_break (0);
216 CHECK (SQLITE_OK == 228 LOG (GNUNET_ERROR_TYPE_ERROR,
217 sqlite3_exec (plugin->dbh, 229 _("Failed to setup database at `%s'\n"),
218 "PRAGMA synchronous=NORMAL", 230 plugin->fn);
219 NULL, NULL, 231 return GNUNET_SYSERR;
220 ENULL)); 232 }
221 CHECK (SQLITE_OK ==
222 sqlite3_exec (plugin->dbh,
223 "PRAGMA legacy_file_format=OFF",
224 NULL, NULL,
225 ENULL));
226 CHECK (SQLITE_OK ==
227 sqlite3_exec (plugin->dbh,
228 "PRAGMA auto_vacuum=INCREMENTAL",
229 NULL, NULL,
230 ENULL));
231 CHECK (SQLITE_OK ==
232 sqlite3_exec (plugin->dbh,
233 "PRAGMA encoding=\"UTF-8\"",
234 NULL, NULL,
235 ENULL));
236 CHECK (SQLITE_OK ==
237 sqlite3_exec (plugin->dbh,
238 "PRAGMA locking_mode=EXCLUSIVE",
239 NULL, NULL,
240 ENULL));
241 CHECK (SQLITE_OK ==
242 sqlite3_exec (plugin->dbh,
243 "PRAGMA page_size=4092",
244 NULL, NULL,
245 ENULL));
246 CHECK (SQLITE_OK ==
247 sqlite3_exec (plugin->dbh,
248 "PRAGMA journal_mode=WAL",
249 NULL, NULL,
250 ENULL));
251
252 CHECK (SQLITE_OK == 233 CHECK (SQLITE_OK ==
253 sqlite3_busy_timeout (plugin->dbh, 234 sqlite3_busy_timeout (plugin->dbh,
254 BUSY_TIMEOUT_MS)); 235 BUSY_TIMEOUT_MS));