|
|
|
|
@ -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"); |
|
|
|
|
|