diff options
author | Igor Babaev <igor@askmonty.org> | 2012-09-01 14:21:59 -0700 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2012-09-01 14:21:59 -0700 |
commit | a6b88f1431238152643e41979ce10b9bbdac2a82 (patch) | |
tree | 42482ef66f3c59b255d299fc58ace8c1b0c518ea /sql/uniques.cc | |
parent | 5a86a61219826aadf8d08cbc447fe438f2bf50c3 (diff) | |
download | mariadb-git-a6b88f1431238152643e41979ce10b9bbdac2a82.tar.gz |
MDEV-415: Back-port of the WL task #1393 from the mysql-5.6 code line.
The task adds a more efficient handling of the queries with
ORDER BY order LIMIT n, such that n is small enough and
no indexes are used for order.
Diffstat (limited to 'sql/uniques.cc')
-rw-r--r-- | sql/uniques.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sql/uniques.cc b/sql/uniques.cc index ae50a1d3970..c246cd637bd 100644 --- a/sql/uniques.cc +++ b/sql/uniques.cc @@ -620,7 +620,6 @@ bool Unique::walk(tree_walk_action action, void *walk_action_arg) bool Unique::get(TABLE *table) { - SORTPARAM sort_param; table->sort.found_records=elements+tree.elements_in_tree; if (my_b_tell(&file) == 0) { @@ -660,6 +659,7 @@ bool Unique::get(TABLE *table) return 1; reinit_io_cache(outfile,WRITE_CACHE,0L,0,0); + Sort_param sort_param; bzero((char*) &sort_param,sizeof(sort_param)); sort_param.max_rows= elements; sort_param.sort_form=table; @@ -667,14 +667,15 @@ bool Unique::get(TABLE *table) full_size; sort_param.min_dupl_count= min_dupl_count; sort_param.res_length= 0; - sort_param.keys= (uint) (max_in_memory_size / sort_param.sort_length); + sort_param.max_keys_per_buffer= + (uint) (max_in_memory_size / sort_param.sort_length); sort_param.not_killable=1; - if (!(sort_buffer=(uchar*) my_malloc((sort_param.keys+1) * + if (!(sort_buffer=(uchar*) my_malloc((sort_param.max_keys_per_buffer+1) * sort_param.sort_length, MYF(0)))) return 1; - sort_param.unique_buff= sort_buffer+(sort_param.keys* + sort_param.unique_buff= sort_buffer+(sort_param.max_keys_per_buffer * sort_param.sort_length); sort_param.compare= (qsort2_cmp) buffpek_compare; |