ALTER TABLE snapshots ADD COLUMN review INTEGER NOT NULL DEFAULT 0; ALTER TABLE snapshots ADD COLUMN settle_state TEXT NOT NULL DEFAULT ''; UPDATE snapshots SET review = 1 WHERE EXISTS (SELECT 1 FROM reviews r WHERE r.task_id = snapshots.task_id AND r.snapshot_n = snapshots.n); UPDATE snapshots SET settle_state = 'done' WHERE NOT EXISTS (SELECT 1 FROM reviews r WHERE r.task_id = snapshots.task_id AND r.snapshot_n = snapshots.n AND r.state = 'running') AND NOT EXISTS ( SELECT 1 FROM tasks t JOIN reviews r ON r.id = t.merge_after_review_id WHERE t.id = snapshots.task_id AND t.merge_after_review_by != '' AND r.snapshot_n = snapshots.n ); CREATE INDEX reviews_running ON reviews(state) WHERE state = 'running';