1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00
This bug may manifest itself not only with the queries for which
the index-merge access method is chosen. It also may display
itself for queries with DISTINCT.

The bug was in how the Unique::get method used the merge_buffers
function. To compare elements in the the queue employed by
merge_buffers() it must use the buffpek_compare function rather
than the function for binary comparison. 


mysql-test/r/innodb_mysql.result:
  Added a test case for bug #25798.
mysql-test/t/innodb_mysql.test:
  Added a test case for bug #25798.
sql/filesort.cc:
  Fixed bug #25798.
  The function merge_buffers() when called from the Uniques::get method
  must use function buffpek_compare to compare elements in the queue it
  employs. The pointer to buffpek_compare and the info for the function
  that compares sorted records are passed to merge_buffers through certain 
  designated fields of the SORTPARAM structure.
sql/sql_sort.h:
  Fixed bug #25798.
  Added fields to the SORTPARAM structure to be used in the function 
  merge_buffers when called by the Uniques::get method.
sql/uniques.cc:
  Fixed bug 25798.
  The function merge_buffers() when called from the Uniques::get method
  must use function buffpek_compare to compare elements in the queue it
  employes.
This commit is contained in:
unknown
2007-07-01 15:33:28 -07:00
parent 8dcd5fca69
commit 07dcc80023
5 changed files with 134 additions and 11 deletions

View File

@ -50,6 +50,12 @@ typedef struct st_buffpek { /* Struktur om sorteringsbuffrarna */
ulong max_keys; /* Max keys in buffert */
} BUFFPEK;
struct BUFFPEK_COMPARE_CONTEXT
{
qsort_cmp2 key_compare;
void *key_compare_arg;
};
typedef struct st_sort_param {
uint rec_length; /* Length of sorted records */
uint sort_length; /* Length of sorted columns */
@ -65,6 +71,9 @@ typedef struct st_sort_param {
uchar *unique_buff;
bool not_killable;
char* tmp_buffer;
/* The fields below are used only by Unique class */
qsort2_cmp compare;
BUFFPEK_COMPARE_CONTEXT cmp_context;
} SORTPARAM;