int SSDB::multi_zdel(const Bytes &name, const std::vector<Bytes> &keys, int offset, char log_type){ Transaction trans(binlogs); int ret = 0; std::vector<Bytes>::const_iterator it; it = keys.begin() + offset; for(; it != keys.end(); it++){ const Bytes &key = *it; int tmp = zdel_one(this, name, key, log_type); if(tmp == -1){ return -1; } ret += tmp; } if(ret >= 0){ if(ret > 0){ if(incr_zsize(this, name, -ret) == -1){ return -1; } } leveldb::Status s = binlogs->commit(); if(!s.ok()){ log_error("zdel error: %s", s.ToString().c_str()); return -1; } } return ret; }
int zset_del(ldb_context_t* context, const ldb_slice_t* name, const ldb_slice_t* key, const ldb_meta_t* meta){ int ret = zdel_one(context, name, key, meta); int retval = LDB_OK; if(ret >= 0){ if(ret > 0){ if(zset_incr_size(context, name, -ret) == -1){ retval = LDB_ERR; goto end; } } char* errptr = NULL; ldb_context_writebatch_commit(context, &errptr); if( errptr != NULL ){ fprintf(stderr, "write writebatch fail %s.\n", errptr); leveldb_free(errptr); retval = LDB_ERR; goto end; } retval = LDB_OK; }else{ retval = LDB_ERR; } end: return retval; }
int SSDB::zdel(const Bytes &name, const Bytes &key, char log_type){ Transaction trans(binlogs); int ret = zdel_one(this, name, key, log_type); if(ret >= 0){ if(ret > 0){ if(incr_zsize(this, name, -ret) == -1){ return -1; } } leveldb::Status s = binlogs->commit(); if(!s.ok()){ log_error("zdel error: %s", s.ToString().c_str()); return -1; } } return ret; }