315
315
/* 1.4.9 -> 1.4.10 adding parent_item_id to itemset relation */
316
316
debug0 (DEBUG_DB, "migrating from schema version 5 to 6 (this drops all comments)");
317
317
db_exec ("BEGIN; "
318
"DROP TRIGGER item_removal; "
319
"DROP TRIGGER item_insert; "
318
320
"DELETE FROM itemsets WHERE comment = 1; "
321
"DELETE FROM items WHERE comment = 1; "
319
322
"CREATE TEMPORARY TABLE itemsets_backup(item_id,node_id,read,comment); "
320
323
"INSERT INTO itemsets_backup SELECT item_id,node_id,read,comment FROM itemsets; "
321
324
"DROP TABLE itemsets; "
332
335
"REPLACE INTO info (name, value) VALUES ('schemaVersion',6); "
339
if (db_get_schema_version () == 6) {
340
/* 1.4.15 -> 1.4.16 adding parent_node_id to itemset relation */
341
debug0 (DEBUG_DB, "migrating from schema version 5 to 6 (this drops all comments)");
343
"DROP TRIGGER item_removal; "
344
"DROP TRIGGER item_insert; "
345
"DELETE FROM itemsets WHERE comment = 1; "
346
"DELETE FROM items WHERE comment = 1; "
347
"CREATE TEMPORARY TABLE itemsets_backup(item_id,node_id,read,comment); "
348
"INSERT INTO itemsets_backup SELECT item_id,node_id,read,comment FROM itemsets; "
349
"DROP TABLE itemsets; "
350
"CREATE TABLE itemsets ("
352
" parent_item_id INTEGER,"
354
" parent_node_id TEXT,"
357
" PRIMARY KEY (item_id, node_id)"
359
"INSERT INTO itemsets SELECT item_id,0,node_id,node_id,read,comment FROM itemsets_backup; "
360
"DROP TABLE itemsets_backup; "
361
"REPLACE INTO info (name, value) VALUES ('schemaVersion',7); "
336
365
if (SCHEMA_TARGET_VERSION != db_get_schema_version ())
337
366
g_error ("Fatal: DB schema migration failed! Running with --debug-db could give some hints!");
389
419
db_exec ("CREATE INDEX metadata_idx ON metadata (item_id);");
391
/* Set up item removal trigger */
421
/* Set up item removal trigger (does not remove comments!) */
392
422
db_exec ("DROP TRIGGER item_removal;");
393
423
db_exec ("CREATE TRIGGER item_removal DELETE ON itemsets "
395
425
" DELETE FROM items WHERE ROWID = old.item_id; "
396
" DELETE FROM itemsets WHERE parent_item_id = old.item_id; "
397
426
" DELETE FROM metadata WHERE item_id = old.item_id; "
508
536
"parent_item_id,"
512
") VALUES (?,?,?,?,?)");
541
") VALUES (?,?,?,?,?,?)");
514
543
db_new_statement ("itemsetReadCountStmt",
515
544
"SELECT COUNT(*) FROM itemsets "
520
549
"WHERE node_id = ?");
522
551
db_new_statement ("itemsetRemoveStmt",
523
"DELETE FROM itemsets WHERE item_id = ?");
552
"DELETE FROM itemsets WHERE parent_item_id = ?");
525
554
db_new_statement ("itemsetRemoveAllStmt",
526
"DELETE FROM itemsets WHERE node_id = ?");
555
"DELETE FROM itemsets WHERE parent_node_id = ?");
528
557
db_new_statement ("itemsetMarkAllUpdatedStmt",
529
558
"UPDATE items SET updated = 0 WHERE ROWID IN "
744
774
db_load_item_from_columns (sqlite3_stmt *stmt)
746
itemPtr item = item_new();
776
itemPtr item = item_new ();
748
item->readStatus = sqlite3_column_int(stmt, 1)?TRUE:FALSE;
749
item->newStatus = sqlite3_column_int(stmt, 2)?TRUE:FALSE;
750
item->updateStatus = sqlite3_column_int(stmt, 3)?TRUE:FALSE;
751
item->popupStatus = sqlite3_column_int(stmt, 4)?TRUE:FALSE;
752
item->flagStatus = sqlite3_column_int(stmt, 5)?TRUE:FALSE;
753
item->validGuid = sqlite3_column_int(stmt, 8)?TRUE:FALSE;
754
item->time = sqlite3_column_int(stmt, 12);
755
item->commentFeedId = g_strdup(sqlite3_column_text(stmt, 13));
756
item->isComment = sqlite3_column_int(stmt, 14);
757
item->id = sqlite3_column_int(stmt, 15);
758
item->parentItemId = sqlite3_column_int(stmt, 16);
759
item->nodeId = g_strdup(sqlite3_column_text(stmt, 17));
778
item->readStatus = sqlite3_column_int (stmt, 1)?TRUE:FALSE;
779
item->newStatus = sqlite3_column_int (stmt, 2)?TRUE:FALSE;
780
item->updateStatus = sqlite3_column_int (stmt, 3)?TRUE:FALSE;
781
item->popupStatus = sqlite3_column_int (stmt, 4)?TRUE:FALSE;
782
item->flagStatus = sqlite3_column_int (stmt, 5)?TRUE:FALSE;
783
item->validGuid = sqlite3_column_int (stmt, 8)?TRUE:FALSE;
784
item->time = sqlite3_column_int (stmt, 12);
785
item->commentFeedId = g_strdup (sqlite3_column_text (stmt, 13));
786
item->isComment = sqlite3_column_int (stmt, 14);
787
item->id = sqlite3_column_int (stmt, 15);
788
item->parentItemId = sqlite3_column_int (stmt, 16);
789
item->nodeId = g_strdup (sqlite3_column_text (stmt, 17));
790
item->parentNodeId = g_strdup (sqlite3_column_text (stmt, 18));
761
792
item_set_title (item, sqlite3_column_text(stmt, 0));
762
793
item_set_source (item, sqlite3_column_text(stmt, 6));
765
796
item_set_real_source_title (item, sqlite3_column_text(stmt, 10));
766
797
item_set_description (item, sqlite3_column_text(stmt, 11));
768
item->metadata = db_item_metadata_load(item);
799
item->metadata = db_item_metadata_load (item);
876
907
debug3 (DEBUG_DB, "update of item \"%s\" (id=%lu, thread=%p)", item->title, item->id, g_thread_self());
877
908
debug_start_measurement (DEBUG_DB);
880
db_item_set_id(item);
911
db_item_set_id (item);
882
913
debug1(DEBUG_DB, "insert into table \"itemsets\": \"%s\"", item->title);
886
917
sqlite3_bind_int (stmt, 1, item->id);
887
918
sqlite3_bind_int (stmt, 2, item->parentItemId);
888
919
sqlite3_bind_text (stmt, 3, item->nodeId, -1, SQLITE_TRANSIENT);
889
sqlite3_bind_int (stmt, 4, item->readStatus);
890
sqlite3_bind_int (stmt, 5, item->isComment?1:0);
920
sqlite3_bind_text (stmt, 4, item->parentNodeId, -1, SQLITE_TRANSIENT);
921
sqlite3_bind_int (stmt, 5, item->readStatus);
922
sqlite3_bind_int (stmt, 6, item->isComment?1:0);
891
923
res = sqlite3_step (stmt);
892
924
if (SQLITE_DONE != res)
893
925
g_warning ("Insert in \"itemsets\" table failed (error code=%d, %s)", res, sqlite3_errmsg (db));