Browse Source

db: Clear errors before executing new query

This was causing me some trouble by making it look like the last query
failed, when it really was an old one. No need to drag failures around
for longer than needed.

Signed-off-by: Christian Decker <decker.christian@gmail.com>
ppa-0.6.1
Christian Decker 7 years ago
committed by Rusty Russell
parent
commit
4114f6f79b
  1. 21
      wallet/db.c

21
wallet/db.c

@ -113,6 +113,14 @@ char *dbmigrations[] = {
NULL, NULL,
}; };
/**
* db_clear_error - Clear any errors from previous queries
*/
static void db_clear_error(struct db *db)
{
db->err = tal_free(db->err);
}
bool PRINTF_FMT(3, 4) bool PRINTF_FMT(3, 4)
db_exec(const char *caller, struct db *db, const char *fmt, ...) db_exec(const char *caller, struct db *db, const char *fmt, ...)
{ {
@ -123,6 +131,8 @@ bool PRINTF_FMT(3, 4)
if (db->in_transaction && db->err) if (db->in_transaction && db->err)
return false; return false;
db_clear_error(db);
va_start(ap, fmt); va_start(ap, fmt);
cmd = tal_vfmt(db, fmt, ap); cmd = tal_vfmt(db, fmt, ap);
va_end(ap); va_end(ap);
@ -151,6 +161,8 @@ sqlite3_stmt *PRINTF_FMT(3, 4)
if (db->in_transaction && db->err) if (db->in_transaction && db->err)
return NULL; return NULL;
db_clear_error(db);
va_start(ap, fmt); va_start(ap, fmt);
query = tal_vfmt(db, fmt, ap); query = tal_vfmt(db, fmt, ap);
va_end(ap); va_end(ap);
@ -164,15 +176,6 @@ sqlite3_stmt *PRINTF_FMT(3, 4)
return stmt; return stmt;
} }
/**
* db_clear_error - Clear any errors from previous queries
*/
static void db_clear_error(struct db *db)
{
db->err = tal_free(db->err);
}
static void close_db(struct db *db) { sqlite3_close(db->sql); } static void close_db(struct db *db) { sqlite3_close(db->sql); }
bool db_begin_transaction(struct db *db) bool db_begin_transaction(struct db *db)

Loading…
Cancel
Save