MojErr MojDbLevelIndex::del(const MojDbKey& key, MojDbStorageTxn* txn) { LOG_TRACE("Entering function %s", __FUNCTION__); MojAssert(txn); MojAssert(isOpen()); MojDbLevelItem keyItem; keyItem.fromBytesNoCopy(key.data(), key.size()); bool found = false; MojErr err = m_db->del(keyItem, found, txn); #ifdef MOJ_DEBUG char s[1024]; size_t size1 = keyItem.size(); MojErr err2 = MojByteArrayToHex(keyItem.data(), size1, s); MojErrCheck(err2); if (size1 > 16) // if the object-id is in key strncat(s, (char *)(keyItem.data()) + (size1 - 17), 16); LOG_DEBUG("[db_ldb] ldbindexdel: %s; keylen: %zu, key: %s ; err = %d\n", m_db->m_name.data(), size1, s, err); if (!found) LOG_WARNING(MSGID_LEVEL_DB_WARNING, 1, PMLOGKS("index", s), "ldbindexdel_warn: not found: %s \n", s); #endif MojErrCheck(err); if (!found) { //MojErrThrow(MojErrDbInconsistentIndex); // fix this to work around to deal with out of sync indexes MojErrThrow(MojErrInternalIndexOnDel); } return MojErrNone; }
MojErr MojDbLevelIndex::insert(const MojDbKey& key, MojDbStorageTxn* txn) { LOG_TRACE("Entering function %s", __FUNCTION__); MojAssert(txn); MojDbLevelItem keyItem; keyItem.fromBytesNoCopy(key.data(), key.size()); MojDbLevelItem valItem; // empty item? not clear why do we need to insert it MojErr err = m_db->put(keyItem, valItem, txn, true); #ifdef MOJ_DEBUG char s[1024]; size_t size1 = keyItem.size(); size_t size2 = valItem.size(); MojErr err2 = MojByteArrayToHex(keyItem.data(), size1, s); MojErrCheck(err2); if (size1 > 16) // if the object-id is in key strncat(s, (char *)(keyItem.data()) + (size1 - 17), 16); LOG_DEBUG("[db_ldb] ldbindexinsert: %s; keylen: %zu, key: %s ; vallen = %zu; err = %d\n", m_db->m_name.data(), size1, s, size2, err); #endif MojErrCheck(err); return MojErrNone; }