mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 06:41:44 +01:00
wallet: db_bind_talarr and db_column_talarr helpers.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
39e4796ae3
commit
3a2191fcfe
4 changed files with 35 additions and 37 deletions
23
wallet/db.c
23
wallet/db.c
|
@ -1430,7 +1430,7 @@ void db_bind_short_channel_id_arr(struct db_stmt *stmt, int col,
|
|||
for (size_t i = 0; i < num; ++i)
|
||||
towire_short_channel_id(&ser, &id[i]);
|
||||
|
||||
db_bind_blob(stmt, col, ser, tal_count(ser));
|
||||
db_bind_talarr(stmt, col, ser);
|
||||
}
|
||||
|
||||
void db_bind_signature(struct db_stmt *stmt, int col,
|
||||
|
@ -1453,7 +1453,7 @@ void db_bind_tx(struct db_stmt *stmt, int col, const struct wally_tx *tx)
|
|||
{
|
||||
u8 *ser = linearize_wtx(stmt, tx);
|
||||
assert(ser);
|
||||
db_bind_blob(stmt, col, ser, tal_count(ser));
|
||||
db_bind_talarr(stmt, col, ser);
|
||||
}
|
||||
|
||||
void db_bind_psbt(struct db_stmt *stmt, int col, const struct wally_psbt *psbt)
|
||||
|
@ -1484,7 +1484,15 @@ void db_bind_json_escape(struct db_stmt *stmt, int pos,
|
|||
|
||||
void db_bind_onionreply(struct db_stmt *stmt, int pos, const struct onionreply *r)
|
||||
{
|
||||
db_bind_blob(stmt, pos, r->contents, tal_bytelen(r->contents));
|
||||
db_bind_talarr(stmt, pos, r->contents);
|
||||
}
|
||||
|
||||
void db_bind_talarr(struct db_stmt *stmt, int col, const u8 *arr)
|
||||
{
|
||||
if (!arr)
|
||||
db_bind_null(stmt, col);
|
||||
else
|
||||
db_bind_blob(stmt, col, arr, tal_bytelen(arr));
|
||||
}
|
||||
|
||||
void db_column_preimage(struct db_stmt *stmt, int col,
|
||||
|
@ -1686,6 +1694,15 @@ struct onionreply *db_column_onionreply(const tal_t *ctx,
|
|||
return r;
|
||||
}
|
||||
|
||||
u8 *db_column_talarr(const tal_t *ctx, struct db_stmt *stmt, int col)
|
||||
{
|
||||
if (db_column_is_null(stmt, col))
|
||||
return NULL;
|
||||
return tal_dup_arr(ctx, u8,
|
||||
db_column_blob(stmt, col),
|
||||
db_column_bytes(stmt, col), 0);
|
||||
}
|
||||
|
||||
bool db_exec_prepared_v2(struct db_stmt *stmt TAKES)
|
||||
{
|
||||
bool ret = stmt->db->config->exec_fn(stmt);
|
||||
|
|
|
@ -128,6 +128,7 @@ void db_bind_json_escape(struct db_stmt *stmt, int pos,
|
|||
const struct json_escape *esc);
|
||||
void db_bind_onionreply(struct db_stmt *stmt, int col,
|
||||
const struct onionreply *r);
|
||||
void db_bind_talarr(struct db_stmt *stmt, int col, const u8 *arr);
|
||||
|
||||
bool db_step(struct db_stmt *stmt);
|
||||
u64 db_column_u64(struct db_stmt *stmt, int col);
|
||||
|
@ -162,6 +163,7 @@ struct bitcoin_tx *db_column_psbt_to_tx(const tal_t *ctx, struct db_stmt *stmt,
|
|||
|
||||
struct onionreply *db_column_onionreply(const tal_t *ctx,
|
||||
struct db_stmt *stmt, int col);
|
||||
u8 *db_column_talarr(const tal_t *ctx, struct db_stmt *stmt, int col);
|
||||
|
||||
#define db_column_arr(ctx, stmt, col, type) \
|
||||
((type *)db_column_arr_((ctx), (stmt), (col), \
|
||||
|
|
|
@ -300,7 +300,7 @@ bool invoices_create(struct invoices *invoices,
|
|||
db_bind_u64(stmt, 5, expiry_time);
|
||||
db_bind_text(stmt, 6, b11enc);
|
||||
db_bind_text(stmt, 7, description);
|
||||
db_bind_blob(stmt, 8, features, tal_bytelen(features));
|
||||
db_bind_talarr(stmt, 8, features);
|
||||
|
||||
db_exec_prepared_v2(stmt);
|
||||
|
||||
|
|
|
@ -1674,11 +1674,7 @@ void wallet_channel_save(struct wallet *w, struct channel *chan)
|
|||
db_bind_amount_msat(stmt, 14, &chan->push);
|
||||
db_bind_amount_msat(stmt, 15, &chan->our_msat);
|
||||
|
||||
if (chan->shutdown_scriptpubkey[REMOTE])
|
||||
db_bind_blob(stmt, 16, chan->shutdown_scriptpubkey[REMOTE],
|
||||
tal_count(chan->shutdown_scriptpubkey[REMOTE]));
|
||||
else
|
||||
db_bind_null(stmt, 16);
|
||||
db_bind_talarr(stmt, 16, chan->shutdown_scriptpubkey[REMOTE]);
|
||||
|
||||
db_bind_u64(stmt, 17, chan->final_key_idx);
|
||||
db_bind_u64(stmt, 18, chan->our_config.id);
|
||||
|
@ -1691,17 +1687,10 @@ void wallet_channel_save(struct wallet *w, struct channel *chan)
|
|||
db_bind_amount_msat(stmt, 25, &chan->msat_to_us_max);
|
||||
db_bind_int(stmt, 26, chan->feerate_base);
|
||||
db_bind_int(stmt, 27, chan->feerate_ppm);
|
||||
if (chan->remote_upfront_shutdown_script)
|
||||
db_bind_blob(
|
||||
stmt, 28, chan->remote_upfront_shutdown_script,
|
||||
tal_count(chan->remote_upfront_shutdown_script));
|
||||
else
|
||||
db_bind_null(stmt, 28);
|
||||
|
||||
db_bind_talarr(stmt, 28, chan->remote_upfront_shutdown_script);
|
||||
db_bind_int(stmt, 29, chan->option_static_remotekey);
|
||||
db_bind_int(stmt, 30, chan->option_anchor_outputs);
|
||||
db_bind_blob(stmt, 31, chan->shutdown_scriptpubkey[LOCAL],
|
||||
tal_count(chan->shutdown_scriptpubkey[LOCAL]));
|
||||
db_bind_talarr(stmt, 31, chan->shutdown_scriptpubkey[LOCAL]);
|
||||
db_bind_u64(stmt, 32, chan->dbid);
|
||||
db_exec_prepared_v2(take(stmt));
|
||||
|
||||
|
@ -1756,15 +1745,14 @@ void wallet_channel_save(struct wallet *w, struct channel *chan)
|
|||
for (size_t i = 0; i < tal_count(chan->last_sent_commit); i++)
|
||||
towire_changed_htlc(&last_sent_commit,
|
||||
&chan->last_sent_commit[i]);
|
||||
/* Make it null in db if it's empty */
|
||||
if (tal_count(last_sent_commit) == 0)
|
||||
last_sent_commit = tal_free(last_sent_commit);
|
||||
|
||||
stmt = db_prepare_v2(w->db, SQL("UPDATE channels SET"
|
||||
" last_sent_commit=?"
|
||||
" WHERE id=?"));
|
||||
if (tal_count(last_sent_commit))
|
||||
db_bind_blob(stmt, 0, last_sent_commit,
|
||||
tal_count(last_sent_commit));
|
||||
else
|
||||
db_bind_null(stmt, 0);
|
||||
db_bind_talarr(stmt, 0, last_sent_commit);
|
||||
db_bind_u64(stmt, 1, chan->dbid);
|
||||
db_exec_prepared_v2(stmt);
|
||||
tal_free(stmt);
|
||||
|
@ -2138,10 +2126,7 @@ void wallet_htlc_update(struct wallet *wallet, const u64 htlc_dbid,
|
|||
else
|
||||
db_bind_null(stmt, 3);
|
||||
|
||||
if (failmsg)
|
||||
db_bind_blob(stmt, 4, failmsg, tal_bytelen(failmsg));
|
||||
else
|
||||
db_bind_null(stmt, 4);
|
||||
db_bind_talarr(stmt, 4, failmsg);
|
||||
|
||||
if (we_filled)
|
||||
db_bind_int(stmt, 5, *we_filled);
|
||||
|
@ -2980,11 +2965,9 @@ void wallet_payment_set_failinfo(struct wallet *wallet,
|
|||
" WHERE payment_hash=?"
|
||||
" AND partid=?;"));
|
||||
if (failonionreply)
|
||||
db_bind_blob(stmt, 0, failonionreply->contents,
|
||||
tal_count(failonionreply->contents));
|
||||
db_bind_talarr(stmt, 0, failonionreply->contents);
|
||||
else
|
||||
db_bind_null(stmt, 0);
|
||||
|
||||
db_bind_int(stmt, 1, faildestperm ? 1 : 0);
|
||||
db_bind_int(stmt, 2, failindex);
|
||||
db_bind_int(stmt, 3, (int) failcode);
|
||||
|
@ -3002,10 +2985,7 @@ void wallet_payment_set_failinfo(struct wallet *wallet,
|
|||
db_bind_null(stmt, 8);
|
||||
}
|
||||
|
||||
if (failupdate)
|
||||
db_bind_blob(stmt, 6, failupdate, tal_count(failupdate));
|
||||
else
|
||||
db_bind_null(stmt, 6);
|
||||
db_bind_talarr(stmt, 6, failupdate);
|
||||
|
||||
if (faildetail != NULL)
|
||||
db_bind_text(stmt, 7, faildetail);
|
||||
|
@ -3308,7 +3288,7 @@ void wallet_utxoset_add(struct wallet *w, const struct bitcoin_tx *tx,
|
|||
db_bind_int(stmt, 2, blockheight);
|
||||
db_bind_null(stmt, 3);
|
||||
db_bind_int(stmt, 4, txindex);
|
||||
db_bind_blob(stmt, 5, scriptpubkey, tal_count(scriptpubkey));
|
||||
db_bind_talarr(stmt, 5, scriptpubkey);
|
||||
db_bind_amount_sat(stmt, 6, &sat);
|
||||
db_exec_prepared_v2(take(stmt));
|
||||
|
||||
|
@ -3346,8 +3326,7 @@ void wallet_filteredblock_add(struct wallet *w, const struct filteredblock *fb)
|
|||
db_bind_int(stmt, 2, fb->height);
|
||||
db_bind_null(stmt, 3);
|
||||
db_bind_int(stmt, 4, o->txindex);
|
||||
db_bind_blob(stmt, 5, o->scriptPubKey,
|
||||
tal_count(o->scriptPubKey));
|
||||
db_bind_talarr(stmt, 5, o->scriptPubKey);
|
||||
db_bind_amount_sat(stmt, 6, &o->amount);
|
||||
db_exec_prepared_v2(take(stmt));
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue