Kouhei Sutou
null+****@clear*****
Sun Apr 10 16:20:15 JST 2016
Kouhei Sutou 2016-04-10 16:20:15 +0900 (Sun, 10 Apr 2016) New Revision: 07db9bc019243cadbc57554233913721dcb1452b https://github.com/groonga/groonga/commit/07db9bc019243cadbc57554233913721dcb1452b Message: Simplify Modified files: lib/proc/proc_select.c Modified: lib/proc/proc_select.c (+30 -23) =================================================================== --- lib/proc/proc_select.c 2016-04-10 16:16:55 +0900 (7004872) +++ lib/proc/proc_select.c 2016-04-10 16:20:15 +0900 (37e5a4c) @@ -588,27 +588,34 @@ grn_select_drilldowns_execute(grn_ctx *ctx, results = GRN_PLUGIN_MALLOCN(ctx, grn_table_group_result, n_drilldowns); - /* TODO: Remove invalid key drilldowns from the count. */ for (i = 0; i < n_drilldowns; i++) { grn_table_sort_key *keys = NULL; unsigned int n_keys; grn_obj *target_table = table; - unsigned int j = GRN_UINT32_VALUE_AT(&tsorted_indexes, i); - drilldown_info *drilldown = &(drilldowns[j]); + unsigned int index; + drilldown_info *drilldown; + grn_table_group_result *result; - results[j].table = NULL; - results[j].limit = 1; - results[j].flags = GRN_TABLE_GROUP_CALC_COUNT; - results[j].op = 0; - results[j].max_n_subrecs = 0; - results[j].calc_target = NULL; + index = GRN_UINT32_VALUE_AT(&tsorted_indexes, i); + drilldown = drilldowns + index; + result = results + index; + + result->table = NULL; + result->limit = 1; + result->flags = GRN_TABLE_GROUP_CALC_COUNT; + result->op = 0; + result->max_n_subrecs = 0; + result->calc_target = NULL; if (drilldown->table_name) { - grn_id id; - id = grn_table_get(ctx, labels, - drilldown->table_name, drilldown->table_name_len); - if (id) { - target_table = results[id - 1].table; + grn_id dependent_id; + dependent_id = grn_table_get(ctx, + labels, + drilldown->table_name, + drilldown->table_name_len); + if (dependent_id != GRN_ID_NIL) { + uint32_t dependent_index = dependent_id - 1; + target_table = results[dependent_index].table; } } @@ -620,21 +627,21 @@ grn_select_drilldowns_execute(grn_ctx *ctx, continue; } - results[j].key_begin = 0; - results[j].key_end = n_keys - 1; + result->key_begin = 0; + result->key_end = n_keys - 1; if (n_keys > 1) { - results[j].max_n_subrecs = 1; + result->max_n_subrecs = 1; } if (drilldown->calc_target_name) { - results[j].calc_target = grn_obj_column(ctx, target_table, - drilldown->calc_target_name, - drilldown->calc_target_name_len); + result->calc_target = grn_obj_column(ctx, target_table, + drilldown->calc_target_name, + drilldown->calc_target_name_len); } - if (results[j].calc_target) { - results[j].flags |= drilldown->calc_types; + if (result->calc_target) { + result->flags |= drilldown->calc_types; } - grn_table_group(ctx, target_table, keys, n_keys, &(results[j]), 1); + grn_table_group(ctx, target_table, keys, n_keys, result, 1); grn_table_sort_key_close(ctx, keys, n_keys); } -------------- next part -------------- HTML����������������������������...다운로드