BIND 10 trac1183, updated. 7f08fc3123ef7d26a2e61dd29455c07510404a7e [1183] remove unused member, and fix a typo in comment

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Aug 22 11:11:59 UTC 2011


The branch, trac1183 has been updated
       via  7f08fc3123ef7d26a2e61dd29455c07510404a7e (commit)
       via  9d48d1964569b49be17afc3e20085a23544a32de (commit)
      from  6318db7dc90cb6656cc2a1f8e875f2258f6a4343 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 7f08fc3123ef7d26a2e61dd29455c07510404a7e
Author: Jelte Jansen <jelte at isc.org>
Date:   Mon Aug 22 13:11:27 2011 +0200

    [1183] remove unused member, and fix a typo in comment

commit 9d48d1964569b49be17afc3e20085a23544a32de
Author: Jelte Jansen <jelte at isc.org>
Date:   Mon Aug 22 11:39:00 2011 +0200

    [1183] make sure getNext() when done does not error

-----------------------------------------------------------------------

Summary of changes:
 src/lib/datasrc/database.h                         |    3 +++
 src/lib/datasrc/sqlite3_accessor.cc                |   15 ++++++---------
 src/lib/datasrc/tests/database_unittest.cc         |    2 +-
 src/lib/datasrc/tests/sqlite3_accessor_unittest.cc |    6 ++++++
 4 files changed, 16 insertions(+), 10 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/database.h b/src/lib/datasrc/database.h
index 95c1c5a..d7785e6 100644
--- a/src/lib/datasrc/database.h
+++ b/src/lib/datasrc/database.h
@@ -148,6 +148,9 @@ public:
          * \throw DataSourceError if there's database-related error. If the
          *     exception (or any other in case of derived class) is thrown,
          *     the iterator can't be safely used any more.
+         * \return true if a record was found, and the columns array was
+         *         updated. false if there was no more data, in which case
+         *         the columns array is untouched.
          */
         virtual bool getNext(std::string (&columns)[COLUMN_COUNT]) = 0;
     };
diff --git a/src/lib/datasrc/sqlite3_accessor.cc b/src/lib/datasrc/sqlite3_accessor.cc
index 86487ae..e604cf9 100644
--- a/src/lib/datasrc/sqlite3_accessor.cc
+++ b/src/lib/datasrc/sqlite3_accessor.cc
@@ -27,7 +27,7 @@ namespace datasrc {
 struct SQLite3Parameters {
     SQLite3Parameters() :
         db_(NULL), version_(-1),
-        q_zone_(NULL), q_any_(NULL)
+        q_zone_(NULL)
         /*q_record_(NULL), q_addrs_(NULL), q_referral_(NULL),
         q_count_(NULL), q_previous_(NULL), q_nsec3_(NULL),
         q_prevnsec3_(NULL) */
@@ -35,7 +35,6 @@ struct SQLite3Parameters {
     sqlite3* db_;
     int version_;
     sqlite3_stmt* q_zone_;
-    sqlite3_stmt* q_any_;
     /*
     TODO: Yet unneeded statements
     sqlite3_stmt* q_record_;
@@ -75,9 +74,6 @@ public:
         if (params_.q_zone_ != NULL) {
             sqlite3_finalize(params_.q_zone_);
         }
-        if (params_.q_any_ != NULL) {
-            sqlite3_finalize(params_.q_any_);
-        }
         /*
         if (params_.q_record_ != NULL) {
             sqlite3_finalize(params_.q_record_);
@@ -214,7 +210,6 @@ checkAndSetupSchema(Initializer* initializer) {
     }
 
     initializer->params_.q_zone_ = prepare(db, q_zone_str);
-    initializer->params_.q_any_ = prepare(db, q_any_str);
     /* TODO: Yet unneeded statements
     initializer->params_.q_record_ = prepare(db, q_record_str);
     initializer->params_.q_addrs_ = prepare(db, q_addrs_str);
@@ -265,9 +260,6 @@ SQLite3Database::close(void) {
     sqlite3_finalize(dbparameters_->q_zone_);
     dbparameters_->q_zone_ = NULL;
 
-    sqlite3_finalize(dbparameters_->q_any_);
-    dbparameters_->q_any_ = NULL;
-
     /* TODO: Once they are needed or not, uncomment or drop
     sqlite3_finalize(dbparameters->q_record_);
     dbparameters->q_record_ = NULL;
@@ -369,6 +361,11 @@ public:
 
     bool getNext(std::string (&data)[COLUMN_COUNT]) {
         // If there's another row, get it
+        // If finalize has been called (e.g. when previous getNext() got
+        // SQLITE_DONE), directly return false
+        if (statement_ == NULL) {
+            return false;
+        }
         const int rc(sqlite3_step(statement_));
         if (rc == SQLITE_ROW) {
             // For both types, we copy the first four columns
diff --git a/src/lib/datasrc/tests/database_unittest.cc b/src/lib/datasrc/tests/database_unittest.cc
index 2153f01..8ff8c55 100644
--- a/src/lib/datasrc/tests/database_unittest.cc
+++ b/src/lib/datasrc/tests/database_unittest.cc
@@ -97,7 +97,7 @@ private:
             searched_name_(name), cur_record_(0)
         {
             // 'hardcoded' names to trigger exceptions
-            // On these names some exceptions are throws, to test the robustness
+            // On these names some exceptions are thrown, to test the robustness
             // of the find() method.
             if (searched_name_ == "dsexception.in.search.") {
                 isc_throw(DataSourceError, "datasource exception on search");
diff --git a/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc b/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc
index 295bed2..5f7abaf 100644
--- a/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc
+++ b/src/lib/datasrc/tests/sqlite3_accessor_unittest.cc
@@ -190,6 +190,9 @@ TEST_F(SQLite3Access, iterator) {
 
     // Check there's no other
     EXPECT_FALSE(context->getNext(data));
+
+    // And make sure calling it again won't cause problems.
+    EXPECT_FALSE(context->getNext(data));
 }
 
 TEST(SQLite3Open, getDBNameExample2) {
@@ -321,6 +324,9 @@ TEST_F(SQLite3Access, getRecords) {
     checkRecordRow(columns, "RRSIG", "3600", "DNSKEY",
                    "DNSKEY 5 2 3600 20100322084538 20100220084538 "
                    "33495 example.com. FAKEFAKEFAKEFAKE", "");
+
+    // check that another getNext does not cause problems
+    EXPECT_FALSE(context->getNext(columns));
 }
 
 } // end anonymous namespace




More information about the bind10-changes mailing list