void BerkeleyQ::save_queue_size(const string& queue_name, unsigned long size) { string key = build_queue_size_key(queue_name); Dbt key_accessor((void*)key.c_str(), (uint)key.size()+1); Dbt value_accessor((void*)&size, sizeof(unsigned long)); switch (int ret = db->put(NULL, &key_accessor, &value_accessor, DB_OVERWRITE_DUP)) { case 0: break; default: q_error("berkeley put: unknown error"); } }
void BerkeleyQ::save_record(const string& key, const string& value, const uint flags) { Dbt key_accessor((void*)key.c_str(), (uint)key.size()+1); Dbt value_accessor((void*)value.c_str(), (uint)value.size()); switch (int ret = db->put(NULL, &key_accessor, &value_accessor, flags)) { case 0: //q_log("berkeley put: [%s] key stored", key.c_str()); break; case DB_KEYEXIST: q_log("berkeley put: [%s] key already exists", key.c_str()); break; default: q_error("berkeley put: unknown error"); } }
static TupleIdSequence* GetMatchesForPredicateOnTupleStore( const Predicate &pred, const TupleStorageSubBlock &tuple_store) { PtrVector<IndexSubBlock> indices_dummy; std::vector<bool> indices_consistent_dummy; SubBlocksReference sub_blocks_ref(tuple_store, indices_dummy, indices_consistent_dummy); std::unique_ptr<ValueAccessor> value_accessor(tuple_store.createValueAccessor()); std::unique_ptr<TupleIdSequence> existence_map; if (!tuple_store.isPacked()) { existence_map.reset(tuple_store.getExistenceMap()); } return pred.getAllMatches(value_accessor.get(), &sub_blocks_ref, nullptr, existence_map.get()); }
inline value_accessor get() const { return value_accessor(cursor_, mask_cursor_, curtype()); }