[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