gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r2267 - GNUnet/src/applications/sqstore_sqlite


From: grothoff
Subject: [GNUnet-SVN] r2267 - GNUnet/src/applications/sqstore_sqlite
Date: Sat, 19 Nov 2005 15:27:18 -0800 (PST)

Author: grothoff
Date: 2005-11-19 15:27:17 -0800 (Sat, 19 Nov 2005)
New Revision: 2267

Modified:
   GNUnet/src/applications/sqstore_sqlite/sqlite.c
Log:
fix

Modified: GNUnet/src/applications/sqstore_sqlite/sqlite.c
===================================================================
--- GNUnet/src/applications/sqstore_sqlite/sqlite.c     2005-11-19 23:00:18 UTC 
(rev 2266)
+++ GNUnet/src/applications/sqstore_sqlite/sqlite.c     2005-11-19 23:27:17 UTC 
(rev 2267)
@@ -119,7 +119,7 @@
   
   /* Is the DB already open? */
   this_tid = pthread_self();
-  for(idx = 0; idx < db->handle_count; idx++)
+  for (idx = 0; idx < db->handle_count; idx++)
     if (pthread_equal(db->handles[idx].tid, this_tid)) {
       ret = db->handles + idx;
       break;
@@ -127,12 +127,10 @@
   
   if (idx == db->handle_count) {
     /* we haven't opened the DB for this thread yet */
-    if (!db->handle_count)
-      db->handles = MALLOC(sizeof(sqliteHandle));
-    else
-      db->handles = REALLOC(db->handles, (db->handle_count + 1) * 
sizeof(sqliteHandle));
-    
-    ret = db->handles + db->handle_count++;
+    GROW(db->handles,
+        db->handle_count,
+        db->handle_count + 1);
+    ret = db->handles + db->handle_count - 1;
     ret->tid = this_tid;
 
     /* Open database and precompile statements */
@@ -144,7 +142,21 @@
       FREE(db);
       return NULL;
     }
-    
+
+    if (db->handle_count == 1) {
+      /* first open: create indices! */
+      sqlite3_exec(ret->dbh, "CREATE INDEX idx_hash ON gn070 (hash)",
+                  NULL, NULL, NULL);
+      sqlite3_exec(ret->dbh, "CREATE INDEX idx_prio ON gn070 (prio)",
+                  NULL, NULL, NULL);
+      sqlite3_exec(ret->dbh, "CREATE INDEX idx_expire ON gn070 (expire)",
+                  NULL, NULL, NULL);
+      sqlite3_exec(ret->dbh, "CREATE INDEX idx_comb1 ON gn070 
(prio,expire,hash)",
+                  NULL, NULL, NULL);
+      sqlite3_exec(ret->dbh, "CREATE INDEX idx_comb2 ON gn070 
(expire,prio,hash)",
+                  NULL, NULL, NULL);
+    }
+
     sqlite3_exec(ret->dbh, "PRAGMA temp_store=MEMORY", NULL, NULL, NULL);
     sqlite3_exec(ret->dbh, "PRAGMA synchronous=OFF", NULL, NULL, NULL);
     sqlite3_exec(ret->dbh, "PRAGMA count_changes=OFF", NULL, NULL, NULL);
@@ -1020,26 +1032,16 @@
   }
 
   db->payload = getStat("PAYLOAD");
-
   if (db->payload == SYSERR) {
     LOG_SQLITE(LOG_ERROR, "sqlite_payload");
-
     FREE(db->fn);
     FREE(db);
     return NULL;
   }
+  
+  
+  
 
-  sqlite3_exec(dbh->dbh, "CREATE INDEX idx_hash ON gn070 (hash)",
-         NULL, NULL, NULL);
-  sqlite3_exec(dbh->dbh, "CREATE INDEX idx_prio ON gn070 (prio)",
-         NULL, NULL, NULL);
-  sqlite3_exec(dbh->dbh, "CREATE INDEX idx_expire ON gn070 (expire)",
-         NULL, NULL, NULL);
-  sqlite3_exec(dbh->dbh, "CREATE INDEX idx_comb1 ON gn070 (prio,expire,hash)",
-         NULL, NULL, NULL);
-  sqlite3_exec(dbh->dbh, "CREATE INDEX idx_comb2 ON gn070 (expire,prio,hash)",
-         NULL, NULL, NULL);
-
   coreAPI = capi;
   stats = coreAPI->requestService("stats");
   if (stats)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]