MCPcopy Create free account
hub / github.com/ElementsProject/lightning / complete_table_manip

Function complete_table_manip

db/db_sqlite3.c:525–570  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

523}
524
525static bool complete_table_manip(struct db *db,
526 const char *tablename,
527 const char **coldefs,
528 const char **oldcolnames)
529{
530 char *create_cmd, *insert_cmd, *drop_cmd;
531
532 /* Create table */
533 create_cmd = tal_fmt(tmpctx, "CREATE TABLE %s (", tablename);
534 for (size_t i = 0; i < tal_count(coldefs); i++) {
535 if (i != 0)
536 tal_append_fmt(&create_cmd, ", ");
537 tal_append_fmt(&create_cmd, "%s", coldefs[i]);
538 }
539 tal_append_fmt(&create_cmd, ";");
540
541 db_exec_prepared_v2(take(db_prepare_untranslated(db, create_cmd)));
542
543 /* Populate table from old one */
544 insert_cmd = tal_fmt(tmpctx, "INSERT INTO %s SELECT ", tablename);
545 for (size_t i = 0; i < tal_count(oldcolnames); i++) {
546 if (i != 0)
547 tal_append_fmt(&insert_cmd, ", ");
548 tal_append_fmt(&insert_cmd, "%s", oldcolnames[i]);
549 }
550 tal_append_fmt(&insert_cmd, " FROM temp_%s;", tablename);
551
552 db_exec_prepared_v2(take(db_prepare_untranslated(db, insert_cmd)));
553
554 /* Cleanup temp table */
555 drop_cmd = tal_fmt(tmpctx, "DROP TABLE temp_%s;", tablename);
556 db_exec_prepared_v2(take(db_prepare_untranslated(db, drop_cmd)));
557 db_commit_transaction(db);
558
559 /* Allow links between them (esp. cascade deletes!) */
560 db->in_transaction = "Not really";
561 db_prepare_for_changes(db);
562 db_exec_prepared_v2(take(db_prepare_untranslated(db,
563 "PRAGMA foreign_keys = ON;")));
564 db_report_changes(db, NULL, 0);
565 db->in_transaction = NULL;
566
567 /* migrations are performed inside transactions, so start one. */
568 db_begin_transaction(db);
569 return true;
570}
571
572static bool db_sqlite3_rename_column(struct db *db,
573 const char *tablename,

Callers 2

db_sqlite3_rename_columnFunction · 0.85

Calls 6

tal_append_fmtFunction · 0.85
db_exec_prepared_v2Function · 0.85
db_prepare_untranslatedFunction · 0.85
db_prepare_for_changesFunction · 0.85
db_report_changesFunction · 0.85
db_commit_transactionFunction · 0.70

Tested by

no test coverage detected