Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}