chiark / gitweb /
WIP routesearch; route high table
[ypp-sc-tools.db-test.git] / yarrg / rssql.c
index 898ac3b268350b4824021ba987002622600c88e3..bfe60d6c8798be39920fa4cb50c88a336f2831de 100644 (file)
@@ -57,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<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));