refactor(core,fuse): a node made here goes by its local id until it lands (schema 41)

A file or folder made on the mount used to get a minted `local~<ms>-<n>`
placeholder. It now gets `local~<lid>`, a function of the row it is given
first (`Db::add_local_row`), so the stand-in never changes and always leads
back to the row, and through it to the real uid once the node lands.
`Db::lid_of` reads it without a lookup.

Migration V41 rewrites the placeholders still stored to their row's
stand-in: the row and its node_json, its children, the ops on it or into
it (uid, parent, sidecar uid, a rename's original parent), and its pins.

Step 6a of the plan for 3.0.0 phase 3.
This commit is contained in:
nvrl committed 2026-10-04 12:32:20 +02:00
1 parent 3f74b95b34
commit e5f3f612f8
8 files changed
+312 -58

No files matched your search

+3 -2
View File
@@ -11,10 +11,11 @@ scratch (user data in `staging/` and `recovery/` is never touched by this).
## [Unreleased]
Schema: **40**. The queue table is rebuilt so an id is never given out twice; queued changes
Schema: **41**. The queue table is rebuilt so an id is never given out twice; queued changes
are kept. Queued changes get a column for the reason Drive refused them, and name their file
and folder by local id as well as by Drive's id. Stored files and folders name their parent
folder by local id too.
folder by local id too. A file or folder made on this machine that Drive does not have yet goes
by its local id, in the queue, the stored tree and pins alike.
### Added
- **Sync issues.** A change Drive refuses because the storage is full, access was taken away,