From 8cd54f98022731854cbae30c5b632e3fbe1e7bae Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 7 Oct 2026 00:27:35 +0200 Subject: [PATCH] Verify restored schema constraints and legacy index fixture --- tests/test_db_sync_schema.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/test_db_sync_schema.c b/tests/test_db_sync_schema.c index 4c7e559d..f75c50ca 100644 --- a/tests/test_db_sync_schema.c +++ b/tests/test_db_sync_schema.c @@ -111,7 +111,8 @@ int main(int argc, char** argv) { assert(sqlite3_get_table(db, "SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'msg_%'", &tables, &rows, &columns, NULL) == SQLITE_OK); for (int i = 0; i < rows; i++) { - const char* name = tables[i + 1]; snprintf(sql, sizeof(sql), "ALTER TABLE \"%s\" RENAME TO saved", name); execute(db, sql); + const char* name = tables[i + 1]; + snprintf(sql, sizeof(sql), "DROP INDEX \"idx_%s_ttl\";ALTER TABLE \"%s\" RENAME TO saved", name, name); execute(db, sql); legacy_table(db, name); snprintf(sql, sizeof(sql), "INSERT INTO \"%s\" SELECT " OLD_COLUMNS " FROM saved;DROP TABLE saved", name); execute(db, sql); } @@ -121,8 +122,14 @@ int main(int argc, char** argv) { assert(chat_core_get_messages_json(inst, channel, 10, 0, listing, sizeof(listing), &len) == 0 && len > 0); snprintf(sql, sizeof(sql), "INSERT INTO \"%s\" (" OLD_COLUMNS ") SELECT * FROM expected", table); assert(sqlite3_exec(db, sql, NULL, NULL, NULL) == SQLITE_CONSTRAINT); + assert(sqlite3_extended_errcode(db) == SQLITE_CONSTRAINT_NOTNULL); snprintf(sql, sizeof(sql), "INSERT INTO \"%s\" (" OLD_COLUMNS ",message_id) SELECT *,x'01' FROM expected", table); assert(sqlite3_exec(db, sql, NULL, NULL, NULL) == SQLITE_CONSTRAINT); + assert(sqlite3_extended_errcode(db) == SQLITE_CONSTRAINT_CHECK); + snprintf(sql, sizeof(sql), "INSERT INTO \"%s\" SELECT timestamp+1000000,node_id,id,chain_hash,flags,data," + "author_signature,message_id,local_attrs,delivered_peers,delivery_chain FROM \"%s\" LIMIT 1", table, table); + assert(sqlite3_exec(db, sql, NULL, NULL, NULL) == SQLITE_CONSTRAINT); + assert(sqlite3_extended_errcode(db) == SQLITE_CONSTRAINT_UNIQUE); chat_service_stop(inst); assert(chat_service_start(inst) == 0); check_history(db, table, gid); send_text(inst, channel, "Отправка после обновления 👍"); assert(chat_core_count(inst, channel) == 4); DEBUG_INFO(DEBUG_CATEGORY_CHAT_SYNC, "PASS: restart, empty table, preserved fields, canonical IDs and new message submission");