static view_id_btree_value_t *test_view_id_btree_value_decoding(const char *id_btree_value_bin, size_t len) { view_id_btree_value_t *v = NULL; assert(decode_view_id_btree_value(id_btree_value_bin, len, &v) == COUCHSTORE_SUCCESS); assert(v != NULL); assert(v->partition == 67); assert(v->num_view_keys_map == 2); assert(v->view_keys_map[0].view_id == 0); assert(v->view_keys_map[0].num_keys == 2); assert(v->view_keys_map[0].json_keys[0].size == 14); assert(memcmp(v->view_keys_map[0].json_keys[0].buf, "[123,\"foobar\"]", v->view_keys_map[0].json_keys[0].size) == 0); assert(v->view_keys_map[0].json_keys[1].size == 4); assert(memcmp(v->view_keys_map[0].json_keys[1].buf, "-321", v->view_keys_map[0].json_keys[1].size) == 0); assert(v->view_keys_map[1].view_id == 1); assert(v->view_keys_map[1].num_keys == 1); assert(v->view_keys_map[1].json_keys[0].size == 7); assert(memcmp(v->view_keys_map[1].json_keys[0].buf, "[5,6,7]", v->view_keys_map[1].json_keys[0].size) == 0); return v; }
int view_id_btree_filter(const sized_buf *k, const sized_buf *v, const bitmap_t *bm) { int ret = 0; couchstore_error_t errcode = COUCHSTORE_SUCCESS; view_id_btree_value_t *val = NULL; (void) k; errcode = decode_view_id_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_id_btree_value(val); return ret; }
int view_id_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_id_btree_value_t *v = NULL; (void) key; errcode = decode_view_id_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, 1, purge_ctx); cleanup: free_view_id_btree_value(v); return action; }