[Groonga-commit] groonga/groonga at 83478a1 [master] ii: use meaningful name for source buffer related variables

Back to archive index
Kouhei Sutou null+****@clear*****
Thu Feb 14 17:20:17 JST 2019


Kouhei Sutou	2019-02-14 17:20:17 +0900 (Thu, 14 Feb 2019)

  Revision: 83478a13ad756e6bef61d81d9ee2317f7fdc269a
  https://github.com/groonga/groonga/commit/83478a13ad756e6bef61d81d9ee2317f7fdc269a

  Message:
    ii: use meaningful name for source buffer related variables

  Modified files:
    lib/ii.c

  Modified: lib/ii.c (+133 -115)
===================================================================
--- lib/ii.c    2019-02-14 16:12:26 +0900 (b8c041e7c)
+++ lib/ii.c    2019-02-14 17:20:17 +0900 (023b93eb4)
@@ -3165,15 +3165,23 @@ merge_dump_source(grn_ctx *ctx,
 }
 
 typedef struct {
+  buffer *buffer;
+  buffer_term *term;
+  uint8_t *data;
+  docinfo id;
+  uint16_t next_position;
+} merge_buffer_data;
+
+typedef struct {
   grn_ii *ii;
-  buffer_term *bt;
-  buffer *sb;
+  struct {
+    merge_buffer_data buffer;
+  } source;
   uint8_t *sc;
   uint8_t *scp;
   uint8_t *sce;
-  docinfo bid;
   docinfo cid;
-  docinfo lid;
+  docinfo last_id;
   grn_id sid;
   uint32_t *snp;
   uint32_t snn;
@@ -3188,8 +3196,6 @@ typedef struct {
   uint32_t *weightp;
   uint32_t *posp;
   uint64_t spos;
-  uint16_t nextb;
-  uint8_t *sbp;
 } merger_data;
 
 grn_inline static void
@@ -3199,17 +3205,18 @@ merger_report_error(grn_ctx *ctx,
                     docinfo *posting1,
                     docinfo *posting2)
 {
+  merge_buffer_data *buffer_data = &(data->source.buffer);
   grn_obj term;
   DEFINE_NAME(data->ii);
   GRN_TEXT_INIT(&term, 0);
-  grn_ii_get_term(ctx, data->ii, data->bt->tid & GRN_ID_MAX, &term);
+  grn_ii_get_term(ctx, data->ii, buffer_data->term->tid & GRN_ID_MAX, &term);
   if (posting1 && posting2) {
     CRIT(GRN_FILE_CORRUPT,
          "[ii][broken] %s: <%.*s>: <%.*s>(%u): (%u:%u) -> (%u:%u)",
          message,
          name_size, name,
          (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-         data->bt->tid,
+         buffer_data->term->tid,
          posting1->rid, posting1->sid,
          posting2->rid, posting2->sid);
   } else {
@@ -3218,11 +3225,11 @@ merger_report_error(grn_ctx *ctx,
          message,
          name_size, name,
          (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-         data->bt->tid,
+         buffer_data->term->tid,
          posting1->rid, posting1->sid);
   }
   GRN_OBJ_FIN(ctx, &term);
-  merge_dump_source(ctx, data->ii, data->sb, data->sc, GRN_LOG_CRIT);
+  merge_dump_source(ctx, data->ii, buffer_data->buffer, data->sc, GRN_LOG_CRIT);
 }
 
 grn_inline static void
@@ -3255,8 +3262,8 @@ merger_get_next_chunk(grn_ctx *ctx, merger_data *data)
 grn_inline static void
 merger_put_next_id(grn_ctx *ctx, merger_data *data, docinfo *id)
 {
-  uint32_t dgap = id->rid - data->lid.rid;
-  uint32_t sgap = (dgap ? id->sid : id->sid - data->lid.sid) - 1;
+  uint32_t dgap = id->rid - data->last_id.rid;
+  uint32_t sgap = (dgap ? id->sid : id->sid - data->last_id.sid) - 1;
   *(data->ridp) = dgap;
   data->ridp++;
   if ((data->ii->header->flags & GRN_OBJ_WITH_SECTION)) {
@@ -3269,8 +3276,8 @@ merger_put_next_id(grn_ctx *ctx, merger_data *data, docinfo *id)
     *data->weightp = id->weight;
     data->weightp++;
   }
-  data->lid.rid = id->rid;
-  data->lid.sid = id->sid;
+  data->last_id.rid = id->rid;
+  data->last_id.sid = id->sid;
 }
 
 grn_inline static void
@@ -3278,13 +3285,14 @@ merger_put_next_chunk(grn_ctx *ctx, merger_data *data)
 {
   if (data->cid.rid) {
     if (data->cid.tf) {
-      if (data->lid.rid > data->cid.rid ||
-          (data->lid.rid == data->cid.rid && data->lid.sid >= data->cid.sid)) {
+      if (data->last_id.rid > data->cid.rid ||
+          (data->last_id.rid == data->cid.rid &&
+           data->last_id.sid >= data->cid.sid)) {
         merger_report_error(ctx,
                             data,
                             "the last posting is larger than "
                             "the next posting in chunk",
-                            &(data->lid),
+                            &(data->last_id),
                             &(data->cid));
         return;
       }
@@ -3312,57 +3320,62 @@ merger_put_next_chunk(grn_ctx *ctx, merger_data *data)
 grn_inline static void
 merger_get_next_buffer(grn_ctx *ctx, merger_data *data)
 {
-  if (data->nextb) {
-    uint32_t lrid = data->bid.rid;
-    uint32_t lsid = data->bid.sid;
-    buffer_rec *br = BUFFER_REC_AT(data->sb, data->nextb);
-    data->sbp = GRN_NEXT_ADDR(br);
-    GRN_B_DEC(data->bid.rid, data->sbp);
+  merge_buffer_data *buffer_data = &(data->source.buffer);
+  if (buffer_data->next_position > 0) {
+    docinfo last_id = {
+      buffer_data->id.rid,
+      buffer_data->id.sid
+    };
+    buffer_rec *record = BUFFER_REC_AT(buffer_data->buffer,
+                                       buffer_data->next_position);
+    buffer_data->data = GRN_NEXT_ADDR(record);
+    GRN_B_DEC(buffer_data->id.rid, buffer_data->data);
     if ((data->ii->header->flags & GRN_OBJ_WITH_SECTION)) {
-      GRN_B_DEC(data->bid.sid, data->sbp);
+      GRN_B_DEC(buffer_data->id.sid, buffer_data->data);
     } else {
-      data->bid.sid = 1;
+      buffer_data->id.sid = 1;
     }
-    if (lrid > data->bid.rid ||
-        (lrid == data->bid.rid && lsid >= data->bid.sid)) {
-      docinfo last_id = {lrid, lsid};
+    if (last_id.rid > buffer_data->id.rid ||
+        (last_id.rid == buffer_data->id.rid &&
+         last_id.sid >= buffer_data->id.sid)) {
       merger_report_error(ctx,
                           data,
                           "postings in block aren't sorted",
                           &last_id,
-                          &(data->bid));
+                          &(buffer_data->id));
       return;
     }
-    data->nextb = br->step;
+    buffer_data->next_position = record->step;
   } else {
-    data->bid.rid = 0;
+    buffer_data->id.rid = 0;
   }
 }
 
 grn_inline static void
 merger_put_next_buffer(grn_ctx *ctx, merger_data *data)
 {
-  if (data->bid.rid && data->bid.sid) {
-    GRN_B_DEC(data->bid.tf, data->sbp);
-    if (data->bid.tf > 0) {
-      if (data->lid.rid > data->bid.rid ||
-          (data->lid.rid == data->bid.rid &&
-           data->lid.sid >= data->bid.sid)) {
+  merge_buffer_data *buffer_data = &(data->source.buffer);
+  if (buffer_data->id.rid && buffer_data->id.sid) {
+    GRN_B_DEC(buffer_data->id.tf, buffer_data->data);
+    if (buffer_data->id.tf > 0) {
+      if (data->last_id.rid > buffer_data->id.rid ||
+          (data->last_id.rid == buffer_data->id.rid &&
+           data->last_id.sid >= buffer_data->id.sid)) {
         merger_report_error(ctx,
                             data,
                             "the last posting is larger than "
                             "the next posting in buffer",
-                            &(data->lid),
-                            &(data->bid));
+                            &(data->last_id),
+                            &(buffer_data->id));
         return;
       }
       if ((data->ii->header->flags & GRN_OBJ_WITH_WEIGHT)) {
-        GRN_B_DEC(data->bid.weight, data->sbp);
+        GRN_B_DEC(buffer_data->id.weight, buffer_data->data);
       }
-      merger_put_next_id(ctx, data, &(data->bid));
+      merger_put_next_id(ctx, data, &(buffer_data->id));
       if ((data->ii->header->flags & GRN_OBJ_WITH_POSITION)) {
-        while (data->bid.tf--) {
-          GRN_B_DEC(*(data->posp), data->sbp);
+        while (buffer_data->id.tf--) {
+          GRN_B_DEC(*(data->posp), buffer_data->data);
           data->spos += *(data->posp);
           data->posp++;
         }
@@ -3375,22 +3388,23 @@ merger_put_next_buffer(grn_ctx *ctx, merger_data *data)
 grn_inline static grn_bool
 merger_merge(grn_ctx *ctx, merger_data *data)
 {
-  if (data->bid.rid) {
+  merge_buffer_data *buffer_data = &(data->source.buffer);
+  if (buffer_data->id.rid) {
     if (data->cid.rid) {
-      if (data->cid.rid < data->bid.rid) {
+      if (data->cid.rid < buffer_data->id.rid) {
         merger_put_next_chunk(ctx, data);
         if (ctx->rc != GRN_SUCCESS) { return GRN_FALSE; }
       } else {
-        if (data->bid.rid < data->cid.rid) {
+        if (buffer_data->id.rid < data->cid.rid) {
           merger_put_next_buffer(ctx, data);
           if (ctx->rc != GRN_SUCCESS) { return GRN_FALSE; }
         } else {
-          if (data->bid.sid) {
-            if (data->cid.sid < data->bid.sid) {
+          if (buffer_data->id.sid) {
+            if (data->cid.sid < buffer_data->id.sid) {
               merger_put_next_chunk(ctx, data);
               if (ctx->rc != GRN_SUCCESS) { return GRN_FALSE; }
             } else {
-              if (data->bid.sid == data->cid.sid) {
+              if (buffer_data->id.sid == data->cid.sid) {
                 merger_get_next_chunk(ctx, data);
                 if (ctx->rc != GRN_SUCCESS) { return GRN_FALSE; }
               }
@@ -3459,6 +3473,7 @@ chunk_merge(grn_ctx *ctx,
             datavec *dv,
             int32_t *balance)
 {
+  merge_buffer_data *buffer_data = &(data->source.buffer);
   grn_ii *ii = data->ii;
   grn_io_win sw;
   uint32_t segno = cinfo->segno;
@@ -3466,7 +3481,7 @@ chunk_merge(grn_ctx *ctx,
   uint32_t ndf = 0;
   uint8_t *scp = WIN_MAP(ii->chunk, ctx, &sw, segno, 0, size, grn_io_rdonly);
 
-  data->lid = null_docinfo;
+  data->last_id = null_docinfo;
 
   if (scp) {
     datavec rdv[MAX_N_ELEMENTS + 1];
@@ -3481,7 +3496,8 @@ chunk_merge(grn_ctx *ctx,
     if ((ii->header->flags & GRN_OBJ_WITH_POSITION)) {
       rdv[ii->n_elements - 1].flags = ODD;
     }
-    decoded_size = grn_p_decv(ctx, ii, data->bt->tid & GRN_ID_MAX,
+    decoded_size = grn_p_decv(ctx, ii,
+                              buffer_data->term->tid & GRN_ID_MAX,
                               scp, cinfo->size, rdv, ii->n_elements);
     if (decoded_size == 0) {
       datavec_fin(ctx, rdv);
@@ -3491,7 +3507,7 @@ chunk_merge(grn_ctx *ctx,
         grn_rc rc = ctx->rc;
         DEFINE_NAME(ii);
         GRN_TEXT_INIT(&term, 0);
-        grn_ii_get_term(ctx, ii, data->bt->tid & GRN_ID_MAX, &term);
+        grn_ii_get_term(ctx, ii, buffer_data->term->tid & GRN_ID_MAX, &term);
         if (rc == GRN_SUCCESS) {
           rc = GRN_UNKNOWN_ERROR;
         }
@@ -3501,7 +3517,7 @@ chunk_merge(grn_ctx *ctx,
             "<%.*s>(%u)",
             name_size, name,
             (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-            data->bt->tid);
+            buffer_data->term->tid);
         GRN_OBJ_FIN(ctx, &term);
       }
       return ctx->rc;
@@ -3541,7 +3557,7 @@ chunk_merge(grn_ctx *ctx,
         if (!merger_merge(ctx, data)) {
           break;
         }
-      } while (data->bid.rid <= rid || data->cid.rid);
+      } while (buffer_data->id.rid <= rid || data->cid.rid);
       if (ctx->rc == GRN_SUCCESS) {
         GRN_ASSERT(data->posp < dv[ii->n_elements].data);
         ndf = data->ridp - dv[0].data;
@@ -3553,14 +3569,14 @@ chunk_merge(grn_ctx *ctx,
     grn_obj term;
     DEFINE_NAME(ii);
     GRN_TEXT_INIT(&term, 0);
-    grn_ii_get_term(ctx, ii, data->bt->tid & GRN_ID_MAX, &term);
+    grn_ii_get_term(ctx, ii, buffer_data->term->tid & GRN_ID_MAX, &term);
     MERR("[ii][chunk][merge] failed to allocate a source chunk: "
          "<%.*s>: "
          "<%.*s>(%u): "
          "record:<%u>, segment:<%u>, size:<%u>",
          name_size, name,
          (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-         data->bt->tid,
+         buffer_data->term->tid,
          rid,
          segno,
          size);
@@ -3574,7 +3590,7 @@ chunk_merge(grn_ctx *ctx,
     uint32_t encsize;
     uint32_t np = data->posp - dv[ii->n_elements - 1].data;
     uint32_t f_s = (ndf < 3) ? 0 : USE_P_ENC;
-    uint32_t f_d = ((ndf < 16) || (ndf <= (data->lid.rid >> 8))) ? 0 : USE_P_ENC;
+    uint32_t f_d = ((ndf < 16) || (ndf <= (data->last_id.rid >> 8))) ? 0 : USE_P_ENC;
     dv[j].data_size = ndf; dv[j++].flags = f_d;
     if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) {
       dv[j].data_size = ndf; dv[j++].flags = f_s;
@@ -3599,14 +3615,14 @@ chunk_merge(grn_ctx *ctx,
       grn_obj term;
       DEFINE_NAME(ii);
       GRN_TEXT_INIT(&term, 0);
-      grn_ii_get_term(ctx, ii, data->bt->tid & GRN_ID_MAX, &term);
+      grn_ii_get_term(ctx, ii, buffer_data->term->tid & GRN_ID_MAX, &term);
       MERR("[ii][chunk][merge] failed to allocate a encode buffer: "
            "<%.*s>: "
            "<%.*s>(%u): "
            "record:<%u>, segment:<%u>, size:<%u>",
            name_size, name,
            (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-           data->bt->tid,
+           buffer_data->term->tid,
            rid,
            segno,
            size);
@@ -3711,6 +3727,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
   }
   for (bt = db->terms; n; n--, bt++) {
     merger_data data = {0};
+    merge_buffer_data *buffer_data = &(data.source.buffer);
     int32_t balance = 0;
     uint32_t nchunks = 0;
     uint32_t nvchunks = 0;
@@ -3719,45 +3736,45 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
     uint32_t ndf;
 
     data.ii = ii;
-    data.sb = sb;
     data.sc = sc;
-    data.bt = bt;
+    buffer_data->buffer = sb;
+    buffer_data->term = bt;
 
-    if (!data.bt->tid) {
+    if (!bt->tid) {
       nterms_void++;
       continue;
     }
 
-    if (!data.bt->pos_in_buffer) {
-      GRN_ASSERT(!data.bt->size_in_buffer);
-      if (data.bt->size_in_chunk) {
+    if (!bt->pos_in_buffer) {
+      GRN_ASSERT(!bt->size_in_buffer);
+      if (bt->size_in_chunk) {
         grn_memcpy(dcp,
-                   data.sc + data.bt->pos_in_chunk,
-                   data.bt->size_in_chunk);
-        data.bt->pos_in_chunk = (uint32_t)(dcp - dc);
-        dcp += data.bt->size_in_chunk;
+                   data.sc + bt->pos_in_chunk,
+                   bt->size_in_chunk);
+        bt->pos_in_chunk = (uint32_t)(dcp - dc);
+        dcp += bt->size_in_chunk;
       }
       continue;
     }
 
     data.spos = 0;
-    data.nextb = bt->pos_in_buffer;
+    buffer_data->next_position = bt->pos_in_buffer;
     merger_get_next_buffer(ctx, &data);
     if (ctx->rc != GRN_SUCCESS) {
       goto exit;
     }
-    if (data.sc && data.bt->size_in_chunk) {
-      data.scp = data.sc + data.bt->pos_in_chunk;
-      data.sce = data.scp + data.bt->size_in_chunk;
+    if (data.sc && bt->size_in_chunk) {
+      data.scp = data.sc + bt->pos_in_chunk;
+      data.sce = data.scp + bt->size_in_chunk;
       size_t size = S_SEGMENT * ii->n_elements;
-      if ((data.bt->tid & CHUNK_SPLIT)) {
+      if ((bt->tid & CHUNK_SPLIT)) {
         int i;
         GRN_B_DEC(nchunks, data.scp);
         if (!(cinfo = GRN_MALLOCN(chunk_info, nchunks + 1))) {
           grn_obj term;
           DEFINE_NAME(ii);
           GRN_TEXT_INIT(&term, 0);
-          grn_ii_get_term(ctx, ii, data.bt->tid & GRN_ID_MAX, &term);
+          grn_ii_get_term(ctx, ii, bt->tid & GRN_ID_MAX, &term);
           MERR("[ii][buffer][merge] failed to allocate chunk info: "
                "<%.*s>: "
                "<%.*s>(%u): "
@@ -3767,7 +3784,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
                "total-size:<%" GRN_FMT_SIZE ">",
                name_size, name,
                (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-               data.bt->tid,
+               bt->tid,
                seg,
                nchunks,
                unitsize,
@@ -3780,7 +3797,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
           GRN_B_DEC(cinfo[i].size, data.scp);
           GRN_B_DEC(cinfo[i].dgap, data.scp);
           crid += cinfo[i].dgap;
-          if (data.bid.rid <= crid) {
+          if (buffer_data->id.rid <= crid) {
             chunk_merge(ctx, &data, &cinfo[i], crid, dv, &balance);
             if (ctx->rc != GRN_SUCCESS) {
               if (cinfo) { GRN_FREE(cinfo); }
@@ -3788,7 +3805,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
                 grn_obj term;
                 DEFINE_NAME(ii);
                 GRN_TEXT_INIT(&term, 0);
-                grn_ii_get_term(ctx, ii, data.bt->tid & GRN_ID_MAX, &term);
+                grn_ii_get_term(ctx, ii, bt->tid & GRN_ID_MAX, &term);
                 ERR(ctx->rc,
                     "[ii][buffer][merge] failed to merge chunk: "
                     "<%.*s>: "
@@ -3797,7 +3814,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
                     "n-chunks:<%u>",
                     name_size, name,
                     (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-                    data.bt->tid,
+                    bt->tid,
                     i,
                     nchunks);
                 GRN_OBJ_FIN(ctx, &term);
@@ -3817,7 +3834,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
         int decoded_size;
         decoded_size = grn_p_decv(ctx,
                                   ii,
-                                  data.bt->tid & GRN_ID_MAX,
+                                  bt->tid & GRN_ID_MAX,
                                   data.scp,
                                   data.sce - data.scp,
                                   rdv,
@@ -3829,7 +3846,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
             grn_rc rc = ctx->rc;
             DEFINE_NAME(ii);
             GRN_TEXT_INIT(&term, 0);
-            grn_ii_get_term(ctx, ii, data.bt->tid & GRN_ID_MAX, &term);
+            grn_ii_get_term(ctx, ii, bt->tid & GRN_ID_MAX, &term);
             if (rc == GRN_SUCCESS) {
               rc = GRN_UNKNOWN_ERROR;
             }
@@ -3840,7 +3857,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
                 "n-chunks:<%u>",
                 name_size, name,
                 (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-                data.bt->tid,
+                bt->tid,
                 nvchunks);
             GRN_OBJ_FIN(ctx, &term);
           }
@@ -3868,7 +3885,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
             grn_obj term;
             DEFINE_NAME(ii);
             GRN_TEXT_INIT(&term, 0);
-            grn_ii_get_term(ctx, ii, data.bt->tid & GRN_ID_MAX, &term);
+            grn_ii_get_term(ctx, ii, bt->tid & GRN_ID_MAX, &term);
             ERR(ctx->rc,
                 "[ii][buffer][merge] failed to reset data vector: "
                 "<%.*s>: "
@@ -3877,7 +3894,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
                 "total-size:<%" GRN_FMT_SIZE ">",
                 name_size, name,
                 (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-                data.bt->tid,
+                bt->tid,
                 (size_t)(data.sdf + S_SEGMENT),
                 size);
             GRN_OBJ_FIN(ctx, &term);
@@ -3898,7 +3915,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
       }
       data.posp = dv[j].data;
     }
-    data.lid = null_docinfo;
+    data.last_id = null_docinfo;
     merger_get_next_chunk(ctx, &data);
     if (ctx->rc != GRN_SUCCESS) {
       if (cinfo) { GRN_FREE(cinfo); }
@@ -3912,14 +3929,14 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
         grn_obj term;
         DEFINE_NAME(ii);
         GRN_TEXT_INIT(&term, 0);
-        grn_ii_get_term(ctx, ii, data.bt->tid & GRN_ID_MAX, &term);
+        grn_ii_get_term(ctx, ii, bt->tid & GRN_ID_MAX, &term);
         ERR(ctx->rc,
             "[ii][buffer][merge] failed to merge chunk: "
             "<%.*s>: "
             "<%.*s>(%u)",
             name_size, name,
             (int)GRN_TEXT_LEN(&term), GRN_TEXT_VALUE(&term),
-            data.bt->tid);
+            bt->tid);
         GRN_OBJ_FIN(ctx, &term);
       }
       goto exit;
@@ -3927,46 +3944,46 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
     GRN_ASSERT(data.posp < dv[ii->n_elements].data);
     ndf = data.ridp - dv[0].data;
     {
-      grn_id tid = data.bt->tid & GRN_ID_MAX;
+      grn_id tid = bt->tid & GRN_ID_MAX;
       uint32_t *a = array_at(ctx, ii, tid);
       if (!a) {
         /* TODO: warning */
         GRN_LOG(ctx, GRN_LOG_DEBUG, "array_entry not found tid=%d", tid);
-        memset(data.bt, 0, sizeof(buffer_term));
+        memset(bt, 0, sizeof(buffer_term));
         nterms_void++;
       } else {
         if (!ndf && !nvchunks) {
           a[0] = 0;
           a[1] = 0;
           lexicon_delete(ctx, ii, tid, h);
-          memset(data.bt, 0, sizeof(buffer_term));
+          memset(bt, 0, sizeof(buffer_term));
           nterms_void++;
         } else if ((ii->header->flags & GRN_OBJ_WITH_SECTION) &&
                    !nvchunks &&
                    ndf == 1 &&
-                   data.lid.rid < 0x100000 &&
-                   data.lid.sid < 0x800 &&
-                   data.lid.tf == 1 &&
-                   data.lid.weight == 0) {
-          a[0] = (data.lid.rid << 12) + (data.lid.sid << 1) + 1;
+                   data.last_id.rid < 0x100000 &&
+                   data.last_id.sid < 0x800 &&
+                   data.last_id.tf == 1 &&
+                   data.last_id.weight == 0) {
+          a[0] = (data.last_id.rid << 12) + (data.last_id.sid << 1) + 1;
           a[1] = (ii->header->flags & GRN_OBJ_WITH_POSITION) ? data.posp[-1] : 0;
-          memset(data.bt, 0, sizeof(buffer_term));
+          memset(bt, 0, sizeof(buffer_term));
           nterms_void++;
         } else if (!(ii->header->flags & GRN_OBJ_WITH_SECTION) &&
                    !nvchunks &&
                    ndf == 1 &&
-                   data.lid.tf == 1 &&
-                   data.lid.weight == 0) {
-          a[0] = (data.lid.rid << 1) + 1;
+                   data.last_id.tf == 1 &&
+                   data.last_id.weight == 0) {
+          a[0] = (data.last_id.rid << 1) + 1;
           a[1] = (ii->header->flags & GRN_OBJ_WITH_POSITION) ? data.posp[-1] : 0;
-          memset(data.bt, 0, sizeof(buffer_term));
+          memset(bt, 0, sizeof(buffer_term));
           nterms_void++;
         } else {
           int j = 0;
           uint8_t *dcp0;
           uint32_t encsize;
           uint32_t f_s = (ndf < 3) ? 0 : USE_P_ENC;
-          uint32_t f_d = ((ndf < 16) || (ndf <= (data.lid.rid >> 8))) ? 0 : USE_P_ENC;
+          uint32_t f_d = ((ndf < 16) || (ndf <= (data.last_id.rid >> 8))) ? 0 : USE_P_ENC;
           dv[j].data_size = ndf; dv[j++].flags = f_d;
           if ((ii->header->flags & GRN_OBJ_WITH_SECTION)) {
             dv[j].data_size = ndf; dv[j++].flags = f_s;
@@ -3981,7 +3998,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
             dv[j].data_size = np; dv[j].flags = f_p|ODD;
           }
           dcp0 = dcp;
-          a[1] = (data.bt->size_in_chunk ? a[1] : 0) + (ndf - data.sdf) + balance;
+          a[1] = (bt->size_in_chunk ? a[1] : 0) + (ndf - data.sdf) + balance;
           if (nvchunks) {
             int i;
             GRN_B_ENC(nvchunks, dcp);
@@ -3996,14 +4013,15 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
           encsize = grn_p_encv(ctx, dv, ii->n_elements, dcp);
 
           if (grn_logger_pass(ctx, GRN_LOG_DEBUG)) {
-            if (data.sb->header.chunk_size + S_SEGMENT <= (dcp - dc) + encsize) {
+            if (buffer_data->buffer->header.chunk_size + S_SEGMENT <=
+                (dcp - dc) + encsize) {
               GRN_LOG(ctx, GRN_LOG_DEBUG,
                       "cs(%d)+(%d)=(%d)"
                       "<=(%" GRN_FMT_LLD ")+(%d)="
                       "(%" GRN_FMT_LLD ")",
-                      data.sb->header.chunk_size,
+                      buffer_data->buffer->header.chunk_size,
                       S_SEGMENT,
-                      data.sb->header.chunk_size + S_SEGMENT,
+                      buffer_data->buffer->header.chunk_size + S_SEGMENT,
                       (long long int)(dcp - dc),
                       encsize,
                       (long long int)((dcp - dc) + encsize));
@@ -4015,7 +4033,7 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
               (cinfo || (cinfo = GRN_MALLOCN(chunk_info, nchunks + 1))) &&
               !chunk_flush(ctx, ii, &cinfo[nchunks], dcp, encsize)) {
             int i;
-            cinfo[nchunks].dgap = data.lid.rid - crid;
+            cinfo[nchunks].dgap = data.last_id.rid - crid;
             nvchunks++;
             dcp = dcp0;
             GRN_B_ENC(nvchunks, dcp);
@@ -4028,17 +4046,17 @@ buffer_merge(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h,
             }
             /* TODO: format */
             GRN_LOG(ctx, GRN_LOG_DEBUG, "split (%d) encsize=%d", tid, encsize);
-            data.bt->tid |= CHUNK_SPLIT;
+            bt->tid |= CHUNK_SPLIT;
           } else {
             dcp += encsize;
             if (!nvchunks) {
-              data.bt->tid &= ~CHUNK_SPLIT;
+              bt->tid &= ~CHUNK_SPLIT;
             }
           }
-          data.bt->pos_in_chunk = (uint32_t)(dcp0 - dc);
-          data.bt->size_in_chunk = (uint32_t)(dcp - dcp0);
-          data.bt->size_in_buffer = 0;
-          data.bt->pos_in_buffer = 0;
+          bt->pos_in_chunk = (uint32_t)(dcp0 - dc);
+          bt->size_in_chunk = (uint32_t)(dcp - dcp0);
+          bt->size_in_buffer = 0;
+          bt->pos_in_buffer = 0;
         }
         array_unref(ii, tid);
       }
@@ -4285,10 +4303,10 @@ grn_ii_buffer_check(grn_ctx *ctx, grn_ii *ii, uint32_t seg)
     GRN_OUTPUT_INT64(bt->size_in_chunk);
 
     data.ii = ii;
-    data.bt = bt;
-    data.sb = sb;
+    data.source.buffer.term = bt;
+    data.source.buffer.buffer = sb;
+    data.source.buffer.next_position = bt->pos_in_buffer;
     data.sc = sc;
-    data.nextb = bt->pos_in_buffer;
     merger_get_next_buffer(ctx, &data);
     if (sc && bt->size_in_chunk) {
       uint8_t *scp = sc + bt->pos_in_chunk;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20190214/9f0b47cd/attachment-0001.html>


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