X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=blobdiff_plain;f=yarrg%2Frssql.c;h=bfe60d6c8798be39920fa4cb50c88a336f2831de;hp=463ef8b560c76dff97b047b22db55f5e4b7d73ca;hb=d66f27768708df0b8ce256e2d868ff4f7060ef3f;hpb=23f08e0abdbd5212e4a867c80f7833e4ebcbb1cf diff --git a/yarrg/rssql.c b/yarrg/rssql.c index 463ef8b..bfe60d6 100644 --- a/yarrg/rssql.c +++ b/yarrg/rssql.c @@ -4,6 +4,8 @@ sqlite3 *db; sqlite3_stmt *ss_ipair; +int islandtablesz; + DEBUG_DEFINE_DEBUGF(sql); static int busy_handler(void *u, int previous) { @@ -12,7 +14,7 @@ static int busy_handler(void *u, int previous) { return 1; } -void setup(void) { +void setup_sql(void) { sqlite3_stmt *sst; SQL_MUST( sqlite3_open("OCEAN-Midnight.db", &db) ); @@ -22,7 +24,8 @@ void setup(void) { assert( !SQL_STEP(sst) ); sqlite3_finalize(sst); - setup_value(); + islandtablesz= 1 + sql_single_int("SELECT max(islandid) FROM islands"); + debugf("SQL islandtablesz=%d\n",islandtablesz); } int sql_single_int(const char *stmt) { @@ -54,8 +57,28 @@ sqlite3_stmt *sql_prepare(const char *stmt, const char *what) { return ssr; } -int sql_step_wrap(sqlite3_stmt *ssh, const char *ssh_string, - const char *file, int line) { +int sql_step_distinct(sqlite3_stmt *ssh, const char *ssh_string, + const char *file, int line, + int *cols, int ncols, int nkeycols) { + for (;;) { + if (!sql_step(ssh, ssh_string, file, line)) return 0; + + int i; + for (i=0; i