@@ -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
282282CREATE 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
308308CREATE TABLE ps_updated_rows(
309309 row_type TEXT,
310- row_id TEXT);
310+ row_id TEXT) STRICT ;
311311
312312CREATE 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+
314340INSERT INTO ps_migration(id, down_migrations)
315341 VALUES(5,
316342 json_array(
@@ -344,6 +370,7 @@ DELETE FROM ps_oplog;
344370DELETE FROM ps_crud;
345371DELETE FROM ps_buckets;
346372DELETE FROM ps_untyped;
373+ DELETE FROM ps_updated_rows;
347374DELETE FROM ps_kv WHERE key != 'client_id';
348375" ,
349376 ) ?;
0 commit comments