[Groonga-commit] groonga/groonga at 13ecba6 [master] Really fix a bug that AND optimization may skip matched record

Back to archive index

Kouhei Sutou null+****@clear*****
Fri Jan 20 16:20:26 JST 2017


Kouhei Sutou	2017-01-20 16:20:26 +0900 (Fri, 20 Jan 2017)

  New Revision: 13ecba681ff4b48347654d44d53f5e19a80e6451
  https://github.com/groonga/groonga/commit/13ecba681ff4b48347654d44d53f5e19a80e6451

  Message:
    Really fix a bug that AND optimization may skip matched record
    
    minimum_min_id may be GRN_ID_NIL twice.

  Modified files:
    lib/expr.c

  Modified: lib/expr.c (+3 -1)
===================================================================
--- lib/expr.c    2017-01-20 13:18:36 +0900 (fe6f3df)
+++ lib/expr.c    2017-01-20 16:20:26 +0900 (8cda4a6)
@@ -6158,6 +6158,7 @@ grn_table_select_index_match(grn_ctx *ctx,
   int n_indexes = GRN_BULK_VSIZE(&si->index)/sizeof(grn_obj *);
   int32_t *wp = &GRN_INT32_VALUE(&si->wv);
   grn_search_optarg optarg;
+  grn_bool minimum_min_id_is_set = GRN_FALSE;
   grn_id minimum_min_id = GRN_ID_NIL;
   unsigned int previous_n_hits = grn_table_size(ctx, res);
 
@@ -6224,8 +6225,9 @@ grn_table_select_index_match(grn_ctx *ctx,
       }
     }
     GRN_BULK_REWIND(&wv);
-    if (minimum_min_id == GRN_ID_NIL ||
+    if (!minimum_min_id_is_set ||
         optarg.match_info.min < minimum_min_id) {
+      minimum_min_id_is_set = GRN_TRUE;
       minimum_min_id = optarg.match_info.min;
     }
   }
-------------- next part --------------
HTML����������������������������...
下载 



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