sqlite3 *db;
sqlite3_stmt *ss_ipair;
+int islandtablesz;
+
DEBUG_DEFINE_DEBUGF(sql);
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) );
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) {
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<ncols; i++) {
+ int v= sqlite3_column_int(ssh, i);
+ if (v == cols[i]) continue;
+
+ assert(i<nkeycols);
+ cols[i++]= v;
+ for ( ; i<ncols; i++)
+ cols[i]= sqlite3_column_int(ssh, i);
+ return 1;
+ }
+ }
+}
+
+int sql_step(sqlite3_stmt *ssh, const char *ssh_string,
+ const char *file, int line) {
for (;;) {
int sqr;
sqr= sqlite3_step((ssh));