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; }
void test_values() { char value_bin[] = { 0,10,0,0,4,54,49,53,53,0,0,4,54,49,53,52 }; char id_btree_value_bin[] = { 0,67,0,0,2,0,14,91,49,50,51,44,34,102,111,111,98,97,114, 34,93,0,4,45,51,50,49,1,0,1,0,7,91,53,44,54,44,55,93 }; char *v_bin2 = NULL; size_t v_bin2_size = 0; char *id_btree_v_bin2 = NULL; size_t id_btree_v_bin2_size = 0; char *v_bin3 = NULL; size_t v_bin3_size = 0; char *id_btree_v_bin3 = NULL; size_t id_btree_v_bin3_size = 0; TPRINT("Decoding a view btree value ...\n"); view_btree_value_t *v = test_view_btree_value_decoding(value_bin, sizeof(value_bin)); TPRINT("Decoding a view id btree value ...\n"); view_id_btree_value_t *id_btree_v; id_btree_v = test_view_id_btree_value_decoding(id_btree_value_bin, sizeof(id_btree_value_bin)); TPRINT("Encoding the previously decoded view btree value ...\n"); test_view_btree_value_encoding(v, &v_bin2, &v_bin2_size); assert(v_bin2_size == sizeof(value_bin)); assert(memcmp(v_bin2, value_bin, v_bin2_size) == 0); TPRINT("Encoding the previously decoded view id btree value ...\n"); test_view_id_btree_value_encoding(id_btree_v, &id_btree_v_bin2, &id_btree_v_bin2_size); assert(id_btree_v_bin2_size == sizeof(id_btree_value_bin)); assert(memcmp(id_btree_v_bin2, id_btree_value_bin, id_btree_v_bin2_size) == 0); TPRINT("Decoding the previously encoded view btree value ...\n"); view_btree_value_t *v2 = test_view_btree_value_decoding(v_bin2, v_bin2_size); TPRINT("Decoding the previously encoded view id btree value ...\n"); view_id_btree_value_t *id_btree_v2; id_btree_v2 = test_view_id_btree_value_decoding(id_btree_v_bin2, id_btree_v_bin2_size); TPRINT("Encoding the previously decoded view btree value ...\n"); test_view_btree_value_encoding(v2, &v_bin3, &v_bin3_size); assert(v_bin3_size == sizeof(value_bin)); assert(memcmp(v_bin3, value_bin, v_bin3_size) == 0); TPRINT("Encoding the previously decoded view id btree value ...\n"); test_view_id_btree_value_encoding(id_btree_v2, &id_btree_v_bin3, &id_btree_v_bin3_size); assert(id_btree_v_bin3_size == sizeof(id_btree_value_bin)); assert(memcmp(id_btree_v_bin3, id_btree_value_bin, id_btree_v_bin3_size) == 0); free_view_btree_value(v); free_view_btree_value(v2); free(v_bin2); free(v_bin3); free_view_id_btree_value(id_btree_v); free_view_id_btree_value(id_btree_v2); free(id_btree_v_bin2); free(id_btree_v_bin3); }