<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>