<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/81d6ca25476e212cfc5de409b9ce7166b56087dd">https://github.com/macports/macports-base/commit/81d6ca25476e212cfc5de409b9ce7166b56087dd</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 81d6ca25 Enable pragma fullfsync on each reg_attach
</span>81d6ca25 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 81d6ca25476e212cfc5de409b9ce7166b56087dd
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon Apr 12 05:42:08 2021 +1000
<span style='display:block; white-space:pre;color:#404040;'> Enable pragma fullfsync on each reg_attach
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Turns out it's not persistent, unlike journal_mode = WAL.
</span>---
src/cregistry/registry.c | 26 ++++++++++++++++++++++++++
src/cregistry/registry.h | 1 +
src/registry2.0/registry.c | 1 +
3 files changed, 28 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cregistry/registry.c b/src/cregistry/registry.c
</span><span style='display:block; white-space:pre;color:#808080;'>index af91ee25..c78b63a9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cregistry/registry.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/cregistry/registry.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -169,6 +169,32 @@ int reg_close(reg_registry* reg, reg_error* errPtr) {
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/**
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Do some initial configuration of a registry object.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * @param [in] reg the registry to configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * @return true if success; false if failure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_configure(reg_registry* reg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int result = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* All this does currently is turn on fullfsync. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (sqlite3_prepare_v2(reg->db, "PRAGMA fullfsync = 1", -1, &stmt, NULL) == SQLITE_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int r;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sqlite3_step(stmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ r = sqlite3_reset(stmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (r == SQLITE_OK) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ result = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } while (r == SQLITE_BUSY);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (stmt) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sqlite3_finalize(stmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> /**
* Attaches a registry database to the registry object. Prior to calling this,
* the registry object is not actually connected to the registry. This function
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cregistry/registry.h b/src/cregistry/registry.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 52570701..acd3bd66 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cregistry/registry.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/cregistry/registry.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -85,6 +85,7 @@ typedef struct {
</span>
int reg_open(reg_registry** regPtr, reg_error* errPtr);
int reg_close(reg_registry* reg, reg_error* errPtr);
<span style='display:block; white-space:pre;background:#e0ffe0;'>+int reg_configure(reg_registry* reg);
</span>
int reg_attach(reg_registry* reg, const char* path, reg_error* errPtr);
int reg_detach(reg_registry* reg, reg_error* errPtr);
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/registry2.0/registry.c b/src/registry2.0/registry.c
</span><span style='display:block; white-space:pre;color:#808080;'>index f67973e9..f9bfad9a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/registry2.0/registry.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/registry2.0/registry.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -202,6 +202,7 @@ static int registry_open(ClientData clientData UNUSED, Tcl_Interp* interp,
</span> if (reg == NULL) {
return TCL_ERROR;
} else if (reg_attach(reg, path, &error)) {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ reg_configure(reg);
</span> return TCL_OK;
} else {
return registry_failed(interp, &error);
</pre><pre style='margin:0'>
</pre>