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; }