mirror of
https://github.com/syncthing/syncthing.git
synced 2025-12-23 22:18:14 -05:00
This changes the database structure to use one database per folder, with a small main database to coordinate. Reverts the prior change to buffer all files in memory when pulling, meaning there is now a phase where the WAL file will grow significantly, at least for initial sync of folders with many directories. --------- Co-authored-by: bt90 <btom1990@googlemail.com>
23 lines
919 B
SQL
23 lines
919 B
SQL
-- Copyright (C) 2025 The Syncthing Authors.
|
|
--
|
|
-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
-- License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
-- You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
-- indexids holds the index ID and maximum sequence for a given device and folder
|
|
CREATE TABLE IF NOT EXISTS indexids (
|
|
device_idx INTEGER NOT NULL,
|
|
index_id TEXT NOT NULL COLLATE BINARY,
|
|
sequence INTEGER NOT NULL DEFAULT 0,
|
|
PRIMARY KEY(device_idx),
|
|
FOREIGN KEY(device_idx) REFERENCES devices(idx) ON DELETE CASCADE
|
|
) STRICT, WITHOUT ROWID
|
|
;
|
|
CREATE TRIGGER IF NOT EXISTS indexids_seq AFTER INSERT ON files
|
|
BEGIN
|
|
INSERT INTO indexids (device_idx, index_id, sequence)
|
|
VALUES (NEW.device_idx, "", COALESCE(NEW.remote_sequence, NEW.sequence))
|
|
ON CONFLICT DO UPDATE SET sequence = COALESCE(NEW.remote_sequence, NEW.sequence);
|
|
END
|
|
;
|