[Groonga-commit] groonga/groonga at c2cdf75 [master] Use normal variable instead of pointer for min record id

Back to archive index

Naoya Murakami null+****@clear*****
Wed Dec 28 15:42:30 JST 2016


Naoya Murakami	2016-12-28 15:42:30 +0900 (Wed, 28 Dec 2016)

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

  Merged 6142da4: Merge pull request #618 from naoa/ii-set-min-for-and-operator

  Message:
    Use normal variable instead of pointer for min record id

  Modified files:
    include/groonga/groonga.h
    lib/expr.c
    lib/grn_ii.h
    lib/ii.c

  Modified: include/groonga/groonga.h (+1 -1)
===================================================================
--- include/groonga/groonga.h    2016-12-27 20:57:25 +0900 (0171659)
+++ include/groonga/groonga.h    2016-12-28 15:42:30 +0900 (18f38fa)
@@ -806,7 +806,7 @@ typedef struct _grn_match_info grn_match_info;
 
 struct _grn_match_info {
   int flags;
-  grn_id *min;
+  grn_id min;
 };
 
 typedef struct _grn_search_optarg grn_search_optarg;

  Modified: lib/expr.c (+3 -5)
===================================================================
--- lib/expr.c    2016-12-27 20:57:25 +0900 (5dada58)
+++ lib/expr.c    2016-12-28 15:42:30 +0900 (7caffbc)
@@ -6695,10 +6695,8 @@ grn_table_select_index(grn_ctx *ctx, grn_obj *table, scan_info *si,
         for (j = 0; j < n_indexes; j++, ip++, wp += 2) {
           uint32_t sid = (uint32_t) wp[0];
           int32_t weight = wp[1];
-          grn_id current_min;
           if (min) {
-            current_min = previous_min;
-            optarg.match_info.min = &current_min;
+            optarg.match_info.min = previous_min;
           }
           if (sid) {
             int weight_index = sid - 1;
@@ -6734,8 +6732,8 @@ grn_table_select_index(grn_ctx *ctx, grn_obj *table, scan_info *si,
           }
           GRN_BULK_REWIND(&wv);
           if (min) {
-            if (previous_min < current_min && (*min == previous_min || current_min < *min)) {
-              *min = current_min;
+            if (previous_min < optarg.match_info.min && (*min == previous_min || optarg.match_info.min < *min)) {
+              *min = optarg.match_info.min;
             }
           }
         }

  Modified: lib/grn_ii.h (+1 -1)
===================================================================
--- lib/grn_ii.h    2016-12-27 20:57:25 +0900 (6c1930e)
+++ lib/grn_ii.h    2016-12-28 15:42:30 +0900 (4a033de)
@@ -154,7 +154,7 @@ struct _grn_select_optarg {
   grn_obj *scorer_args_expr;
   unsigned int scorer_args_expr_offset;
   grn_fuzzy_search_optarg fuzzy;
-  grn_match_info match_info;
+  grn_match_info *match_info;
 };
 
 GRN_API grn_rc grn_ii_column_update(grn_ctx *ctx, grn_ii *ii, grn_id id,

  Modified: lib/ii.c (+5 -7)
===================================================================
--- lib/ii.c    2016-12-27 20:57:25 +0900 (25c408c)
+++ lib/ii.c    2016-12-28 15:42:30 +0900 (0e3835b)
@@ -7802,8 +7802,8 @@ grn_ii_select(grn_ctx *ctx, grn_ii *ii,
     } else if (optarg->vector_size) {
       wvm = optarg->weight_vector ? grn_wv_static : grn_wv_constant;
     }
-    if (optarg->match_info.flags & GRN_MATCH_INFO_GET_MIN_RECORD_ID) {
-      previous_min = *(optarg->match_info.min);
+    if (optarg->match_info->flags & GRN_MATCH_INFO_GET_MIN_RECORD_ID) {
+      previous_min = optarg->match_info->min;
       set_min_enable_for_and_query = GRN_TRUE;
     }
   }
@@ -8054,7 +8054,7 @@ exit :
 
   if (set_min_enable_for_and_query) {
     if (current_min > previous_min) {
-      *(optarg->match_info.min) = current_min;
+      optarg->match_info->min = current_min;
     }
   }
 
@@ -8150,7 +8150,7 @@ grn_ii_estimate_size_for_query(grn_ctx *ctx, grn_ii *ii,
       break;
     }
     if (optarg->match_info.flags & GRN_MATCH_INFO_GET_MIN_RECORD_ID) {
-      min = *(optarg->match_info.min);
+      min = optarg->match_info.min;
     }
   }
 
@@ -8266,9 +8266,7 @@ grn_ii_sel(grn_ctx *ctx, grn_ii *ii, const char *string, unsigned int string_len
       arg.scorer = optarg->scorer;
       arg.scorer_args_expr = optarg->scorer_args_expr;
       arg.scorer_args_expr_offset = optarg->scorer_args_expr_offset;
-      if (optarg->match_info.flags) {
-        arg.match_info = optarg->match_info;
-      }
+      arg.match_info = &(optarg->match_info);
     }
     /* todo : support subrec
     grn_rset_init(ctx, s, grn_rec_document, 0, grn_rec_none, 0, 0);
-------------- next part --------------
HTML����������������������������...
Download 



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