db: implement BIND_NEXT for autocounting.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2023-07-14 09:58:45 +09:30
parent b7b3cbc84a
commit a1c20bfc87
2 changed files with 13 additions and 1 deletions

View File

@@ -18,7 +18,16 @@
static int check_bind_pos(struct db_stmt *stmt, int pos)
{
assert(pos == ++stmt->bind_pos);
if (pos == BIND_NEXT) {
/* Don't mix BIND_NEXT with other args! */
assert(stmt->bindings[stmt->bind_pos+1].type == DB_BINDING_UNINITIALIZED);
return ++stmt->bind_pos;
}
/* Don't mix BIND_NEXT with other args! */
assert(stmt->bind_pos == -1);
assert(pos >= 0);
assert(pos < tal_count(stmt->bindings));
return pos;
}

View File

@@ -17,6 +17,9 @@ struct onionreply;
struct wally_psbt;
struct wally_tx;
/* Magic pos argument meaning "the next field" */
#define BIND_NEXT -77
int db_col_is_null(struct db_stmt *stmt, const char *colname);
void db_bind_int(struct db_stmt *stmt, int pos, int val);