summaryrefslogtreecommitdiffstats
path: root/src/storage/phrase_large_table3_kyotodb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/storage/phrase_large_table3_kyotodb.cpp')
-rw-r--r--src/storage/phrase_large_table3_kyotodb.cpp20
1 files changed, 4 insertions, 16 deletions
diff --git a/src/storage/phrase_large_table3_kyotodb.cpp b/src/storage/phrase_large_table3_kyotodb.cpp
index fa427dc..a02eac3 100644
--- a/src/storage/phrase_large_table3_kyotodb.cpp
+++ b/src/storage/phrase_large_table3_kyotodb.cpp
@@ -262,32 +262,20 @@ public:
vbuf = (char *) m_entry.m_chunk.begin();
vsiz = m_entry.m_chunk.size();
- assert(m_db->set(kbuf, ksiz, vbuf, vsiz));
- return NOP;
+ *sp = vsiz;
+ return vbuf;
}
virtual const char* visit_empty(const char* kbuf, size_t ksiz, size_t* sp) {
- m_db->set(kbuf, ksiz, empty_vbuf, 0);
return NOP;
}
};
/* mask out method */
-/* assume it is in-memory dbm. */
bool PhraseLargeTable3::mask_out(phrase_token_t mask,
phrase_token_t value) {
- /* use copy and sweep algorithm here. */
- BasicDB * tmp_db = new ProtoTreeDB;
- if (!tmp_db->open("-", BasicDB::OREADER|BasicDB::OWRITER|BasicDB::OCREATE))
- return false;
-
- MaskOutVisitor visitor(tmp_db, mask, value);
- m_db->iterate(&visitor, false);
-
- reset();
-
- m_db = tmp_db;
- m_entry = new PhraseTableEntry;
+ MaskOutVisitor visitor(m_db, mask, value);
+ m_db->iterate(&visitor, true);
return true;
}