[svn] commit: r903 - /branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Sat Feb 20 18:33:59 UTC 2010


Author: each
Date: Sat Feb 20 18:33:59 2010
New Revision: 903

Log:
reset prepared SQL statements after executing them, to release
database locks.  this allows zones to be loaded or changed while the
auth server is running.

Modified:
    branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc

Modified: branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc Sat Feb 20 18:33:59 2010
@@ -52,7 +52,7 @@
 //  ID if found.  This will always be >= 0 if found.
 //
 int Sqlite3DataSrc::hasExactZone(const char *name) const {
-    int rc;
+    int rc, i;
     sqlite3_reset(q_zone);
     rc = sqlite3_bind_text(q_zone, 1, name, -1, SQLITE_STATIC);
     if (rc != SQLITE_OK) {
@@ -60,10 +60,12 @@
     }
     rc = sqlite3_step(q_zone);
     if (rc == SQLITE_ROW) {
-        return (sqlite3_column_int(q_zone, 0));
+        i = sqlite3_column_int(q_zone, 0);
     } else {
-        return (-1);
-    }
+        i = -1;
+    }
+    sqlite3_reset(q_zone);
+    return (i);
 }
 
 int
@@ -197,6 +199,7 @@
         rc = sqlite3_step(query);
     }
 
+    sqlite3_reset(query);
     if (rows > 0) {
         return (rows);
     }
@@ -224,11 +227,13 @@
         int count = sqlite3_column_int(q_count, 0);
         if (count != 0) {
             flags |= TYPE_NOT_FOUND;
+            sqlite3_reset(q_count);
             return (0);
         }
     }
 
     flags |= NAME_NOT_FOUND;
+    sqlite3_reset(q_count);
     return (0);
 }
 
@@ -476,11 +481,13 @@
 
     rc = sqlite3_step(q_previous);
     if (rc != SQLITE_ROW) {
+        sqlite3_reset(q_previous);
         return (ERROR);
     }
 
     const char *prev = (const char *) sqlite3_column_text(q_previous, 0);
     target = Name(prev);
+    sqlite3_reset(q_previous);
     return (SUCCESS);
 }
 




More information about the bind10-changes mailing list