@@ -276,8 +276,8 @@ INSERT INTO ps_migration(id, down_migrations)
276
276
local_db
277
277
. exec_safe (
278
278
"\
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 ;
281
281
282
282
CREATE TABLE ps_buckets(
283
283
id INTEGER PRIMARY KEY,
@@ -301,16 +301,42 @@ CREATE TABLE ps_oplog(
301
301
data TEXT,
302
302
hash INTEGER NOT NULL) STRICT;
303
303
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);
307
307
308
308
CREATE TABLE ps_updated_rows(
309
309
row_type TEXT,
310
- row_id TEXT);
310
+ row_id TEXT) STRICT ;
311
311
312
312
CREATE UNIQUE INDEX ps_updated_rows_row ON ps_updated_rows (row_type, row_id);
313
313
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
+
314
340
INSERT INTO ps_migration(id, down_migrations)
315
341
VALUES(5,
316
342
json_array(
@@ -344,6 +370,7 @@ DELETE FROM ps_oplog;
344
370
DELETE FROM ps_crud;
345
371
DELETE FROM ps_buckets;
346
372
DELETE FROM ps_untyped;
373
+ DELETE FROM ps_updated_rows;
347
374
DELETE FROM ps_kv WHERE key != 'client_id';
348
375
" ,
349
376
) ?;
0 commit comments