From eb006dcaddd2539cfa5413798131833df1072ae8 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 10 Aug 2022 21:58:30 +0930 Subject: [PATCH] wallet: fix incorrect column-width access. Postgresql actually checks, and fails. It's unclear why this field is an INTEGER (and u32) when it's a BIGINT in db here (it's an INTEGER in the channels table, just a BIGINT in the channel_funding_inflights table). Changelog-Fixed: db: postgresql crash on startup when dual-funding lease open is pending with "s32 field doesn't match size: expected 4, actual 8" Signed-off-by: Rusty Russell --- wallet/wallet.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wallet/wallet.c b/wallet/wallet.c index 1c276c2e8..c287a3934 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -1118,7 +1118,8 @@ wallet_stmt2inflight(struct wallet *w, struct db_stmt *stmt, struct channel_inflight *inflight; secp256k1_ecdsa_signature *lease_commit_sig; - u32 lease_chan_max_msat, lease_blockheight_start; + u32 lease_blockheight_start; + u64 lease_chan_max_msat; u16 lease_chan_max_ppt; db_col_txid(stmt, "funding_tx_id", &funding.txid); @@ -1133,7 +1134,7 @@ wallet_stmt2inflight(struct wallet *w, struct db_stmt *stmt, if (!db_col_is_null(stmt, "lease_commit_sig")) { lease_commit_sig = tal(tmpctx, secp256k1_ecdsa_signature); db_col_signature(stmt, "lease_commit_sig", lease_commit_sig); - lease_chan_max_msat = db_col_int(stmt, "lease_chan_max_msat"); + lease_chan_max_msat = db_col_u64(stmt, "lease_chan_max_msat"); lease_chan_max_ppt = db_col_int(stmt, "lease_chan_max_ppt"); lease_blockheight_start = db_col_int(stmt, "lease_blockheight_start"); db_col_amount_msat(stmt, "lease_fee", &lease_fee);