Ejemplo n.º 1
0
 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");
     }
 }
Ejemplo n.º 2
0
 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());
  }
Ejemplo n.º 4
0
 inline value_accessor get() const { return value_accessor(cursor_, mask_cursor_, curtype()); }