diff options
author | unknown <monty@mashka.mysql.fi> | 2003-03-16 16:30:54 +0200 |
---|---|---|
committer | unknown <monty@mashka.mysql.fi> | 2003-03-16 16:30:54 +0200 |
commit | bfbb0ad69df21854f2db5fb2b9c708b2a576929e (patch) | |
tree | f6d63b9728c1157c31c1f74bbe32bc1e50de79b8 /sql/filesort.cc | |
parent | f08688c5ee2aed851f92393b06b1b704ef0dd118 (diff) | |
parent | 9681f4a8cd242e3828f211e0bed5235e70ee5f4e (diff) | |
download | mariadb-git-bfbb0ad69df21854f2db5fb2b9c708b2a576929e.tar.gz |
Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mashka.mysql.fi:/home/my/mysql-4.0
Diffstat (limited to 'sql/filesort.cc')
-rw-r--r-- | sql/filesort.cc | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/sql/filesort.cc b/sql/filesort.cc index b212e2cb366..86574e4dd57 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -68,7 +68,7 @@ ha_rows filesort(TABLE *table, SORT_FIELD *sortorder, uint s_length, ha_rows *examined_rows) { int error; - ulong memavl; + ulong memavl, min_sort_memory; uint maxbuffer; BUFFPEK *buffpek; ha_rows records; @@ -137,7 +137,8 @@ ha_rows filesort(TABLE *table, SORT_FIELD *sortorder, uint s_length, #endif memavl= thd->variables.sortbuff_size; - while (memavl >= MIN_SORT_MEMORY) + min_sort_memory= max(MIN_SORT_MEMORY, param.sort_length*MERGEBUFF2); + while (memavl >= min_sort_memory) { ulong old_memavl; ulong keys= memavl/(param.sort_length+sizeof(char*)); @@ -146,15 +147,10 @@ ha_rows filesort(TABLE *table, SORT_FIELD *sortorder, uint s_length, MYF(0)))) break; old_memavl=memavl; - if ((memavl=memavl/4*3) < MIN_SORT_MEMORY && old_memavl > MIN_SORT_MEMORY) - memavl=MIN_SORT_MEMORY; + if ((memavl=memavl/4*3) < min_sort_memory && old_memavl > min_sort_memory) + memavl= min_sort_memory; } - if (memavl < param.sort_length*MERGEBUFF2) - { - my_error(ER_OUT_OF_SORTMEMORY,MYF(0)); - goto err; - } - if (memavl < MIN_SORT_MEMORY) + if (memavl < min_sort_memory) { my_error(ER_OUTOFMEMORY,MYF(ME_ERROR+ME_WAITTANG), thd->variables.sortbuff_size); |