diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-12-11 19:27:34 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-12-11 19:27:34 +0100 |
commit | c1dd4d02762d51d1ac4078407cda2796aff8faf4 (patch) | |
tree | 612004af9190770e9c75235005873c92afc862c4 /src/namecache/plugin_namecache_sqlite.c | |
parent | b362752b69f705754327dfb7e025260d97289ad9 (diff) | |
download | gnunet-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/plugin_namecache_sqlite.c')
-rw-r--r-- | src/namecache/plugin_namecache_sqlite.c | 63 |
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) | |||
168 | static int | 168 | static int |
169 | database_setup (struct Plugin *plugin) | 169 | database_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)); |