54 lines
1.6 KiB
SQL
54 lines
1.6 KiB
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/.
|
||
|
|
|
||
|
|
-- Grab all unique names into the names table
|
||
|
|
|
||
|
|
INSERT INTO file_names (idx, name) SELECT DISTINCT null, name FROM files
|
||
|
|
;
|
||
|
|
|
||
|
|
-- Grab all unique versions into the versions table
|
||
|
|
|
||
|
|
INSERT INTO file_versions (idx, version) SELECT DISTINCT null, version FROM files
|
||
|
|
;
|
||
|
|
|
||
|
|
-- Create the new files table
|
||
|
|
|
||
|
|
DROP TABLE IF EXISTS files_v5
|
||
|
|
;
|
||
|
|
|
||
|
|
CREATE TABLE files_v5 (
|
||
|
|
device_idx INTEGER NOT NULL,
|
||
|
|
sequence INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||
|
|
remote_sequence INTEGER,
|
||
|
|
name_idx INTEGER NOT NULL, -- changed
|
||
|
|
type INTEGER NOT NULL,
|
||
|
|
modified INTEGER NOT NULL,
|
||
|
|
size INTEGER NOT NULL,
|
||
|
|
version_idx INTEGER NOT NULL, -- changed
|
||
|
|
deleted INTEGER NOT NULL,
|
||
|
|
local_flags INTEGER NOT NULL,
|
||
|
|
blocklist_hash BLOB,
|
||
|
|
FOREIGN KEY(device_idx) REFERENCES devices(idx) ON DELETE CASCADE,
|
||
|
|
FOREIGN KEY(name_idx) REFERENCES file_names(idx), -- added
|
||
|
|
FOREIGN KEY(version_idx) REFERENCES file_versions(idx) -- added
|
||
|
|
) STRICT
|
||
|
|
;
|
||
|
|
|
||
|
|
-- Populate the new files table and move it in place
|
||
|
|
|
||
|
|
INSERT INTO files_v5
|
||
|
|
SELECT f.device_idx, f.sequence, f.remote_sequence, n.idx as name_idx, f.type, f.modified, f.size, v.idx as version_idx, f.deleted, f.local_flags, f.blocklist_hash
|
||
|
|
FROM files f
|
||
|
|
INNER JOIN file_names n ON n.name = f.name
|
||
|
|
INNER JOIN file_versions v ON v.version = f.version
|
||
|
|
;
|
||
|
|
|
||
|
|
DROP TABLE files
|
||
|
|
;
|
||
|
|
|
||
|
|
ALTER TABLE files_v5 RENAME TO files
|
||
|
|
;
|