Просмотр исходного кода

fix(sqlite): avoid rowid on kv table (#10367)

No migration on this as it has no practical impact, just a slight
cleanup for new installations.

Also a refactor of how we declare single column primary keys, for
consistency.

Signed-off-by: Jakob Borg <[email protected]>
Jakob Borg 4 месяцев назад
Родитель
Сommit
f0180cb014

+ 2 - 3
internal/db/sqlite/sql/schema/common/10-schema.sql

@@ -6,9 +6,8 @@
 
 -- Schema migrations hold the list of historical migrations applied
 CREATE TABLE IF NOT EXISTS schemamigrations (
-    schema_version INTEGER NOT NULL,
+    schema_version INTEGER NOT NULL PRIMARY KEY,
     applied_at INTEGER NOT NULL, -- unix nanos
-    syncthing_version TEXT NOT NULL COLLATE BINARY,
-    PRIMARY KEY(schema_version)
+    syncthing_version TEXT NOT NULL COLLATE BINARY
 ) STRICT
 ;

+ 1 - 1
internal/db/sqlite/sql/schema/common/70-kv.sql

@@ -9,5 +9,5 @@
 CREATE TABLE IF NOT EXISTS kv (
     key TEXT NOT NULL PRIMARY KEY COLLATE BINARY,
     value BLOB NOT NULL
-) STRICT
+) STRICT, WITHOUT ROWID
 ;

+ 1 - 2
internal/db/sqlite/sql/schema/folder/30-indexids.sql

@@ -6,10 +6,9 @@
 
 -- 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,
+    device_idx INTEGER NOT NULL PRIMARY KEY,
     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
 ;

+ 2 - 3
internal/db/sqlite/sql/schema/folder/50-mtimes.sql

@@ -6,9 +6,8 @@
 
 --- Backing for the MtimeFS
 CREATE TABLE IF NOT EXISTS mtimes (
-    name TEXT NOT NULL,
+    name TEXT NOT NULL PRIMARY KEY,
     ondisk INTEGER NOT NULL, -- unix nanos
-    virtual INTEGER NOT NULL, -- unix nanos
-    PRIMARY KEY(name)
+    virtual INTEGER NOT NULL -- unix nanos
 ) STRICT, WITHOUT ROWID
 ;