Esempio n. 1
0
int main(int argc, char** argv)
{
    Db* source;
    couchstore_error_t errcode;
    time_purge_ctx timepurge = {0, 0};
    couchstore_compact_hook hook = NULL;
    void* hook_ctx = NULL;
    int argp = 1;
    couchstore_compact_flags flags = 0;
    const couch_file_ops* target_io_ops = couchstore_get_default_file_ops();
    if(argc < 3)
    {
        usage(argv[0]);
    }

    while(argv[argp][0] == '-') {
        if(!strcmp(argv[argp],"--purge-before")) {
            argp+=2;
            if(argc + argp < 2) {
                usage(argv[0]);
            }
            hook = time_purge_hook;
            hook_ctx = &timepurge;
            timepurge.purge_before_ts = atoi(argv[argp-1]);
            printf("Purging items before timestamp %"PRIu64"\n", timepurge.purge_before_ts);
        }

        if(!strcmp(argv[argp],"--purge-only-upto-seq")) {
            if(argc - argp < 3) {
                usage(argv[0]);
            }
            argp+=2;
            timepurge.purge_before_seq = (uint64_t)(atoll(argv[argp-1]));
            printf("Purging items only up-to seq %"PRIu64"\n", timepurge.purge_before_seq);
        }

        if(!strcmp(argv[argp],"--dropdeletes")) {
            argp++;
            if(argc + argp < 2) {
                usage(argv[0]);
            }
            flags = COUCHSTORE_COMPACT_FLAG_DROP_DELETES;
        }
    }

    errcode = couchstore_open_db(argv[argp++], COUCHSTORE_OPEN_FLAG_RDONLY, &source);
    if(errcode)
    {
        exit_error(errcode);
    }
    errcode = couchstore_compact_db_ex(source, argv[argp], flags, hook, hook_ctx, target_io_ops);
    if(errcode)
    {
        exit_error(errcode);
    }

    printf("Compacted %s -> %s\n", argv[argp - 1], argv[argp]);
    return 0;
}
Esempio n. 2
0
int main(int argc, char** argv)
{
    Db* source;
    couchstore_error_t errcode;
    if(argc < 3)
    {
        usage(argv[0]);
    }
    int argp = 1;
    couchstore_compact_flags flags = 0;
    const couch_file_ops* target_io_ops = couchstore_get_default_file_ops();

    while((argp < argc) && (argv[argp][0] == '-')) {
        if(!strcmp(argv[argp],"--dropdeletes")) {
            argp++;
            if(argc < (argp + 2)) {
                usage(argv[0]);
            }
            flags |= COUCHSTORE_COMPACT_FLAG_DROP_DELETES;
        }
        if(!strcmp(argv[argp],"--evict")) {
            argp++;
            if(argc < (argp + 2)) {
                usage(argv[0]);
            }
            flags |= COUCHSTORE_COMPACT_FLAG_EVICT_BODIES;
        }
    }

    errcode = couchstore_open_db(argv[argp++], COUCHSTORE_OPEN_FLAG_RDONLY, &source);
    if(errcode)
    {
        exit_error(errcode);
    }
    errcode = couchstore_compact_db_ex(source, argv[argp], flags, target_io_ops);
    if(errcode)
    {
        exit_error(errcode);
    }

    printf("Compacted %s -> %s\n", argv[argp - 1], argv[argp]);
    return 0;
}