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 = ¤t_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