From df1b9dffe04946833d39c9e1d5538ca601612d6e Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 12 Nov 2014 17:54:47 -0800 Subject: [PATCH] forestdb: Update forestdb api. Fix opening snapshots -- use -1 as parameter. --- extra/forestdb/ffi/ffi.factor | 22 +++++++++--- extra/forestdb/lib/lib-tests.factor | 54 ++++++++++++----------------- extra/forestdb/lib/lib.factor | 11 ++---- 3 files changed, 42 insertions(+), 45 deletions(-) diff --git a/extra/forestdb/ffi/ffi.factor b/extra/forestdb/ffi/ffi.factor index db8ad13604..83af1c645d 100644 --- a/extra/forestdb/ffi/ffi.factor +++ b/extra/forestdb/ffi/ffi.factor @@ -14,9 +14,10 @@ LIBRARY: forestdb CONSTANT: FDB_MAX_KEYLEN 3840 CONSTANT: FDB_MAX_METALEN 65535 CONSTANT: FDB_MAX_BODYLEN 4294967295 -TYPEDEF: uint64_t fdb_seqnum_t CONSTANT: FDB_SNAPSHOT_INMEM -1 +TYPEDEF: uint64_t fdb_seqnum_t + TYPEDEF: void* fdb_custom_cmp_fixed TYPEDEF: void* fdb_custom_cmp_variable TYPEDEF: void* fdb_log_callback @@ -135,7 +136,7 @@ STRUCT: fdb_doc ! filename is a pointer to the handle's filename ! new_filename is a pointer to the handle's new_file -STRUCT: fdb_info +STRUCT: fdb_file_info { filename char* } { new_filename char* } { doc_count uint64_t } @@ -144,7 +145,14 @@ STRUCT: fdb_info STRUCT: fdb_kvs_info { name char* } - { last_seqnum fdb_seqnum_t } ; + { last_seqnum fdb_seqnum_t } + { doc_count uint64_t } + { space_used uint64_t } + { file fdb_file_handle* } ; + +STRUCT: fdb_kvs_name_list + { num_kvs_names size_t } + { kvs_names char** } ; FUNCTION: fdb_status fdb_init ( fdb_config* config ) ; FUNCTION: fdb_config fdb_get_default_config ( ) ; @@ -188,11 +196,14 @@ FUNCTION: fdb_status fdb_iterator_close ( fdb_iterator* iterator ) ; FUNCTION: fdb_status fdb_compact ( fdb_file_handle* handle, c-string new_filename ) ; FUNCTION: size_t fdb_estimate_space_used ( fdb_file_handle* fhandle ) ; -FUNCTION: fdb_status fdb_get_dbinfo ( fdb_file_handle* handle, fdb_info* info ) ; +FUNCTION: fdb_status fdb_get_file_info ( fdb_file_handle* handle, fdb_file_info* info ) ; 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_get_kvs_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_get_kvs_name_list ( fdb_file_handle *fhandle, fdb_kvs_name_list *kvs_name_list ) ; +FUNCTION: fdb_status fdb_free_kvs_name_list ( fdb_kvs_name_list *kvs_name_list ) ; + 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 ( ) ; @@ -213,3 +224,4 @@ FUNCTION: fdb_status fdb_kvs_open_default ( fdb_file_handle* fhandle, FUNCTION: fdb_status fdb_kvs_close ( fdb_handle* handle ) ; FUNCTION: fdb_status fdb_kvs_remove ( fdb_file_handle* fhandle, char* kvs_name ) ; +FUNCTION: char* fdb_error_msg ( fdb_status err_code ) ; diff --git a/extra/forestdb/lib/lib-tests.factor b/extra/forestdb/lib/lib-tests.factor index 44315172b8..2fa9def8f2 100644 --- a/extra/forestdb/lib/lib-tests.factor +++ b/extra/forestdb/lib/lib-tests.factor @@ -117,8 +117,7 @@ IN: forestdb.lib test-db-1 [ 1 set-kv-n fdb-commit-normal - fdb-get-seqnum - fdb-get-info doc_count>> + fdb-get-kvs-info [ last_seqnum>> ] [ doc_count>> ] bi ] with-forestdb-path ] unit-test @@ -128,8 +127,7 @@ IN: forestdb.lib 5 set-kv-n 5 set-kv-nth fdb-commit-normal - fdb-get-seqnum - fdb-get-info doc_count>> + fdb-get-kvs-info [ last_seqnum>> ] [ doc_count>> ] bi ] with-forestdb-path ] unit-test @@ -138,8 +136,7 @@ IN: forestdb.lib test-db-1 [ 5 set-kv-n fdb-commit-normal - fdb-get-seqnum - fdb-get-info doc_count>> + fdb-get-kvs-info [ last_seqnum>> ] [ doc_count>> ] bi ] with-forestdb-path ] unit-test @@ -149,9 +146,8 @@ IN: forestdb.lib test-db-1 [ 5 set-kv-n fdb-commit-normal - 5 [ - fdb-get-seqnum - fdb-get-info doc_count>> + FDB_SNAPSHOT_INMEM [ + fdb-get-kvs-info [ last_seqnum>> ] [ doc_count>> ] bi ] with-forestdb-snapshot ] with-forestdb-path ] unit-test @@ -166,9 +162,8 @@ IN: forestdb.lib test-db-1 [ 5 set-kv-n fdb-commit-normal - 2 [ - fdb-get-seqnum - fdb-get-info doc_count>> + FDB_SNAPSHOT_INMEM [ + fdb-get-kvs-info [ last_seqnum>> ] [ doc_count>> ] bi ] with-forestdb-snapshot ] with-forestdb-path ] [ @@ -179,7 +174,7 @@ IN: forestdb.lib ! Test that we take two snapshots and their seqnums/doc counts are right. ! XXX: Buggy, want to see the first snapshot's document count at 5 too { - { 5 7 } + { 7 7 } { 7 7 } } [ delete-test-db-1 @@ -190,21 +185,19 @@ IN: forestdb.lib 6 7 set-kv-range fdb-commit-normal - 5 [ - fdb-get-seqnum - fdb-get-info doc_count>> 2array + FDB_SNAPSHOT_INMEM [ + fdb-get-kvs-info [ last_seqnum>> ] [ doc_count>> ] bi 2array ] with-forestdb-snapshot - 7 [ - fdb-get-seqnum - fdb-get-info doc_count>> 2array + FDB_SNAPSHOT_INMEM [ + fdb-get-kvs-info [ last_seqnum>> ] [ doc_count>> ] bi 2array ] with-forestdb-snapshot ] with-forestdb-path ] unit-test ! Same test as above, but with buggy behavior for now so it passes { - 5 + 7 7 } [ delete-test-db-1 @@ -215,12 +208,12 @@ IN: forestdb.lib 6 7 set-kv-range fdb-commit-normal - 5 [ - fdb-get-seqnum + FDB_SNAPSHOT_INMEM [ + fdb-get-kvs-info last_seqnum>> ] with-forestdb-snapshot - 7 [ - fdb-get-seqnum + FDB_SNAPSHOT_INMEM [ + fdb-get-kvs-info last_seqnum>> ] with-forestdb-snapshot ] with-forestdb-path ] unit-test @@ -228,11 +221,9 @@ IN: forestdb.lib ! Rollback test ! Make sure the doc_count is correct after a rollback -! XXX: doc_count is wrong after rollback { 7 - { 5 12 } - ! { 5 5 } ! expected + { 5 5 } } [ delete-test-db-1 test-db-1 [ @@ -242,15 +233,14 @@ IN: forestdb.lib 6 7 set-kv-range fdb-commit-normal - 7 [ - fdb-get-seqnum + FDB_SNAPSHOT_INMEM [ + fdb-get-kvs-info last_seqnum>> ] with-forestdb-snapshot 5 fdb-rollback - 5 [ - fdb-get-seqnum - fdb-get-info doc_count>> 2array + FDB_SNAPSHOT_INMEM [ + fdb-get-kvs-info [ last_seqnum>> ] [ doc_count>> ] bi 2array ] with-forestdb-snapshot ] with-forestdb-path ] unit-test diff --git a/extra/forestdb/lib/lib.factor b/extra/forestdb/lib/lib.factor index 020d33cfe5..d3705b4bd8 100644 --- a/extra/forestdb/lib/lib.factor +++ b/extra/forestdb/lib/lib.factor @@ -151,14 +151,9 @@ SYMBOL: current-fdb-handle : with-create-doc ( key meta body quot: ( doc -- ) -- ) [ fdb-doc-create ] dip with-doc ; inline -: fdb-get-info ( -- fdb_info ) +: fdb-get-info ( -- fdb_file_info ) get-file-handle - fdb_info [ fdb_get_dbinfo fdb-check-error ] keep ; - -: fdb-get-seqnum ( -- fdb_info ) - get-handle - 1020 fdb_seqnum_t [ fdb_get_seqnum fdb-check-error ] keep - fdb_seqnum_t deref ; + fdb_file_info [ fdb_get_file_info fdb-check-error ] keep ; : fdb-get-kvs-info ( -- fdb_kvs_info ) get-handle @@ -301,7 +296,7 @@ T{ doc [ size_ondisk>> ] } cleave ; -: fdb_info>info ( fdb_doc -- doc ) +: fdb_file_info>info ( fdb_doc -- doc ) { [ filename>> alien>native-string ] [ new_filename>> alien>native-string ]