Kouhei Sutou
null+****@clear*****
Wed May 11 11:14:04 JST 2016
Kouhei Sutou 2016-05-11 11:14:04 +0900 (Wed, 11 May 2016) New Revision: 1a566ca4f9e35bfe05d11e120c3471dd700dff2d https://github.com/groonga/groonga/commit/1a566ca4f9e35bfe05d11e120c3471dd700dff2d Message: Add grn_db_is_dirty() Modified files: include/groonga/db.h lib/dat.cpp lib/db.c lib/grn_dat.h lib/grn_pat.h lib/pat.c Modified: include/groonga/db.h (+1 -0) =================================================================== --- include/groonga/db.h 2016-05-11 11:02:47 +0900 (638c1f6) +++ include/groonga/db.h 2016-05-11 11:14:04 +0900 (f4fcdb9) @@ -39,6 +39,7 @@ GRN_API void grn_db_touch(grn_ctx *ctx, grn_obj *db); GRN_API grn_rc grn_db_recover(grn_ctx *ctx, grn_obj *db); GRN_API grn_rc grn_db_unmap(grn_ctx *ctx, grn_obj *db); GRN_API uint32_t grn_db_get_last_modified(grn_ctx *ctx, grn_obj *db); +GRN_API grn_bool grn_db_is_dirty(grn_ctx *ctx, grn_obj *db); #ifdef __cplusplus } Modified: lib/dat.cpp (+10 -0) =================================================================== --- lib/dat.cpp 2016-05-11 11:02:47 +0900 (ecfeab0) +++ lib/dat.cpp 2016-05-11 11:14:04 +0900 (38dc9d1) @@ -1172,4 +1172,14 @@ grn_dat_dirty(grn_ctx *ctx, grn_dat *dat) return rc; } +grn_bool +grn_dat_is_dirty(grn_ctx *ctx, grn_dat *dat) +{ + if (!dat->n_dirty_opens) { + return GRN_FALSE; + } + + return *(dat->n_dirty_opens) > 0; +} + } // extern "C" Modified: lib/db.c (+20 -0) =================================================================== --- lib/db.c 2016-05-11 11:02:47 +0900 (234d137) +++ lib/db.c 2016-05-11 11:14:04 +0900 (ed370e0) @@ -657,6 +657,26 @@ grn_db_get_last_modified(grn_ctx *ctx, grn_obj *db) return grn_obj_io(db)->header->last_modified; } +grn_bool +grn_db_is_dirty(grn_ctx *ctx, grn_obj *db) +{ + grn_obj *keys; + + if (!db) { + return GRN_FALSE; + } + + keys = ((grn_db *)db)->keys; + switch (keys->header.type) { + case GRN_TABLE_PAT_KEY : + return grn_pat_is_dirty(ctx, (grn_pat *)keys); + case GRN_TABLE_DAT_KEY : + return grn_dat_is_dirty(ctx, (grn_dat *)keys); + default : + return GRN_FALSE; + } +} + void grn_db_touch(grn_ctx *ctx, grn_obj *s) { Modified: lib/grn_dat.h (+1 -0) =================================================================== --- lib/grn_dat.h 2016-05-11 11:02:47 +0900 (0f60aa0) +++ lib/grn_dat.h 2016-05-11 11:14:04 +0900 (10fd6c0) @@ -83,6 +83,7 @@ GRN_API grn_rc grn_dat_repair(grn_ctx *ctx, grn_dat *dat); GRN_API grn_rc grn_dat_flush(grn_ctx *ctx, grn_dat *dat); grn_rc grn_dat_dirty(grn_ctx *ctx, grn_dat *dat); +grn_bool grn_dat_is_dirty(grn_ctx *ctx, grn_dat *dat); #ifdef __cplusplus } Modified: lib/grn_pat.h (+1 -0) =================================================================== --- lib/grn_pat.h 2016-05-11 11:02:47 +0900 (aa66d52) +++ lib/grn_pat.h 2016-05-11 11:14:04 +0900 (35e8ac0) @@ -120,6 +120,7 @@ uint32_t grn_pat_total_key_size(grn_ctx *ctx, grn_pat *pat); grn_bool grn_pat_is_key_encoded(grn_ctx *ctx, grn_pat *pat); grn_rc grn_pat_dirty(grn_ctx *ctx, grn_pat *pat); +grn_bool grn_pat_is_dirty(grn_ctx *ctx, grn_pat *pat); #ifdef __cplusplus } Modified: lib/pat.c (+6 -0) =================================================================== --- lib/pat.c 2016-05-11 11:02:47 +0900 (9db177c) +++ lib/pat.c 2016-05-11 11:14:04 +0900 (f019bec) @@ -3574,3 +3574,9 @@ grn_pat_dirty(grn_ctx *ctx, grn_pat *pat) return rc; } + +grn_bool +grn_pat_is_dirty(grn_ctx *ctx, grn_pat *pat) +{ + return pat->header->n_dirty_opens > 0; +} -------------- next part -------------- HTML����������������������������... 下載