Skip to content

Commit 0bb4f28

Browse files
committed
Migrate existing data.
1 parent ab4c377 commit 0bb4f28

File tree

1 file changed

+33
-6
lines changed

1 file changed

+33
-6
lines changed

crates/core/src/view_admin.rs

+33-6
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ INSERT INTO ps_migration(id, down_migrations)
276276
local_db
277277
.exec_safe(
278278
"\
279-
DROP TABLE ps_buckets;
280-
DROP TABLE ps_oplog;
279+
ALTER TABLE ps_buckets RENAME TO ps_buckets_old;
280+
ALTER TABLE ps_oplog RENAME TO ps_oplog_old;
281281
282282
CREATE TABLE ps_buckets(
283283
id INTEGER PRIMARY KEY,
@@ -301,16 +301,42 @@ CREATE TABLE ps_oplog(
301301
data TEXT,
302302
hash INTEGER NOT NULL) STRICT;
303303
304-
CREATE INDEX ps_oplog_by_row ON ps_oplog (row_type, row_id);
305-
CREATE INDEX ps_oplog_by_opid ON ps_oplog (bucket, op_id);
306-
CREATE INDEX ps_oplog_by_key ON ps_oplog (bucket, key);
304+
CREATE INDEX ps_oplog_row ON ps_oplog (row_type, row_id);
305+
CREATE INDEX ps_oplog_opid ON ps_oplog (bucket, op_id);
306+
CREATE INDEX ps_oplog_key ON ps_oplog (bucket, key);
307307
308308
CREATE TABLE ps_updated_rows(
309309
row_type TEXT,
310-
row_id TEXT);
310+
row_id TEXT) STRICT;
311311
312312
CREATE UNIQUE INDEX ps_updated_rows_row ON ps_updated_rows (row_type, row_id);
313313
314+
INSERT INTO ps_buckets(name, last_applied_op, last_op, target_op, add_checksum, op_checksum, pending_delete)
315+
SELECT name, last_applied_op, last_op, target_op, add_checksum, op_checksum, pending_delete FROM ps_buckets_old;
316+
317+
DROP TABLE ps_buckets_old;
318+
319+
INSERT INTO ps_oplog(bucket, op_id, row_type, row_id, key, data, hash)
320+
SELECT ps_buckets.id, oplog.op_id, oplog.row_type, oplog.row_id, oplog.key, oplog.data, oplog.hash
321+
FROM ps_oplog_old oplog
322+
JOIN ps_buckets
323+
ON ps_buckets.name = oplog.bucket
324+
WHERE oplog.superseded = 0 AND oplog.op = 3;
325+
326+
INSERT OR IGNORE INTO ps_updated_rows(row_type, row_id)
327+
SELECT row_type, row_id
328+
FROM ps_oplog_old oplog
329+
WHERE oplog.op != 3;
330+
331+
UPDATE ps_buckets SET add_checksum = 0xffffffff & (add_checksum + (
332+
SELECT IFNULL(SUM(oplog.hash), 0)
333+
FROM ps_oplog_old oplog
334+
WHERE oplog.bucket = ps_buckets.name
335+
AND (oplog.superseded = 1 OR oplog.op != 3)
336+
));
337+
338+
DROP TABLE ps_oplog_old;
339+
314340
INSERT INTO ps_migration(id, down_migrations)
315341
VALUES(5,
316342
json_array(
@@ -344,6 +370,7 @@ DELETE FROM ps_oplog;
344370
DELETE FROM ps_crud;
345371
DELETE FROM ps_buckets;
346372
DELETE FROM ps_untyped;
373+
DELETE FROM ps_updated_rows;
347374
DELETE FROM ps_kv WHERE key != 'client_id';
348375
",
349376
)?;

0 commit comments

Comments
 (0)