[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