[Groonga-commit] groonga/groonga at 1a566ca [master] Add grn_db_is_dirty()

アーカイブの一覧に戻る

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����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る