From c4be743bbe34a81a825bd5a8871667ea770be38f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 7 Nov 2014 13:06:53 -0800 Subject: [PATCH] forestdb: Update for new api changes. Fix some unit tests, they look better now. --- extra/forestdb/ffi/ffi.factor | 46 +++++++++++++++++++++-------- extra/forestdb/lib/lib-tests.factor | 6 ++-- extra/forestdb/lib/lib.factor | 1 - 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/extra/forestdb/ffi/ffi.factor b/extra/forestdb/ffi/ffi.factor index 1cf146993a..803f92882a 100644 --- a/extra/forestdb/ffi/ffi.factor +++ b/extra/forestdb/ffi/ffi.factor @@ -22,6 +22,7 @@ CONSTANT: FDB_SNAPSHOT_INMEM -1 TYPEDEF: void* fdb_custom_cmp_fixed TYPEDEF: void* fdb_custom_cmp_variable TYPEDEF: void* fdb_log_callback +TYPEDEF: void* fdb_file_handle TYPEDEF: void* fdb_handle TYPEDEF: void* fdb_iterator @@ -89,7 +90,12 @@ ENUM: fdb_status { FDB_RESULT_FAIL_BY_TRANSACTION -27 } { FDB_RESULT_FAIL_BY_COMPACTION -28 } { FDB_RESULT_TOO_LONG_FILENAME -29 } - { FDB_RESULT_IN_USE_BY_COMPACTOR -30 } + { FDB_RESULT_INVALID_HANDLE -30 } + { FDB_RESULT_KV_STORE_NOT_FOUND -31 } + { FDB_RESULT_KV_STORE_BUSY -32 } + { FDB_RESULT_INVALID_KV_INSTANCE_NAME -33 } + { FDB_RESULT_INVALID_CMP_FUNCTION -34 } + { FDB_RESULT_IN_USE_BY_COMPACTOR -35 } { FDB_RESULT_FAIL -100 } ; ! cmp_fixed and cmp_variable have their own open() functions @@ -110,8 +116,11 @@ STRUCT: fdb_config { compaction_threshold uint8_t } { compaction_minimum_filesize uint64_t } { compactor_sleep_duration uint64_t } - { cmp_fixed fdb_custom_cmp_fixed } - { cmp_variable fdb_custom_cmp_variable } ; + { multi_kv_instances bool } ; + +STRUCT: fdb_kvs_config + { create_if_missing bool } + { custom_cmp fdb_custom_cmp_variable } ; STRUCT: fdb_doc { keylen size_t } @@ -131,16 +140,20 @@ STRUCT: fdb_doc STRUCT: fdb_info { filename char* } { new_filename char* } - { last_seqnum fdb_seqnum_t } { doc_count uint64_t } { space_used uint64_t } { file_size uint64_t } ; -FUNCTION: fdb_status fdb_init ( fdb_config* config ) ; +STRUCT: fdb_kvs_info + { name char* } + { last_seqnum fdb_seqnum_t } ; -FUNCTION: fdb_status fdb_open ( fdb_handle** ptr_handle, c-string filename, fdb_config* fconfig ) ; -FUNCTION: fdb_status fdb_open_cmp_fixed ( fdb_handle** ptr_handle, c-string filename, fdb_config* fconfig ) ; -FUNCTION: fdb_status fdb_open_cmp_variable ( fdb_handle** ptr_handle, c-string filename, fdb_config* fconfig ) ; +FUNCTION: fdb_status fdb_init ( fdb_config* config ) ; +FUNCTION: fdb_config fdb_get_default_config ( ) ; +FUNCTION: fdb_kvs_config fdb_get_default_kvs_config ( ) ; + +FUNCTION: fdb_status fdb_open ( fdb_file_handle** ptr_fhandle, c-string filename, fdb_config* fconfig ) ; +FUNCTION: fdb_status fdb_open_custom_cmp ( fdb_file_handle** ptr_fhandle, c-string filename, fdb_config* fconfig, size_t num_functions, char** kvs_names, fdb_custom_cmp_variable* functions ) ; FUNCTION: fdb_status fdb_set_log_callback ( fdb_handle* handle, fdb_log_callback log_callback, void* ctx_data ) ; @@ -176,13 +189,20 @@ FUNCTION: fdb_status fdb_iterator_seek ( fdb_iterator* iterator, c-string seek_k FUNCTION: fdb_status fdb_iterator_close ( fdb_iterator* iterator ) ; FUNCTION: fdb_status fdb_compact ( fdb_handle* handle, c-string new_filename ) ; +FUNCTION: size_t fdb_estimate_space_used ( fdb_file_handle* fhandle ) ; FUNCTION: fdb_status fdb_get_dbinfo ( fdb_handle* handle, fdb_info* info ) ; -FUNCTION: fdb_status fdb_switch_compaction_mode ( fdb_handle* handle, fdb_compaction_mode_t mode, size_t new_threshold ) ; +FUNCTION: fdb_status fdb_get_kvs_info ( fdb_handle* handle, fdb_kvs_info* info ) ; +FUNCTION: fdb_status fdb_get_seqnum ( fdb_handle* handle, fdb_seqnum_t* seqnum ) ; +FUNCTION: fdb_status fdb_switch_compaction_mode ( fdb_file_handle* fhandle, fdb_compaction_mode_t mode, size_t new_threshold ) ; -FUNCTION: fdb_status fdb_close ( fdb_handle* handle ) ; -FUNCTION: fdb_status fdb_destroy ( c-string filename, fdb_compaction_mode_t mode, size_t new_threshold ) ; +FUNCTION: fdb_status fdb_close ( fdb_file_handle* fhandle ) ; +FUNCTION: fdb_status fdb_destroy ( c-string filename, fdb_config* fconfig ) ; FUNCTION: fdb_status fdb_shutdown ( ) ; -FUNCTION: fdb_status fdb_begin_transaction ( fdb_handle* handle, fdb_isolation_level_t isolation_level ) ; -FUNCTION: fdb_status fdb_end_transaction ( fdb_handle* handle, fdb_commit_opt_t opt ) ; +FUNCTION: fdb_status fdb_begin_transaction ( fdb_file_handle* fhandle, fdb_isolation_level_t isolation_level ) ; +FUNCTION: fdb_status fdb_end_transaction ( fdb_file_handle* fhandle, fdb_commit_opt_t opt ) ; FUNCTION: fdb_status fdb_abort_transaction ( fdb_handle* handle ) ; +FUNCTION: fdb_status fdb_kvs_open ( fdb_file_handle* fhandle, + fdb_handle** ptr_handle, + char* kvs_name, + fdb_kvs_config* config ) ; diff --git a/extra/forestdb/lib/lib-tests.factor b/extra/forestdb/lib/lib-tests.factor index 1de118b7bb..2888e49cd6 100644 --- a/extra/forestdb/lib/lib-tests.factor +++ b/extra/forestdb/lib/lib-tests.factor @@ -145,7 +145,7 @@ IN: forestdb.lib ] with-forestdb-path ] unit-test -{ 6 5 } [ +{ 6 6 } [ delete-test-db-1 test-db-1 [ 5 set-kv-n @@ -192,10 +192,8 @@ IN: forestdb.lib ] must-fail-with ! Test that we take two snapshots and their seqnums/doc counts are right. -! XXX: We test this to make sure the forestdb doesn't change. -! Bug in forestdb? doc_count>> should be 5 at snapshot 5 { - { 5 7 } + { 5 5 } { 7 7 } } [ delete-test-db-1 diff --git a/extra/forestdb/lib/lib.factor b/extra/forestdb/lib/lib.factor index bb3888af64..6551b81d2c 100644 --- a/extra/forestdb/lib/lib.factor +++ b/extra/forestdb/lib/lib.factor @@ -9,7 +9,6 @@ IN: forestdb.lib /* ! Issues -! 1) bug - snapshot has doc_count of entire file, not just that snapshot's doc_count ! 2) build on macosx doesn't search /usr/local for libsnappy ! 3) build on macosx doesn't include -L/usr/local/lib when it finds snappy ! - link_directories(/usr/local/lib) or some other fix