diff --git a/src/ssb.rpc.c b/src/ssb.rpc.c index 30f1a91e..9da73366 100644 --- a/src/ssb.rpc.c +++ b/src/ssb.rpc.c @@ -1594,27 +1594,21 @@ static void _tf_ssb_rpc_delete_feeds_work(tf_ssb_t* ssb, void* user_data) db = tf_ssb_acquire_db_writer(ssb); sqlite3_stmt* statement; if (sqlite3_prepare(db, - "DELETE FROM messages WHERE author IN (" - " SELECT author FROM messages WHERE author NOT IN (SELECT value FROM json_each(?)) GROUP BY author LIMIT 1" - ") RETURNING author", + "DELETE FROM messages WHERE id IN (" + " SELECT id FROM messages WHERE author NOT IN (SELECT value FROM json_each(?)) ORDER BY rowid DESC LIMIT 1024" + ")", -1, &statement, NULL) == SQLITE_OK) { int status = SQLITE_OK; - bool printed = false; if (sqlite3_bind_text(statement, 1, arg, -1, NULL) == SQLITE_OK) { - while ((status = sqlite3_step(statement)) == SQLITE_ROW) + if (status != SQLITE_OK) { - if (!printed) - { - tf_printf("deleting %s\n", sqlite3_column_text(statement, 0)); - printed = true; - delete->deleted++; - } + tf_printf("deleting messages: %s\n", sqlite3_errmsg(db)); } - if (status != SQLITE_DONE) + else { - tf_printf("deleting feeds: %s\n", sqlite3_errmsg(db)); + delete->deleted += sqlite3_changes(db); } } sqlite3_finalize(statement); @@ -1627,7 +1621,7 @@ static void _tf_ssb_rpc_delete_feeds_work(tf_ssb_t* ssb, void* user_data) JS_FreeRuntime(runtime); delete->duration_ms = (uv_hrtime() - start_ns) / 1000000LL; - tf_printf("Deleted %d feeds in %d ms.\n", delete->deleted, (int)delete->duration_ms); + tf_printf("Deleted %d message in %d ms.\n", delete->deleted, (int)delete->duration_ms); _tf_ssb_rpc_checkpoint(ssb); }