|
1 | 1 | /// The current database version
|
2 |
| -const databaseVersion = 5; |
| 2 | +const databaseVersion = 6; |
3 | 3 |
|
4 | 4 | /// This is the base database state that we expect at various schema versions.
|
5 | 5 | /// Generated by loading the specific library version, and exporting the schema.
|
@@ -133,6 +133,45 @@ const expectedState = <int, String>{
|
133 | 133 | ;INSERT INTO ps_migration(id, down_migrations) VALUES(3, '[{"sql":"DELETE FROM ps_migration WHERE id >= 3"},{"sql":"DROP TABLE ps_kv"}]')
|
134 | 134 | ;INSERT INTO ps_migration(id, down_migrations) VALUES(4, '[{"sql":"DELETE FROM ps_migration WHERE id >= 4"},{"sql":"ALTER TABLE ps_buckets DROP COLUMN op_checksum"},{"sql":"ALTER TABLE ps_buckets DROP COLUMN remove_operations"}]')
|
135 | 135 | ;INSERT INTO ps_migration(id, down_migrations) VALUES(5, '[{"sql":"SELECT powersync_drop_view(view.name)\n FROM sqlite_master view\n WHERE view.type = ''view''\n AND view.sql GLOB ''*-- powersync-auto-generated''"},{"sql":"ALTER TABLE ps_buckets RENAME TO ps_buckets_5"},{"sql":"ALTER TABLE ps_oplog RENAME TO ps_oplog_5"},{"sql":"CREATE TABLE ps_buckets(\n name TEXT PRIMARY KEY,\n last_applied_op INTEGER NOT NULL DEFAULT 0,\n last_op INTEGER NOT NULL DEFAULT 0,\n target_op INTEGER NOT NULL DEFAULT 0,\n add_checksum INTEGER NOT NULL DEFAULT 0,\n pending_delete INTEGER NOT NULL DEFAULT 0\n, op_checksum INTEGER NOT NULL DEFAULT 0, remove_operations INTEGER NOT NULL DEFAULT 0)"},{"sql":"INSERT INTO ps_buckets(name, last_applied_op, last_op, target_op, add_checksum, op_checksum, pending_delete)\n SELECT name, last_applied_op, last_op, target_op, add_checksum, op_checksum, pending_delete FROM ps_buckets_5"},{"sql":"CREATE TABLE ps_oplog(\n bucket TEXT NOT NULL,\n op_id INTEGER NOT NULL,\n op INTEGER NOT NULL,\n row_type TEXT,\n row_id TEXT,\n key TEXT,\n data TEXT,\n hash INTEGER NOT NULL,\n superseded INTEGER NOT NULL)"},{"sql":"CREATE INDEX ps_oplog_by_row ON ps_oplog (row_type, row_id) WHERE superseded = 0"},{"sql":"CREATE INDEX ps_oplog_by_opid ON ps_oplog (bucket, op_id)"},{"sql":"CREATE INDEX ps_oplog_by_key ON ps_oplog (bucket, key) WHERE superseded = 0"},{"sql":"INSERT INTO ps_oplog(bucket, op_id, op, row_type, row_id, key, data, hash, superseded)\n SELECT ps_buckets_5.name, oplog.op_id, 3, oplog.row_type, oplog.row_id, oplog.key, oplog.data, oplog.hash, 0\n FROM ps_oplog_5 oplog\n JOIN ps_buckets_5\n ON ps_buckets_5.id = oplog.bucket"},{"sql":"DROP TABLE ps_oplog_5"},{"sql":"DROP TABLE ps_buckets_5"},{"sql":"INSERT INTO ps_oplog(bucket, op_id, op, row_type, row_id, hash, superseded)\n SELECT ''$local'', 1, 4, r.row_type, r.row_id, 0, 0\n FROM ps_updated_rows r"},{"sql":"INSERT OR REPLACE INTO ps_buckets(name, pending_delete, last_op, target_op) VALUES(''$local'', 1, 0, 9223372036854775807)"},{"sql":"DROP TABLE ps_updated_rows"},{"sql":"DELETE FROM ps_migration WHERE id >= 5"}]')
|
| 136 | +''', |
| 137 | + 6: r''' |
| 138 | +;CREATE TABLE ps_buckets( |
| 139 | + id INTEGER PRIMARY KEY, |
| 140 | + name TEXT NOT NULL, |
| 141 | + last_applied_op INTEGER NOT NULL DEFAULT 0, |
| 142 | + last_op INTEGER NOT NULL DEFAULT 0, |
| 143 | + target_op INTEGER NOT NULL DEFAULT 0, |
| 144 | + add_checksum INTEGER NOT NULL DEFAULT 0, |
| 145 | + op_checksum INTEGER NOT NULL DEFAULT 0, |
| 146 | + pending_delete INTEGER NOT NULL DEFAULT 0 |
| 147 | +) STRICT |
| 148 | +;CREATE TABLE ps_crud (id INTEGER PRIMARY KEY AUTOINCREMENT, data TEXT, tx_id INTEGER) |
| 149 | +;CREATE TABLE ps_kv(key TEXT PRIMARY KEY NOT NULL, value BLOB) |
| 150 | +;CREATE TABLE ps_migration(id INTEGER PRIMARY KEY, down_migrations TEXT) |
| 151 | +;CREATE TABLE ps_oplog( |
| 152 | + bucket INTEGER NOT NULL, |
| 153 | + op_id INTEGER NOT NULL, |
| 154 | + row_type TEXT, |
| 155 | + row_id TEXT, |
| 156 | + key TEXT, |
| 157 | + data TEXT, |
| 158 | + hash INTEGER NOT NULL) STRICT |
| 159 | +;CREATE TABLE ps_tx(id INTEGER PRIMARY KEY NOT NULL, current_tx INTEGER, next_tx INTEGER) |
| 160 | +;CREATE TABLE ps_untyped(type TEXT NOT NULL, id TEXT NOT NULL, data TEXT, PRIMARY KEY (type, id)) |
| 161 | +;CREATE TABLE ps_updated_rows( |
| 162 | + row_type TEXT, |
| 163 | + row_id TEXT, |
| 164 | + PRIMARY KEY(row_type, row_id)) STRICT, WITHOUT ROWID |
| 165 | +;CREATE UNIQUE INDEX ps_buckets_name ON ps_buckets (name) |
| 166 | +;CREATE INDEX ps_oplog_key ON ps_oplog (bucket, key) |
| 167 | +;CREATE INDEX ps_oplog_opid ON ps_oplog (bucket, op_id) |
| 168 | +;CREATE INDEX ps_oplog_row ON ps_oplog (row_type, row_id) |
| 169 | +;INSERT INTO ps_migration(id, down_migrations) VALUES(1, null) |
| 170 | +;INSERT INTO ps_migration(id, down_migrations) VALUES(2, '[{"sql":"DELETE FROM ps_migration WHERE id >= 2","params":[]},{"sql":"DROP TABLE ps_tx","params":[]},{"sql":"ALTER TABLE ps_crud DROP COLUMN tx_id","params":[]}]') |
| 171 | +;INSERT INTO ps_migration(id, down_migrations) VALUES(3, '[{"sql":"DELETE FROM ps_migration WHERE id >= 3"},{"sql":"DROP TABLE ps_kv"}]') |
| 172 | +;INSERT INTO ps_migration(id, down_migrations) VALUES(4, '[{"sql":"DELETE FROM ps_migration WHERE id >= 4"},{"sql":"ALTER TABLE ps_buckets DROP COLUMN op_checksum"},{"sql":"ALTER TABLE ps_buckets DROP COLUMN remove_operations"}]') |
| 173 | +;INSERT INTO ps_migration(id, down_migrations) VALUES(5, '[{"sql":"SELECT powersync_drop_view(view.name)\n FROM sqlite_master view\n WHERE view.type = ''view''\n AND view.sql GLOB ''*-- powersync-auto-generated''"},{"sql":"ALTER TABLE ps_buckets RENAME TO ps_buckets_5"},{"sql":"ALTER TABLE ps_oplog RENAME TO ps_oplog_5"},{"sql":"CREATE TABLE ps_buckets(\n name TEXT PRIMARY KEY,\n last_applied_op INTEGER NOT NULL DEFAULT 0,\n last_op INTEGER NOT NULL DEFAULT 0,\n target_op INTEGER NOT NULL DEFAULT 0,\n add_checksum INTEGER NOT NULL DEFAULT 0,\n pending_delete INTEGER NOT NULL DEFAULT 0\n, op_checksum INTEGER NOT NULL DEFAULT 0, remove_operations INTEGER NOT NULL DEFAULT 0)"},{"sql":"INSERT INTO ps_buckets(name, last_applied_op, last_op, target_op, add_checksum, op_checksum, pending_delete)\n SELECT name, last_applied_op, last_op, target_op, add_checksum, op_checksum, pending_delete FROM ps_buckets_5"},{"sql":"CREATE TABLE ps_oplog(\n bucket TEXT NOT NULL,\n op_id INTEGER NOT NULL,\n op INTEGER NOT NULL,\n row_type TEXT,\n row_id TEXT,\n key TEXT,\n data TEXT,\n hash INTEGER NOT NULL,\n superseded INTEGER NOT NULL)"},{"sql":"CREATE INDEX ps_oplog_by_row ON ps_oplog (row_type, row_id) WHERE superseded = 0"},{"sql":"CREATE INDEX ps_oplog_by_opid ON ps_oplog (bucket, op_id)"},{"sql":"CREATE INDEX ps_oplog_by_key ON ps_oplog (bucket, key) WHERE superseded = 0"},{"sql":"INSERT INTO ps_oplog(bucket, op_id, op, row_type, row_id, key, data, hash, superseded)\n SELECT ps_buckets_5.name, oplog.op_id, 3, oplog.row_type, oplog.row_id, oplog.key, oplog.data, oplog.hash, 0\n FROM ps_oplog_5 oplog\n JOIN ps_buckets_5\n ON ps_buckets_5.id = oplog.bucket"},{"sql":"DROP TABLE ps_oplog_5"},{"sql":"DROP TABLE ps_buckets_5"},{"sql":"INSERT INTO ps_oplog(bucket, op_id, op, row_type, row_id, hash, superseded)\n SELECT ''$local'', 1, 4, r.row_type, r.row_id, 0, 0\n FROM ps_updated_rows r"},{"sql":"INSERT OR REPLACE INTO ps_buckets(name, pending_delete, last_op, target_op) VALUES(''$local'', 1, 0, 9223372036854775807)"},{"sql":"DROP TABLE ps_updated_rows"},{"sql":"DELETE FROM ps_migration WHERE id >= 5"}]') |
| 174 | +;INSERT INTO ps_migration(id, down_migrations) VALUES(6, '[{"sql":"DELETE FROM ps_migration WHERE id >= 6"}]') |
136 | 175 | '''
|
137 | 176 | };
|
138 | 177 |
|
@@ -180,13 +219,24 @@ const data1 = <int, String>{
|
180 | 219 | (2, 3, 'lists', 'l1', '', '{}', 3)
|
181 | 220 | ;INSERT INTO ps_updated_rows(row_type, row_id) VALUES
|
182 | 221 | ('lists', 'l2')
|
| 222 | +''', |
| 223 | + 6: r''' |
| 224 | +;INSERT INTO ps_buckets(id, name, last_applied_op, last_op, target_op, add_checksum, op_checksum, pending_delete) VALUES |
| 225 | + (1, 'b1', 0, 0, 0, 0, 120, 0), |
| 226 | + (2, 'b2', 0, 0, 0, 1005, 3, 0) |
| 227 | +;INSERT INTO ps_oplog(bucket, op_id, row_type, row_id, key, data, hash) VALUES |
| 228 | + (1, 1, 'todos', 't1', '', '{}', 100), |
| 229 | + (1, 2, 'todos', 't2', '', '{}', 20), |
| 230 | + (2, 3, 'lists', 'l1', '', '{}', 3) |
| 231 | +;INSERT INTO ps_updated_rows(row_type, row_id) VALUES |
| 232 | + ('lists', 'l2') |
183 | 233 | '''
|
184 | 234 | };
|
185 | 235 |
|
186 | 236 | /// data to test "down" migrations
|
187 | 237 | /// This is slightly different from the above,
|
188 | 238 | /// since we don't preserve all data in the migration process
|
189 |
| -const dataDown1 = <int, String>{ |
| 239 | +final dataDown1 = <int, String>{ |
190 | 240 | 2: r'''
|
191 | 241 | ;INSERT INTO ps_buckets(name, last_applied_op, last_op, target_op, add_checksum, pending_delete) VALUES
|
192 | 242 | ('$local', 0, 0, 9223372036854775807, 0, 1),
|
@@ -219,7 +269,8 @@ const dataDown1 = <int, String>{
|
219 | 269 | ('b1', 1, 3, 'todos', 't1', '', '{}', 100, 0),
|
220 | 270 | ('b1', 2, 3, 'todos', 't2', '', '{}', 20, 0),
|
221 | 271 | ('b2', 3, 3, 'lists', 'l1', '', '{}', 3, 0)
|
222 |
| -''' |
| 272 | +''', |
| 273 | + 5: data1[5]! |
223 | 274 | };
|
224 | 275 |
|
225 | 276 | final finalData1 = data1[databaseVersion]!;
|
|
0 commit comments