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

Function refresh_complete

plugins/sql.c:439–530  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

437}
438
439static struct command_result *refresh_complete(struct command *cmd,
440 struct db_query *dbq)
441{
442 struct sql *sql = sql_of(cmd->plugin);
443 char *errmsg;
444 int err, num_cols;
445 size_t num_rows;
446 struct json_stream *ret;
447
448 num_cols = sqlite3_column_count(dbq->stmt);
449
450 /* We normally hit an error immediately, so return a simple error then */
451 ret = NULL;
452 num_rows = 0;
453 errmsg = NULL;
454
455 while ((err = sqlite3_step(dbq->stmt)) == SQLITE_ROW) {
456 if (!ret) {
457 ret = jsonrpc_stream_success(cmd);
458 json_array_start(ret, "rows");
459 }
460 json_array_start(ret, NULL);
461 for (size_t i = 0; i < num_cols; i++) {
462 /* The returned value is one of
463 * SQLITE_INTEGER, SQLITE_FLOAT, SQLITE_TEXT,
464 * SQLITE_BLOB, or SQLITE_NULL */
465 switch (sqlite3_column_type(dbq->stmt, i)) {
466 case SQLITE_INTEGER: {
467 s64 v = sqlite3_column_int64(dbq->stmt, i);
468 json_add_s64(ret, NULL, v);
469 break;
470 }
471 case SQLITE_FLOAT: {
472 double v = sqlite3_column_double(dbq->stmt, i);
473 json_add_primitive_fmt(ret, NULL, "%f", v);
474 break;
475 }
476 case SQLITE_TEXT: {
477 const char *c = (char *)sqlite3_column_text(dbq->stmt, i);
478 if (!utf8_check(c, strlen(c))) {
479 json_add_str_fmt(ret, NULL,
480 "INVALID UTF-8 STRING %s",
481 tal_hexstr(tmpctx, c, strlen(c)));
482 errmsg = tal_fmt(cmd, "Invalid UTF-8 string row %zu column %zu",
483 num_rows, i);
484 } else
485 json_add_string(ret, NULL, c);
486 break;
487 }
488 case SQLITE_BLOB:
489 json_add_hex(ret, NULL,
490 sqlite3_column_blob(dbq->stmt, i),
491 sqlite3_column_bytes(dbq->stmt, i));
492 break;
493 case SQLITE_NULL:
494 json_add_primitive(ret, NULL, "null");
495 break;
496 default:

Callers 1

refresh_tablesFunction · 0.85

Calls 14

sql_ofFunction · 0.85
json_array_startFunction · 0.85
json_add_s64Function · 0.85
json_add_primitive_fmtFunction · 0.85
json_add_str_fmtFunction · 0.85
tal_hexstrFunction · 0.85
json_add_hexFunction · 0.85
json_add_primitiveFunction · 0.85
json_array_endFunction · 0.85
jsonrpc_stream_successFunction · 0.70
command_failFunction · 0.70
command_finishedFunction · 0.70

Tested by

no test coverage detected