fix(opencode): queries open the database read-only without touching its sidecars (Issue #60, Linux item 5)
A read-write open checkpointed the WAL and deleted -wal/-shm on close; a plain mode=ro open created missing ones and left them. _ro_connect uses the sidecars only when both exist (a live writer keeps them) and reads the file as immutable otherwise. verify_artifact, _has_session, discover, _descendants and residual_artifacts (db_rows_naming takes a connect) use it; the purge's own writes are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
14d7a46181
commit
ac5f1154c7
3 files changed
+103
-8
No files matched your search
@@ -108,14 +108,15 @@ def scan_names(root: str, uuid: str, skip=()) -> list:
|
||||
return sorted(found)
|
||||
|
||||
|
||||
def db_rows_naming(db: str, uuid: str, columns=(), id_tables=()) -> list:
|
||||
def db_rows_naming(db: str, uuid: str, columns=(), id_tables=(), connect=None) -> list:
|
||||
""""<db> (<table>.<col>: <n> rows)" for every table holding rows of this
|
||||
conversation in one of `columns`, or in the id column of an `id_tables`
|
||||
(table, column) pair (Issue #31). Read-only; unreadable tables are skipped."""
|
||||
(table, column) pair (Issue #31). Read-only; unreadable tables are skipped.
|
||||
`connect(db)` opens the database (default: a mode=ro URI)."""
|
||||
if not _plausible_id(uuid) or not db or not os.path.isfile(db):
|
||||
return []
|
||||
try:
|
||||
conn = sqlite3.connect(f"file:{quote(os.path.abspath(db))}?mode=ro", uri=True)
|
||||
conn = connect(db) if connect else sqlite3.connect(f"file:{quote(os.path.abspath(db))}?mode=ro", uri=True)
|
||||
except Exception:
|
||||
return []
|
||||
found = []
|
||||
|
||||
Reference in new issue
Block a user