static view_btree_value_t *test_view_btree_value_decoding(const char *value_bin, size_t len) { view_btree_value_t *v = NULL; assert(decode_view_btree_value(value_bin, len, &v) == COUCHSTORE_SUCCESS); assert(v != NULL); assert(v->partition == 10); assert(v->num_values == 2); assert(v->values[0].size == 4); assert(memcmp(v->values[0].buf, "6155", v->values[0].size) == 0); assert(v->values[1].size == 4); assert(memcmp(v->values[1].buf, "6154", v->values[0].size) == 0); return v; }
int view_btree_filter(const sized_buf *k, const sized_buf *v, const bitmap_t *bm) { int ret = 0; couchstore_error_t errcode = COUCHSTORE_SUCCESS; view_btree_value_t *val = NULL; (void) k; errcode = decode_view_btree_value(v->buf, v->size, &val); if (errcode != COUCHSTORE_SUCCESS) { ret = (int) errcode; goto cleanup; } ret = is_bit_set(bm, val->partition); cleanup: free_view_btree_value(val); return ret; }
int view_btree_purge_kv(const sized_buf *key, const sized_buf *val, void *ctx) { int action; couchstore_error_t errcode = COUCHSTORE_SUCCESS; view_purger_ctx_t *purge_ctx = (view_purger_ctx_t *) ctx; view_btree_value_t *v = NULL; (void) key; errcode = decode_view_btree_value(val->buf, val->size, &v); if (errcode != COUCHSTORE_SUCCESS) { action = (int) errcode; goto cleanup; } action = view_purgekv_action(&purge_ctx->cbitmask, v->partition, v->num_values, purge_ctx); cleanup: free_view_btree_value(v); return action; }