| 424 | } |
| 425 | |
| 426 | bool wallet_update_output_status(struct wallet *w, |
| 427 | const struct bitcoin_outpoint *outpoint, |
| 428 | enum output_status oldstatus, |
| 429 | enum output_status newstatus) |
| 430 | { |
| 431 | struct db_stmt *stmt; |
| 432 | size_t changes; |
| 433 | if (oldstatus != OUTPUT_STATE_ANY) { |
| 434 | stmt = db_prepare_v2( |
| 435 | w->db, SQL("UPDATE outputs SET status=? WHERE status=? AND " |
| 436 | "prev_out_tx=? AND prev_out_index=?")); |
| 437 | db_bind_int(stmt, output_status_in_db(newstatus)); |
| 438 | db_bind_int(stmt, output_status_in_db(oldstatus)); |
| 439 | db_bind_txid(stmt, &outpoint->txid); |
| 440 | db_bind_int(stmt, outpoint->n); |
| 441 | } else { |
| 442 | stmt = db_prepare_v2(w->db, |
| 443 | SQL("UPDATE outputs SET status=? WHERE " |
| 444 | "prev_out_tx=? AND prev_out_index=?")); |
| 445 | db_bind_int(stmt, output_status_in_db(newstatus)); |
| 446 | db_bind_txid(stmt, &outpoint->txid); |
| 447 | db_bind_int(stmt, outpoint->n); |
| 448 | } |
| 449 | db_exec_prepared_v2(stmt); |
| 450 | changes = db_count_changes(stmt); |
| 451 | tal_free(stmt); |
| 452 | return changes > 0; |
| 453 | } |
| 454 | |
| 455 | static int cmp_utxo(struct utxo *const *a, |
| 456 | struct utxo *const *b, |