X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2Frssetup.c;h=dadeca6bda4509eff3a17008be0cfefafb9d237d;hb=52f5717ff34c5880d7600231df6f0f8e2232c6f4;hp=6538677c2a3b291a9763e28580c4a5aefc9352f8;hpb=322e26f969dfb65629833be5bd75ba71a15b8634;p=ypp-sc-tools.db-test.git diff --git a/yarrg/rssetup.c b/yarrg/rssetup.c index 6538677..dadeca6 100644 --- a/yarrg/rssetup.c +++ b/yarrg/rssetup.c @@ -4,20 +4,56 @@ sqlite3 *db; sqlite3_stmt *ss_ipair; +static int busy_handler(void *u, int previous) { + if (DEBUGP(sql)) fprintf(stderr,"[[DB BUSY %d]]",previous); + sysassert(! usleep(5000) ); + return 1; +} + void setup(void) { + sqlite3_stmt *sst; + SQL_MUST( sqlite3_open("OCEAN-Midnight.db", &db) ); + SQL_MUST( sqlite3_busy_handler(db, busy_handler, 0) ); + + SQL_MUST( sqlite3_prepare(db, "BEGIN", -1, &sst, 0) ); + assert( !SQL_STEP(sst) ); + sqlite3_finalize(sst); + setup_value(); } +int sql_single_int(const char *stmt) { + sqlite3_stmt *sst; + SQL_MUST( sqlite3_prepare(db, stmt, -1,&sst,0) ); + assert( SQL_STEP(sst) ); + int rv= sqlite3_column_int(sst,0); + sqlite3_finalize(sst); + return rv; +} + int sql_step_wrap(sqlite3_stmt *ssh, const char *ssh_string, const char *file, int line) { for (;;) { int sqr; sqr= sqlite3_step((ssh)); switch (sqr) { - case SQLITE_DONE: return 0; - case SQLITE_ROW: return 1; - case SQLITE_BUSY: sysassert(! usleep(5000) ); break; + case SQLITE_DONE: + if (DEBUGP(sql)) + fprintf(stderr,"SQL %s DONE\n",ssh_string); + return 0; + case SQLITE_ROW: + if (DEBUGP(sql)) { + int i; + fprintf(stderr,"SQL %s R",ssh_string); + for (i=0; i", stderr); + } + fputs("\n",stderr); + } + return 1; default: fatal("SQL step failed at %s:%d: code %d: %s: %s", file, line, sqr, sqlite3_errmsg(db), ssh_string); }