[Groonga-commit] groonga/groonga [master] Fix a bug that updated flags aren't used on open

Back to archive index

Kouhei Sutou null+****@clear*****
Sat Dec 29 14:56:06 JST 2012


Kouhei Sutou	2012-12-29 14:56:06 +0900 (Sat, 29 Dec 2012)

  New Revision: b15d0783e6885558e5df7a8375b52623d52539e4
  https://github.com/groonga/groonga/commit/b15d0783e6885558e5df7a8375b52623d52539e4

  Log:
    Fix a bug that updated flags aren't used on open

  Modified files:
    lib/dat.cpp
    lib/db.c
    lib/hash.c
    lib/pat.c

  Modified: lib/dat.cpp (+1 -1)
===================================================================
--- lib/dat.cpp    2012-12-29 14:51:55 +0900 (7c93ae1)
+++ lib/dat.cpp    2012-12-29 14:56:06 +0900 (30c65ab)
@@ -346,7 +346,6 @@ grn_dat_open(grn_ctx *ctx, const char *path)
   }
   dat->file_id = dat->header->file_id;
   dat->encoding = dat->header->encoding;
-  dat->obj.header.flags = dat->header->flags;
   dat->tokenizer = grn_ctx_at(ctx, dat->header->tokenizer);
   if (dat->header->flags & GRN_OBJ_KEY_NORMALIZE) {
     dat->header->flags &= ~GRN_OBJ_KEY_NORMALIZE;
@@ -355,6 +354,7 @@ grn_dat_open(grn_ctx *ctx, const char *path)
   } else {
     dat->normalizer = grn_ctx_at(ctx, dat->header->normalizer);
   }
+  dat->obj.header.flags = dat->header->flags;
   return dat;
 }
 

  Modified: lib/db.c (+15 -3)
===================================================================
--- lib/db.c    2012-12-29 14:51:55 +0900 (9bdbda8)
+++ lib/db.c    2012-12-29 14:56:06 +0900 (9e965db)
@@ -7193,17 +7193,29 @@ grn_ctx_at(grn_ctx *ctx, grn_id id)
                 case GRN_TABLE_HASH_KEY :
                   GET_PATH(spec, buffer, s, id);
                   vp->ptr = (grn_obj *)grn_hash_open(ctx, buffer);
-                  UNPACK_INFO();
+                  if (vp->ptr) {
+                    grn_obj_flags flags = vp->ptr->header.flags;
+                    UNPACK_INFO();
+                    vp->ptr->header.flags = flags;
+                  }
                   break;
                 case GRN_TABLE_PAT_KEY :
                   GET_PATH(spec, buffer, s, id);
                   vp->ptr = (grn_obj *)grn_pat_open(ctx, buffer);
-                  UNPACK_INFO();
+                  if (vp->ptr) {
+                    grn_obj_flags flags = vp->ptr->header.flags;
+                    UNPACK_INFO();
+                    vp->ptr->header.flags = flags;
+                  }
                   break;
                 case GRN_TABLE_DAT_KEY :
                   GET_PATH(spec, buffer, s, id);
                   vp->ptr = (grn_obj *)grn_dat_open(ctx, buffer);
-                  UNPACK_INFO();
+                  if (vp->ptr) {
+                    grn_obj_flags flags = vp->ptr->header.flags;
+                    UNPACK_INFO();
+                    vp->ptr->header.flags = flags;
+                  }
                   break;
                 case GRN_TABLE_NO_KEY :
                   GET_PATH(spec, buffer, s, id);

  Modified: lib/hash.c (+1 -1)
===================================================================
--- lib/hash.c    2012-12-29 14:51:55 +0900 (85220c6)
+++ lib/hash.c    2012-12-29 14:56:06 +0900 (7148a4f)
@@ -1618,7 +1618,6 @@ grn_hash_open(grn_ctx *ctx, const char *path)
         if (hash) {
           if (!(header->flags & GRN_HASH_TINY)) {
             GRN_DB_OBJ_SET_TYPE(hash, GRN_TABLE_HASH_KEY);
-            hash->obj.header.flags = header->flags;
             hash->ctx = ctx;
             hash->key_size = header->key_size;
             hash->encoding = header->encoding;
@@ -1638,6 +1637,7 @@ grn_hash_open(grn_ctx *ctx, const char *path)
             } else {
               hash->normalizer = grn_ctx_at(ctx, header->normalizer);
             }
+            hash->obj.header.flags = header->flags;
             return hash;
           } else {
             GRN_LOG(ctx, GRN_LOG_NOTICE,

  Modified: lib/pat.c (+1 -1)
===================================================================
--- lib/pat.c    2012-12-29 14:51:55 +0900 (2ae2deb)
+++ lib/pat.c    2012-12-29 14:56:06 +0900 (ce7b4e8)
@@ -525,7 +525,6 @@ grn_pat_open(grn_ctx *ctx, const char *path)
   pat->key_size = header->key_size;
   pat->value_size = header->value_size;
   pat->encoding = header->encoding;
-  pat->obj.header.flags = header->flags;
   pat->tokenizer = grn_ctx_at(ctx, header->tokenizer);
   if (header->flags & GRN_OBJ_KEY_NORMALIZE) {
     header->flags &= ~GRN_OBJ_KEY_NORMALIZE;
@@ -534,6 +533,7 @@ grn_pat_open(grn_ctx *ctx, const char *path)
   } else {
     pat->normalizer = grn_ctx_at(ctx, header->normalizer);
   }
+  pat->obj.header.flags = header->flags;
   PAT_AT(pat, 0, node0);
   if (!node0) {
     grn_io_close(ctx, io);
-------------- next part --------------
HTML����������������������������...
Télécharger 



More information about the Groonga-commit mailing list
Back to archive index