<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch release-2.10
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/ebfa6f4f9c9dfe0a08a4ae28cdcdba59b04eb315">https://github.com/macports/macports-base/commit/ebfa6f4f9c9dfe0a08a4ae28cdcdba59b04eb315</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit ebfa6f4f9c9dfe0a08a4ae28cdcdba59b04eb315
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed Oct 2 23:13:11 2024 +1000

<span style='display:block; white-space:pre;color:#404040;'>    Don't optimize a readonly database
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/71017
</span><span style='display:block; white-space:pre;color:#404040;'>    (cherry picked from commit c21957048e6aa4626b696324a8b0d87f2c90d20b)
</span>---
 src/cregistry/registry.c | 42 ++++++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 20 deletions(-)

<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 ac3d2e16f..b280764d7 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;'>@@ -604,28 +604,30 @@ int reg_checkpoint(reg_registry* reg, reg_error* errPtr) {
</span> int reg_optimize(reg_registry* reg, reg_error* errPtr)
 {
 #if SQLITE_VERSION_NUMBER >= 3018000
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    int result = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (sqlite3_prepare_v2(reg->db, "PRAGMA optimize", -1, &stmt, NULL) == SQLITE_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        int r;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        do {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            sqlite3_step(stmt);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            r = sqlite3_reset(stmt);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if (r == SQLITE_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                result = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        } while (r == SQLITE_BUSY);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (!result) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reg_sqlite_error(reg->db, errPtr, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (stmt) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        sqlite3_finalize(stmt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if (sqlite3_libversion_number() >= 3018000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            && sqlite3_db_readonly(reg->db, "registry") == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        int result = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if (sqlite3_prepare_v2(reg->db, "PRAGMA optimize", -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 (!result) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            reg_sqlite_error(reg->db, errPtr, NULL);
</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:#ffe0e0;'>-    return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return 1;
</span> #endif
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    return 1;
</span> }
 
 /**
</pre><pre style='margin:0'>

</pre>