[svn] commit: r2214 - in /branches/trac232/src/lib/datasrc: data_source.cc data_source.h sqlite3_datasrc.cc sqlite3_datasrc.h

BIND 10 source code commits bind10-changes at lists.isc.org
Tue Jun 22 09:15:23 UTC 2010


Author: jelte
Date: Tue Jun 22 09:15:22 2010
New Revision: 2214

Log:
delZone() added

Modified:
    branches/trac232/src/lib/datasrc/data_source.cc
    branches/trac232/src/lib/datasrc/data_source.h
    branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
    branches/trac232/src/lib/datasrc/sqlite3_datasrc.h

Modified: branches/trac232/src/lib/datasrc/data_source.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.cc (original)
+++ branches/trac232/src/lib/datasrc/data_source.cc Tue Jun 22 09:15:22 2010
@@ -949,6 +949,12 @@
 }
 
 DataSrc::Result
+DataSrc::delZone(DataSrcTransaction* transaction UNUSED_PARAM)
+{
+    return NOT_IMPLEMENTED;
+}
+
+DataSrc::Result
 MetaDataSrc::findRRset(const isc::dns::Name& qname UNUSED_PARAM,
                        const isc::dns::RRClass& qclass UNUSED_PARAM,
                        const isc::dns::RRType& qtype UNUSED_PARAM,
@@ -1029,18 +1035,6 @@
                       isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
 {
     return NOT_IMPLEMENTED;
-    // TODO: factor out this code (copied from doQuery)
-    // (with one change, no DS special case)
-    /*
-    NameMatch match(zonename);
-    findClosestEnclosure(match, rrset.getClass());
-    DataSrc* datasource = (DataSrc*) match.bestDataSrc();
-    if (datasource) {
-        return datasource->addRRset(zonename, rrset);
-    } else {
-        return DataSrc::ERROR;
-    }
-    */
 }
 
 DataSrc::Result
@@ -1048,20 +1042,13 @@
                       isc::dns::ConstRRsetPtr rrset UNUSED_PARAM)
 {
     return NOT_IMPLEMENTED;
-
-    // TODO: factor out this code (copied from doQuery)
-    // (with one change, no DS special case)
-    /*
-    NameMatch match(zonename);
-    findClosestEnclosure(match, rrset.getClass());
-    DataSrc* datasource = (DataSrc*) match.bestDataSrc();
-    if (datasource) {
-        return datasource->delRRset(zonename, rrset);
-    } else {
-        return DataSrc::ERROR;
-    }
-    */
-}
-
-}
-}
+}
+
+DataSrc::Result
+MetaDataSrc::delZone(DataSrcTransaction* transaction UNUSED_PARAM)
+{
+    return NOT_IMPLEMENTED;
+}
+
+}
+}

Modified: branches/trac232/src/lib/datasrc/data_source.h
==============================================================================
--- branches/trac232/src/lib/datasrc/data_source.h (original)
+++ branches/trac232/src/lib/datasrc/data_source.h Tue Jun 22 09:15:22 2010
@@ -248,6 +248,7 @@
                             isc::dns::ConstRRsetPtr rrset);
     virtual Result delRRset(DataSrcTransaction* transaction,
                             isc::dns::ConstRRsetPtr rrset);
+    virtual Result delZone(DataSrcTransaction* transaction);
     virtual Result startTransaction(DataSrcTransaction** transaction, const isc::dns::Name& zonename);
     virtual Result commitTransaction(DataSrcTransaction *transaction);
     virtual Result rollbackTransaction(DataSrcTransaction *transaction);
@@ -333,6 +334,7 @@
                             isc::dns::ConstRRsetPtr rrset);
     virtual Result delRRset(DataSrcTransaction* transaction,
                             isc::dns::ConstRRsetPtr rrset);
+    virtual Result delZone(DataSrcTransaction* transaction);
     // end of writable data sources part
 private:
     std::vector<ConstDataSrcPtr> data_sources;

Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.cc Tue Jun 22 09:15:22 2010
@@ -58,6 +58,7 @@
     sqlite3_stmt* w_add_rr_;
     sqlite3_stmt* w_del_rr_;
     sqlite3_stmt* w_del_all_;
