Commit f3cea4f2 authored by Brandon Nesterenko's avatar Brandon Nesterenko

MDEV-34348: typedef qsort_cmp2 qsort2_cmp

To create more consistency in comparators, make
qsort2_cmp use the definition of qsort_cmp2, and
extend the strictness of qsort_cmp2 to make its
first parameter const.
parent 86575b17
......@@ -530,7 +530,7 @@ typedef double pfloat; /* Mixed prototypes can't take float */
#endif
C_MODE_START
typedef int (*qsort_cmp)(const void *,const void *);
typedef int (*qsort_cmp2)(void*, const void *,const void *);
typedef int (*qsort_cmp2)(const void *param, const void *a, const void *b);
C_MODE_END
#define qsort_t RETQSORTTYPE /* Broken GCC can't handle typedef !!!! */
#ifdef HAVE_SYS_SOCKET_H
......
......@@ -29,6 +29,7 @@ C_MODE_START
#include <stdarg.h>
#include <typelib.h>
#include <my_alloca.h>
#include <my_global.h>
#include <mysql/plugin.h>
#include <mysql/service_my_print_error.h>
......@@ -462,7 +463,7 @@ typedef struct st_io_cache /* Used when caching files */
size_t alloced_buffer;
} IO_CACHE;
typedef int (*qsort2_cmp)(const void *param, const void *a, const void *b);
typedef qsort_cmp2 qsort2_cmp;
typedef void (*my_error_reporter)(enum loglevel level, const char *format, ...)
ATTRIBUTE_FORMAT_FPTR(printf, 2, 3);
......
......@@ -654,10 +654,10 @@ bool Item_sum::check_vcol_func_processor(void *arg)
@retval > 0 if key1 > key2
*/
int simple_str_key_cmp(void* arg, uchar* key1, uchar* key2)
int simple_str_key_cmp(const void *arg, const void *key1, const void *key2)
{
Field *f= (Field*) arg;
return f->cmp(key1, key2);
const Field *f= (const Field *) arg;
return f->cmp((const uchar *) key1, (const uchar *) key2);
}
......@@ -687,9 +687,12 @@ C_MODE_END
@retval >0 if key1 > key2
*/
int Aggregator_distinct::composite_key_cmp(void* arg, uchar* key1, uchar* key2)
int Aggregator_distinct::composite_key_cmp(const void *arg, const void *_key1,
const void *_key2)
{
Aggregator_distinct *aggr= (Aggregator_distinct *) arg;
const uchar* key1= static_cast<const uchar *>(_key1);
const uchar* key2= static_cast<const uchar *>(_key2);
const Aggregator_distinct *aggr= static_cast<const Aggregator_distinct *>(arg);
Field **field = aggr->table->field;
Field **field_end= field + aggr->table->s->fields;
uint32 *lengths=aggr->field_lengths;
......@@ -713,9 +716,9 @@ C_MODE_START
/* Declarations for auxiliary C-callbacks */
int simple_raw_key_cmp(void* arg, const void* key1, const void* key2)
int simple_raw_key_cmp(const void* arg, const void* key1, const void* key2)
{
return memcmp(key1, key2, *(uint *) arg);
return memcmp(key1, key2, *(const uint *) arg);
}
......@@ -3559,11 +3562,12 @@ String *Item_sum_udf_str::val_str(String *str)
@retval 1 : key1 > key2
*/
extern "C"
int group_concat_key_cmp_with_distinct(void* arg, const void* key1,
const void* key2)
extern "C" int group_concat_key_cmp_with_distinct(const void *arg,
const void *key1,
const void *key2)
{
Item_func_group_concat *item_func= (Item_func_group_concat*)arg;
const Item_func_group_concat *item_func=
static_cast<const Item_func_group_concat *>(arg);
for (uint i= 0; i < item_func->arg_count_field; i++)
{
......@@ -3602,11 +3606,12 @@ int group_concat_key_cmp_with_distinct(void* arg, const void* key1,
Used for JSON_ARRAYAGG function
*/
int group_concat_key_cmp_with_distinct_with_nulls(void* arg,
const void* key1_arg,
const void* key2_arg)
int group_concat_key_cmp_with_distinct_with_nulls(const void *arg,
const void *key1_arg,
const void *key2_arg)
{
Item_func_group_concat *item_func= (Item_func_group_concat*)arg;
const Item_func_group_concat *item_func=
static_cast<const Item_func_group_concat *>(arg);
uchar *key1= (uchar*)key1_arg + item_func->table->s->null_bytes;
uchar *key2= (uchar*)key2_arg + item_func->table->s->null_bytes;
......@@ -3655,11 +3660,12 @@ int group_concat_key_cmp_with_distinct_with_nulls(void* arg,
function of sort for syntax: GROUP_CONCAT(expr,... ORDER BY col,... )
*/
extern "C"
int group_concat_key_cmp_with_order(void* arg, const void* key1,
const void* key2)
extern "C" int group_concat_key_cmp_with_order(const void *arg,
const void *key1,
const void *key2)
{
Item_func_group_concat* grp_item= (Item_func_group_concat*) arg;
const Item_func_group_concat *grp_item=
static_cast<const Item_func_group_concat *>(arg);
ORDER **order_item, **end;
for (order_item= grp_item->order, end=order_item+ grp_item->arg_count_order;
......@@ -3715,10 +3721,12 @@ int group_concat_key_cmp_with_order(void* arg, const void* key1,
Used for JSON_ARRAYAGG function
*/
int group_concat_key_cmp_with_order_with_nulls(void *arg, const void *key1_arg,
int group_concat_key_cmp_with_order_with_nulls(const void *arg,
const void *key1_arg,
const void *key2_arg)
{
Item_func_group_concat* grp_item= (Item_func_group_concat*) arg;
const Item_func_group_concat *grp_item=
static_cast<const Item_func_group_concat *>(arg);
ORDER **order_item, **end;
uchar *key1= (uchar*)key1_arg + grp_item->table->s->null_bytes;
......
......@@ -714,7 +714,7 @@ class Aggregator_distinct : public Aggregator
bool unique_walk_function(void *element);
bool unique_walk_function_for_count(void *element);
static int composite_key_cmp(void* arg, uchar* key1, uchar* key2);
static int composite_key_cmp(const void *arg, const void *key1, const void *key2);
};
......@@ -1872,13 +1872,15 @@ class Item_sum_udf_str :public Item_sum_double
#endif /* HAVE_DLOPEN */
C_MODE_START
int group_concat_key_cmp_with_distinct(void* arg, const void* key1,
const void* key2);
int group_concat_key_cmp_with_distinct_with_nulls(void* arg, const void* key1,
const void* key2);
int group_concat_key_cmp_with_order(void* arg, const void* key1,
const void* key2);
int group_concat_key_cmp_with_order_with_nulls(void *arg, const void *key1,
int group_concat_key_cmp_with_distinct(const void *arg, const void *key1,
const void *key2);
int group_concat_key_cmp_with_distinct_with_nulls(const void *arg,
const void *key1,
const void *key2);
int group_concat_key_cmp_with_order(const void *arg, const void *key1,
const void *key2);
int group_concat_key_cmp_with_order_with_nulls(const void *arg,
const void *key1,
const void *key2);
int dump_leaf_key(void* key_arg,
element_count count __attribute__((unused)),
......@@ -1940,15 +1942,17 @@ class Item_func_group_concat : public Item_sum
*/
bool add(bool exclude_nulls);
friend int group_concat_key_cmp_with_distinct(void* arg, const void* key1,
const void* key2);
friend int group_concat_key_cmp_with_distinct_with_nulls(void* arg,
const void* key1,
const void* key2);
friend int group_concat_key_cmp_with_order(void* arg, const void* key1,
const void* key2);
friend int group_concat_key_cmp_with_order_with_nulls(void *arg,
const void *key1, const void *key2);
friend int group_concat_key_cmp_with_distinct(const void *arg,
const void *key1,
const void *key2);
friend int group_concat_key_cmp_with_distinct_with_nulls(const void *arg,
const void *key1,
const void *key2);
friend int group_concat_key_cmp_with_order(const void *arg, const void *key1,
const void *key2);
friend int group_concat_key_cmp_with_order_with_nulls(const void *arg,
const void *key1,
const void *key2);
friend int dump_leaf_key(void* key_arg,
element_count count __attribute__((unused)),
void* item_arg);
......
......@@ -343,11 +343,10 @@ class Refpos_container_sorted_array : public Sql_alloc
uint elements() { return (uint) (array->elements() / elem_size); }
void sort (int (*cmp) (void *ctxt, const void *el1, const void *el2),
void *cmp_arg)
void sort(qsort2_cmp cmp, void *cmp_arg)
{
my_qsort2(array->front(), array->elements()/elem_size,
elem_size, (qsort2_cmp) cmp, cmp_arg);
elem_size, cmp, cmp_arg);
}
bool is_empty() { return elements() == 0; }
......
......@@ -323,10 +323,9 @@ int dynamic_column_error_message(enum_dyncol_func_result rc);
/* open_and_lock_tables with optional derived handling */
int open_and_lock_tables_derived(THD *thd, TABLE_LIST *tables, bool derived);
extern "C" int simple_raw_key_cmp(void* arg, const void* key1,
const void* key2);
extern "C" qsort2_cmp simple_raw_key_cmp;
extern "C" int count_distinct_walk(void *elem, element_count count, void *arg);
int simple_str_key_cmp(void* arg, uchar* key1, uchar* key2);
int simple_str_key_cmp(const void *arg, const void *key1, const void *key2);
extern Item **not_found_item;
extern Field *not_found_field;
......
......@@ -1091,9 +1091,9 @@ int mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds,
***************************************************************************/
extern "C" int refpos_order_cmp(void* arg, const void *a,const void *b)
extern "C" int refpos_order_cmp(const void *arg, const void *a, const void *b)
{
handler *file= (handler*)arg;
handler *file= static_cast<handler*>(const_cast<void*>(arg));
return file->cmp_ref((const uchar*)a, (const uchar*)b);
}
......
......@@ -1945,7 +1945,7 @@ int opt_sum_query(THD* thd,
List<TABLE_LIST> &tables, List<Item> &all_fields, COND *conds);
/* from sql_delete.cc, used by opt_range.cc */
extern "C" int refpos_order_cmp(void* arg, const void *a,const void *b);
extern "C" int refpos_order_cmp(const void *arg, const void *a,const void *b);
/** class to copying an field/item to a key struct */
......
......@@ -328,7 +328,7 @@ static int _ftb_parse_query(FTB *ftb, uchar *query, uint len,
}
static int _ftb_no_dupes_cmp(void* not_used __attribute__((unused)),
static int _ftb_no_dupes_cmp(const void *not_used __attribute__((unused)),
const void *a,const void *b)
{
return CMP_NUM((*((my_off_t*)a)), (*((my_off_t*)b)));
......
......@@ -330,7 +330,7 @@ static int _ftb_parse_query(FTB *ftb, uchar *query, uint len,
}
static int _ftb_no_dupes_cmp(void* not_used __attribute__((unused)),
static int _ftb_no_dupes_cmp(const void *not_used __attribute__((unused)),
const void *a,const void *b)
{
return CMP_NUM((*((my_off_t*)a)), (*((my_off_t*)b)));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment