MojErr MojDbLevelDatabase::del(const MojObject& id, MojDbStorageTxn* txn, bool& foundOut) { LOG_TRACE("Entering function %s", __FUNCTION__); MojDbLevelItem idItem; MojErr err = idItem.fromObject(id); MojErrCheck(err); err = del(idItem, foundOut, txn); MojErrCheck(err); return MojErrNone; }
MojErr MojDbLevelDatabase::put(const MojObject& id, MojBuffer& val, MojDbStorageTxn* txn, bool updateIdQuota) { LOG_TRACE("Entering function %s", __FUNCTION__); MojDbLevelItem idItem; MojErr err = idItem.fromObject(id); MojErrCheck(err); MojDbLevelItem valItem; err = valItem.fromBuffer(val); MojErrCheck(err); err = put(idItem, valItem, txn, updateIdQuota); MojErrCheck(err); return MojErrNone; }
MojErr MojDbLevelDatabase::get(const MojObject& id, MojDbStorageTxn* txn, bool forUpdate, MojRefCountedPtr<MojDbStorageItem>& itemOut) { LOG_TRACE("Entering function %s", __FUNCTION__); // stop here itemOut.reset(); MojDbLevelItem idItem; MojErr err = idItem.fromObject(id); MojErrCheck(err); MojRefCountedPtr<MojDbLevelItem> valItem(new MojDbLevelItem); MojAllocCheck(valItem.get()); bool found = false; err = get(idItem, txn, forUpdate, *valItem, found); MojErrCheck(err); if (found) { valItem->id(id); itemOut = valItem; } return MojErrNone; }
MojErr MojDbLevelQuery::getById(const MojObject& id, MojDbStorageItem*& itemOut, bool& foundOut) { itemOut = NULL; foundOut = false; MojDbLevelItem* item = NULL; MojErr err = MojErrNone; if (m_db) { // retrun val from primary db MojDbLevelItem primaryKey; err = primaryKey.fromObject(id); MojErrCheck(err); err = m_db->get(primaryKey, m_txn, false, m_primaryVal, foundOut); MojErrCheck(err); if (!foundOut) { char s[1024]; int size = primaryKey.size(); (void) MojByteArrayToHex(primaryKey.data(), size, s); MojLogInfo(MojDbLevelEngine::s_log, _T("bdbq_byId_warnindex: KeySize: %d; %s ;id: %s \n"), size, s, primaryKey.data()+1); //MojErrThrow(MojErrDbInconsistentIndex); MojErrThrow(MojErrInternalIndexOnFind); } item = &m_primaryVal; } else { // return val from cursor item = &m_val; } item->id(id); // check for exclusions bool exclude = false; err = checkExclude(item, exclude); MojErrCheck(err); if (!exclude) { itemOut = item; } return MojErrNone; }