mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-34348: Consolidate cmp function declarations
Partial commit of the greater MDEV-34348 scope. MDEV-34348: MariaDB is violating clang-16 -Wcast-function-type-strict The functions queue_compare, qsort2_cmp, and qsort_cmp2 all had similar interfaces, and were used interchangable and unsafely cast to one another. This patch consolidates the functions all into the qsort_cmp2 interface. Reviewed By: ============ Marko Mäkelä <marko.makela@mariadb.com>
This commit is contained in:
@@ -144,9 +144,12 @@ typedef struct st_ft_info
|
||||
enum { UNINITIALIZED, READY, INDEX_SEARCH, INDEX_DONE } state;
|
||||
} FTB;
|
||||
|
||||
static int FTB_WORD_cmp(my_off_t *v, FTB_WORD *a, FTB_WORD *b)
|
||||
static int FTB_WORD_cmp(void *v_, const void *a_, const void *b_)
|
||||
{
|
||||
int i;
|
||||
const my_off_t *v= v_;
|
||||
const FTB_WORD *a= a_;
|
||||
const FTB_WORD *b= b_;
|
||||
|
||||
/* if a==curdoc, take it as a < b */
|
||||
if (v && a->docid[0] == *v)
|
||||
@@ -159,11 +162,14 @@ static int FTB_WORD_cmp(my_off_t *v, FTB_WORD *a, FTB_WORD *b)
|
||||
return i;
|
||||
}
|
||||
|
||||
static int FTB_WORD_cmp_list(CHARSET_INFO *cs, FTB_WORD **a, FTB_WORD **b)
|
||||
static int FTB_WORD_cmp_list(void *cs_, const void *a_, const void *b_)
|
||||
{
|
||||
CHARSET_INFO *cs= cs_;
|
||||
const FTB_WORD *const *a= a_;
|
||||
const FTB_WORD *const *b= b_;
|
||||
/* ORDER BY word, ndepth */
|
||||
int i= ha_compare_word(cs, (uchar*) (*a)->word + 1, (*a)->len - 1,
|
||||
(uchar*) (*b)->word + 1, (*b)->len - 1);
|
||||
int i= ha_compare_word(cs, (*a)->word + 1, (*a)->len - 1, (*b)->word + 1,
|
||||
(*b)->len - 1);
|
||||
if (!i)
|
||||
i= CMP_NUM((*a)->ndepth, (*b)->ndepth);
|
||||
return i;
|
||||
@@ -327,8 +333,8 @@ static int _ftb_parse_query(FTB *ftb, uchar *query, uint len,
|
||||
}
|
||||
|
||||
|
||||
static int _ftb_no_dupes_cmp(void* not_used __attribute__((unused)),
|
||||
const void *a,const void *b)
|
||||
static int _ftb_no_dupes_cmp(void *not_used __attribute__((unused)),
|
||||
const void *a, const void *b)
|
||||
{
|
||||
return CMP_NUM((*((my_off_t*)a)), (*((my_off_t*)b)));
|
||||
}
|
||||
@@ -607,14 +613,14 @@ FT_INFO * ft_init_boolean_search(MI_INFO *info, uint keynr, uchar *query,
|
||||
sizeof(void *))))
|
||||
goto err;
|
||||
reinit_queue(&ftb->queue, ftb->queue.max_elements, 0, 0,
|
||||
(int (*)(void*, uchar*, uchar*))FTB_WORD_cmp, 0, 0, 0);
|
||||
FTB_WORD_cmp, 0, 0, 0);
|
||||
for (ftbw= ftb->last_word; ftbw; ftbw= ftbw->prev)
|
||||
queue_insert(&ftb->queue, (uchar *)ftbw);
|
||||
ftb->list=(FTB_WORD **)alloc_root(&ftb->mem_root,
|
||||
sizeof(FTB_WORD *)*ftb->queue.elements);
|
||||
memcpy(ftb->list, &queue_top(&ftb->queue), sizeof(FTB_WORD *)*ftb->queue.elements);
|
||||
my_qsort2(ftb->list, ftb->queue.elements, sizeof(FTB_WORD *),
|
||||
(qsort2_cmp)FTB_WORD_cmp_list, (void*)ftb->charset);
|
||||
FTB_WORD_cmp_list, (void*)ftb->charset);
|
||||
if (ftb->queue.elements<2) ftb->with_scan &= ~FTB_FLAG_TRUNC;
|
||||
ftb->state=READY;
|
||||
return ftb;
|
||||
|
Reference in New Issue
Block a user