+    sqlite3_stmt* w_del_zone_;
 };
 
 namespace {
@@ -127,6 +128,8 @@
 
 const char* const w_del_all_str = "DELETE FROM records WHERE zone_id = ?1";
 
+const char* const w_del_zone_str = "DELETE FROM zones WHERE id = ?1";
+
 const char* const w_start_transaction_str = "BEGIN TRANSACTION";
 
 const char* const w_commit_transaction_str = "COMMIT TRANSACTION";
@@ -692,6 +695,7 @@
     initializer->params_.w_add_rr_ = prepare(db, w_add_rr_str);
     initializer->params_.w_del_rr_ = prepare(db, w_del_rr_str);
     initializer->params_.w_del_all_ = prepare(db, w_del_all_str);
+    initializer->params_.w_del_zone_ = prepare(db, w_del_zone_str);
     
 }
 }
@@ -760,6 +764,9 @@
     dbparameters->w_del_rr_ = NULL;
 
     sqlite3_finalize(dbparameters->w_del_all_);
+    dbparameters->w_del_rr_ = NULL;
+
+    sqlite3_finalize(dbparameters->w_del_zone_);
     dbparameters->w_del_rr_ = NULL;
 
     sqlite3_close(dbparameters->db_);
@@ -1019,7 +1026,7 @@
 DataSrc::Result
 Sqlite3DataSrc::delAll(int zone_id)
 {
-    sqlite3_stmt* query = dbparameters->w_del_rr_;
+    sqlite3_stmt* query = dbparameters->w_del_all_;
     
     sqlite3_reset(query);
     sqlite3_clear_bindings(query);
@@ -1060,6 +1067,43 @@
     }
     return DataSrc::SUCCESS;
 }
+
+DataSrc::Result
+Sqlite3DataSrc::delZone(DataSrcTransaction* transaction)
+{
+    Sqlite3DataSrcTransaction *trans = (Sqlite3DataSrcTransaction*)transaction;
+    DataSrc::Result result = delAll(trans->zone_id);
+    if (result != DataSrc::SUCCESS) {
+        return result;
+    }
+
+    sqlite3_stmt* query = dbparameters->w_del_zone_;
+    
+    sqlite3_reset(query);
+    sqlite3_clear_bindings(query);
+
+    int rc;
+    rc = sqlite3_bind_int(query, 1, trans->zone_id);
+    if (rc != SQLITE_OK) {
+        isc_throw(Sqlite3Error, "Could not bind zone ID " << trans->zone_id <<
+                  " to SQL statement (query)");
+    }
+
+    std::cout << "[XX] del zone " << trans->zone_id << " query prepared, executing" << std::endl;
+    int q_result = sqlite3_step(query);
+
+    sqlite3_reset(query);
+
+    if (q_result == SQLITE_DONE) {
+        return DataSrc::SUCCESS;
+    } else {
+        std::cout << "[XX] sqlite3 del zone error: " << result << std::endl;;
+        std::cout << "[XX] " << sqlite3_errmsg(dbparameters->db_) << std::endl;
+
+        return DataSrc::ERROR;
+    }
+}
+
 
 DataSrc::Result
 Sqlite3DataSrc::delRRset(DataSrcTransaction* transaction,

Modified: branches/trac232/src/lib/datasrc/sqlite3_datasrc.h
==============================================================================
--- branches/trac232/src/lib/datasrc/sqlite3_datasrc.h (original)
+++ branches/trac232/src/lib/datasrc/sqlite3_datasrc.h Tue Jun 22 09:15:22 2010
@@ -120,6 +120,8 @@
                              isc::dns::ConstRRsetPtr rrset);
     DataSrc::Result replaceZone(DataSrcTransaction* transaction,
                                 isc::dns::RRsetList& rrsets);
+    DataSrc::Result delZone(DataSrcTransaction* transaction);
+
 private:
     DataSrc::Result addRR(int zone_id,
                           const isc::dns::Name& name,




More information about the bind10-changes mailing list