Kouhei Sutou
null+****@clear*****
Sat May 21 17:06:07 JST 2016
Kouhei Sutou 2016-05-21 17:06:07 +0900 (Sat, 21 May 2016) New Revision: 18d6445ec3970a8bc0cff64b68bc95363a18e28e https://github.com/groonga/groonga/commit/18d6445ec3970a8bc0cff64b68bc95363a18e28e Message: select: extract preparing drilldowns code Modified files: lib/proc/proc_select.c Modified: lib/proc/proc_select.c (+43 -28) =================================================================== --- lib/proc/proc_select.c 2016-05-21 16:56:00 +0900 (854e921) +++ lib/proc/proc_select.c 2016-05-21 17:06:07 +0900 (0fab902) @@ -1426,6 +1426,47 @@ grn_select_slices(grn_ctx *ctx, } static grn_bool +grn_select_prepare_drilldowns(grn_ctx *ctx, + grn_select_data *data) +{ + grn_drilldown_data *anonymous_drilldown = NULL; + + if (!data->drilldowns) { + return GRN_TRUE; + } + + if (grn_hash_size(ctx, data->drilldowns) == 1) { + grn_id first_id = 1; + anonymous_drilldown = + (grn_drilldown_data *)grn_hash_get_value_(ctx, + data->drilldowns, + first_id, + NULL); + if (anonymous_drilldown) { + if (anonymous_drilldown->label.length > 0) { + anonymous_drilldown = NULL; + } + } + } + + if (anonymous_drilldown) { + data->drilldown.keys = + grn_table_sort_key_from_str(ctx, + anonymous_drilldown->keys.value, + anonymous_drilldown->keys.length, + data->tables.result, + &(data->drilldown.n_keys)); + if (data->drilldown.keys) { + data->output.n_elements += data->drilldown.n_keys; + } + } else { + data->output.n_elements += 1; + } + + return GRN_TRUE; +} + +static grn_bool grn_select_drilldown_execute(grn_ctx *ctx, grn_select_data *data, grn_obj *table, @@ -2193,34 +2234,8 @@ grn_select(grn_ctx *ctx, grn_select_data *data) goto exit; } - if (data->drilldowns) { - grn_drilldown_data *anonymous_drilldown = NULL; - if (grn_hash_size(ctx, data->drilldowns) == 1) { - grn_id first_id = 1; - anonymous_drilldown = - (grn_drilldown_data *)grn_hash_get_value_(ctx, - data->drilldowns, - first_id, - NULL); - if (anonymous_drilldown) { - if (anonymous_drilldown->label.length > 0) { - anonymous_drilldown = NULL; - } - } - } - if (anonymous_drilldown) { - data->drilldown.keys = - grn_table_sort_key_from_str(ctx, - anonymous_drilldown->keys.value, - anonymous_drilldown->keys.length, - data->tables.result, - &(data->drilldown.n_keys)); - if (data->drilldown.keys) { - data->output.n_elements += data->drilldown.n_keys; - } - } else { - data->output.n_elements += 1; - } + if (!grn_select_prepare_drilldowns(ctx, data)) { + goto exit; } if (data->adjuster.length > 0) { -------------- next part -------------- HTML����������������������������...下载