bool increment(llong* id, valvec<byte>* key) override { auto owner = static_cast<const MockWritableIndex*>(m_index.get()); if (nark_likely(owner->m_kv.begin() != m_iter)) { --m_iter; *id = m_iter->second; copyKey(m_iter->first, key); return true; } return false; }
bool increment(llong* id, valvec<byte>* key) override { auto owner = static_cast<const MockWritableIndex*>(m_index.get()); SpinRwLock lock(owner->m_rwMutex, false); if (terark_likely(owner->m_kv.end() != m_iter)) { *id = m_iter->second; copyKey(m_iter->first, key); ++m_iter; return true; } return false; }
int seekLowerBound(fstring key, llong* id, valvec<byte>* retKey) override { auto owner = static_cast<const MockWritableIndex*>(m_index.get()); auto kv = std::make_pair(makeKey<Key>(key), 0LL); auto iter = owner->m_kv.lower_bound(kv); m_iter = iter; if (owner->m_kv.end() != iter) { ++m_iter; *id = iter->second; copyKey(iter->first, retKey); if (iter->first == kv.first) return 0; else return 1; } return -1; }
int seekLowerBound(fstring key, llong* id, valvec<byte>* retKey) override { auto owner = static_cast<const MockWritableIndex*>(m_index.get()); auto kv = std::make_pair(makeKey<Key>(key), 0LL); SpinRwLock lock(owner->m_rwMutex, false); auto iter = owner->m_kv.upper_bound(kv); if (owner->m_kv.begin() != iter) { m_iter = --iter; *id = iter->second; copyKey(iter->first, retKey); if (iter->first == kv.first) return 0; else return 1; } else { m_iter = iter; return -1; } }
void reset() { auto owner = static_cast<const MockWritableIndex*>(m_index.get()); m_iter = owner->m_kv.end(); }
MyIndexIterBackward(const MockWritableIndex* owner) { m_isUniqueInSchema = owner->isUnique(); m_index.reset(const_cast<MockWritableIndex*>(owner)); m_iter = owner->m_kv.end(); }
void reset() override { auto owner = static_cast<const MockWritableIndex*>(m_index.get()); m_iter = owner->m_kv.begin(); }
MyIndexIterForward(const MockWritableIndex* owner) { m_index.reset(const_cast<MockWritableIndex*>(owner)); m_iter = owner->m_kv.begin(); }