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