Ejemplo n.º 1
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
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);
}