Commit d2900d91 authored by Yury Kurlykov's avatar Yury Kurlykov Committed by GitHub

MDEV-22629 Remove fts_indexes field from struct fts_update_t (#1537)

fts_indexes field in fts_update_t never used. So replace fts_update_t
with doc_id_t in the code
parent dd95935e
...@@ -584,7 +584,7 @@ fts_cache_init( ...@@ -584,7 +584,7 @@ fts_cache_init(
mutex_enter((ib_mutex_t*) &cache->deleted_lock); mutex_enter((ib_mutex_t*) &cache->deleted_lock);
cache->deleted_doc_ids = ib_vector_create( cache->deleted_doc_ids = ib_vector_create(
cache->sync_heap, sizeof(fts_update_t), 4); cache->sync_heap, sizeof(doc_id_t), 4);
mutex_exit((ib_mutex_t*) &cache->deleted_lock); mutex_exit((ib_mutex_t*) &cache->deleted_lock);
/* Reset the cache data for all the FTS indexes. */ /* Reset the cache data for all the FTS indexes. */
...@@ -2637,11 +2637,11 @@ dberr_t ...@@ -2637,11 +2637,11 @@ dberr_t
fts_cmp_set_sync_doc_id( fts_cmp_set_sync_doc_id(
/*====================*/ /*====================*/
const dict_table_t* table, /*!< in: table */ const dict_table_t* table, /*!< in: table */
doc_id_t doc_id_cmp, /*!< in: Doc ID to compare */ doc_id_t cmp_doc_id, /*!< in: Doc ID to compare */
ibool read_only, /*!< in: TRUE if read the ibool read_only, /*!< in: TRUE if read the
synced_doc_id only */ synced_doc_id only */
doc_id_t* doc_id) /*!< out: larger document id doc_id_t* doc_id) /*!< out: larger document id
after comparing "doc_id_cmp" after comparing "cmp_doc_id"
to the one stored in CONFIG to the one stored in CONFIG
table */ table */
{ {
...@@ -2712,10 +2712,10 @@ fts_cmp_set_sync_doc_id( ...@@ -2712,10 +2712,10 @@ fts_cmp_set_sync_doc_id(
goto func_exit; goto func_exit;
} }
if (doc_id_cmp == 0 && *doc_id) { if (cmp_doc_id == 0 && *doc_id) {
cache->synced_doc_id = *doc_id - 1; cache->synced_doc_id = *doc_id - 1;
} else { } else {
cache->synced_doc_id = ut_max(doc_id_cmp, *doc_id); cache->synced_doc_id = ut_max(cmp_doc_id, *doc_id);
} }
mutex_enter(&cache->doc_id_lock); mutex_enter(&cache->doc_id_lock);
...@@ -2726,7 +2726,7 @@ fts_cmp_set_sync_doc_id( ...@@ -2726,7 +2726,7 @@ fts_cmp_set_sync_doc_id(
} }
mutex_exit(&cache->doc_id_lock); mutex_exit(&cache->doc_id_lock);
if (doc_id_cmp > *doc_id) { if (cmp_doc_id > *doc_id) {
error = fts_update_sync_doc_id( error = fts_update_sync_doc_id(
table, cache->synced_doc_id, trx); table, cache->synced_doc_id, trx);
} }
...@@ -2848,7 +2848,7 @@ fts_doc_ids_create(void) ...@@ -2848,7 +2848,7 @@ fts_doc_ids_create(void)
fts_doc_ids->self_heap = ib_heap_allocator_create(heap); fts_doc_ids->self_heap = ib_heap_allocator_create(heap);
fts_doc_ids->doc_ids = static_cast<ib_vector_t*>(ib_vector_create( fts_doc_ids->doc_ids = static_cast<ib_vector_t*>(ib_vector_create(
fts_doc_ids->self_heap, sizeof(fts_update_t), 32)); fts_doc_ids->self_heap, sizeof(doc_id_t), 32));
return(fts_doc_ids); return(fts_doc_ids);
} }
...@@ -3943,7 +3943,7 @@ fts_sync_add_deleted_cache( ...@@ -3943,7 +3943,7 @@ fts_sync_add_deleted_cache(
ut_a(ib_vector_size(doc_ids) > 0); ut_a(ib_vector_size(doc_ids) > 0);
ib_vector_sort(doc_ids, fts_update_doc_id_cmp); ib_vector_sort(doc_ids, fts_doc_id_cmp);
info = pars_info_create(); info = pars_info_create();
...@@ -3961,13 +3961,13 @@ fts_sync_add_deleted_cache( ...@@ -3961,13 +3961,13 @@ fts_sync_add_deleted_cache(
"BEGIN INSERT INTO $table_name VALUES (:doc_id);"); "BEGIN INSERT INTO $table_name VALUES (:doc_id);");
for (i = 0; i < n_elems && error == DB_SUCCESS; ++i) { for (i = 0; i < n_elems && error == DB_SUCCESS; ++i) {
fts_update_t* update; doc_id_t* update;
doc_id_t write_doc_id; doc_id_t write_doc_id;
update = static_cast<fts_update_t*>(ib_vector_get(doc_ids, i)); update = static_cast<doc_id_t*>(ib_vector_get(doc_ids, i));
/* Convert to "storage" byte order. */ /* Convert to "storage" byte order. */
fts_write_doc_id((byte*) &write_doc_id, update->doc_id); fts_write_doc_id((byte*) &write_doc_id, *update);
fts_bind_doc_id(info, "doc_id", &write_doc_id); fts_bind_doc_id(info, "doc_id", &write_doc_id);
error = fts_eval_sql(sync->trx, graph); error = fts_eval_sql(sync->trx, graph);
...@@ -5292,12 +5292,12 @@ fts_cache_append_deleted_doc_ids( ...@@ -5292,12 +5292,12 @@ fts_cache_append_deleted_doc_ids(
for (ulint i = 0; i < ib_vector_size(cache->deleted_doc_ids); ++i) { for (ulint i = 0; i < ib_vector_size(cache->deleted_doc_ids); ++i) {
fts_update_t* update; doc_id_t* update;
update = static_cast<fts_update_t*>( update = static_cast<doc_id_t*>(
ib_vector_get(cache->deleted_doc_ids, i)); ib_vector_get(cache->deleted_doc_ids, i));
ib_vector_push(vector, &update->doc_id); ib_vector_push(vector, &update);
} }
mutex_exit((ib_mutex_t*) &cache->deleted_lock); mutex_exit((ib_mutex_t*) &cache->deleted_lock);
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 2007, 2018, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2007, 2018, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2016, 2019, MariaDB Corporation. Copyright (c) 2016, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software the terms of the GNU General Public License as published by the Free Software
...@@ -920,7 +920,7 @@ fts_fetch_doc_ids( ...@@ -920,7 +920,7 @@ fts_fetch_doc_ids(
int i = 0; int i = 0;
sel_node_t* sel_node = static_cast<sel_node_t*>(row); sel_node_t* sel_node = static_cast<sel_node_t*>(row);
fts_doc_ids_t* fts_doc_ids = static_cast<fts_doc_ids_t*>(user_arg); fts_doc_ids_t* fts_doc_ids = static_cast<fts_doc_ids_t*>(user_arg);
fts_update_t* update = static_cast<fts_update_t*>( doc_id_t* update = static_cast<doc_id_t*>(
ib_vector_push(fts_doc_ids->doc_ids, NULL)); ib_vector_push(fts_doc_ids->doc_ids, NULL));
for (exp = sel_node->select_list; for (exp = sel_node->select_list;
...@@ -936,8 +936,7 @@ fts_fetch_doc_ids( ...@@ -936,8 +936,7 @@ fts_fetch_doc_ids(
/* Note: The column numbers below must match the SELECT. */ /* Note: The column numbers below must match the SELECT. */
switch (i) { switch (i) {
case 0: /* DOC_ID */ case 0: /* DOC_ID */
update->fts_indexes = NULL; *update = fts_read_doc_id(
update->doc_id = fts_read_doc_id(
static_cast<byte*>(data)); static_cast<byte*>(data));
break; break;
...@@ -1005,7 +1004,7 @@ fts_table_fetch_doc_ids( ...@@ -1005,7 +1004,7 @@ fts_table_fetch_doc_ids(
mutex_exit(&dict_sys->mutex); mutex_exit(&dict_sys->mutex);
if (error == DB_SUCCESS) { if (error == DB_SUCCESS) {
ib_vector_sort(doc_ids->doc_ids, fts_update_doc_id_cmp); ib_vector_sort(doc_ids->doc_ids, fts_doc_id_cmp);
} }
if (alloc_bk_trx) { if (alloc_bk_trx) {
...@@ -1022,7 +1021,7 @@ Do a binary search for a doc id in the array ...@@ -1022,7 +1021,7 @@ Do a binary search for a doc id in the array
int int
fts_bsearch( fts_bsearch(
/*========*/ /*========*/
fts_update_t* array, /*!< in: array to sort */ doc_id_t* array, /*!< in: array to sort */
int lower, /*!< in: the array lower bound */ int lower, /*!< in: the array lower bound */
int upper, /*!< in: the array upper bound */ int upper, /*!< in: the array upper bound */
doc_id_t doc_id) /*!< in: the doc id to search for */ doc_id_t doc_id) /*!< in: the doc id to search for */
...@@ -1036,9 +1035,9 @@ fts_bsearch( ...@@ -1036,9 +1035,9 @@ fts_bsearch(
while (lower < upper) { while (lower < upper) {
int i = (lower + upper) >> 1; int i = (lower + upper) >> 1;
if (doc_id > array[i].doc_id) { if (doc_id > array[i]) {
lower = i + 1; lower = i + 1;
} else if (doc_id < array[i].doc_id) { } else if (doc_id < array[i]) {
upper = i - 1; upper = i - 1;
} else { } else {
return(i); /* Found. */ return(i); /* Found. */
...@@ -1047,7 +1046,7 @@ fts_bsearch( ...@@ -1047,7 +1046,7 @@ fts_bsearch(
} }
if (lower == upper && lower < orig_size) { if (lower == upper && lower < orig_size) {
if (doc_id == array[lower].doc_id) { if (doc_id == array[lower]) {
return(lower); return(lower);
} else if (lower == 0) { } else if (lower == 0) {
return(-1); return(-1);
...@@ -1074,7 +1073,7 @@ fts_optimize_lookup( ...@@ -1074,7 +1073,7 @@ fts_optimize_lookup(
{ {
int pos; int pos;
int upper = static_cast<int>(ib_vector_size(doc_ids)); int upper = static_cast<int>(ib_vector_size(doc_ids));
fts_update_t* array = (fts_update_t*) doc_ids->data; doc_id_t* array = (doc_id_t*) doc_ids->data;
pos = fts_bsearch(array, static_cast<int>(lower), upper, first_doc_id); pos = fts_bsearch(array, static_cast<int>(lower), upper, first_doc_id);
...@@ -1087,10 +1086,10 @@ fts_optimize_lookup( ...@@ -1087,10 +1086,10 @@ fts_optimize_lookup(
/* If i is 1, it could be first_doc_id is less than /* If i is 1, it could be first_doc_id is less than
either the first or second array item, do a either the first or second array item, do a
double check */ double check */
if (i == 1 && array[0].doc_id <= last_doc_id if (i == 1 && array[0] <= last_doc_id
&& first_doc_id < array[0].doc_id) { && first_doc_id < array[0]) {
pos = 0; pos = 0;
} else if (i < upper && array[i].doc_id <= last_doc_id) { } else if (i < upper && array[i] <= last_doc_id) {
/* Check if the "next" doc id is within the /* Check if the "next" doc id is within the
first & last doc id of the node. */ first & last doc id of the node. */
...@@ -1229,12 +1228,12 @@ fts_optimize_node( ...@@ -1229,12 +1228,12 @@ fts_optimize_node(
delta for decoding the entries following this document's delta for decoding the entries following this document's
entries. */ entries. */
if (*del_pos >= 0 && *del_pos < (int) ib_vector_size(del_vec)) { if (*del_pos >= 0 && *del_pos < (int) ib_vector_size(del_vec)) {
fts_update_t* update; doc_id_t* update;
update = (fts_update_t*) ib_vector_get( update = (doc_id_t*) ib_vector_get(
del_vec, *del_pos); del_vec, *del_pos);
del_doc_id = update->doc_id; del_doc_id = *update;
} }
if (enc->src_ilist_ptr == src_node->ilist && doc_id == 0) { if (enc->src_ilist_ptr == src_node->ilist && doc_id == 0) {
...@@ -2020,7 +2019,7 @@ fts_optimize_purge_deleted_doc_ids( ...@@ -2020,7 +2019,7 @@ fts_optimize_purge_deleted_doc_ids(
ulint i; ulint i;
pars_info_t* info; pars_info_t* info;
que_t* graph; que_t* graph;
fts_update_t* update; doc_id_t* update;
doc_id_t write_doc_id; doc_id_t write_doc_id;
dberr_t error = DB_SUCCESS; dberr_t error = DB_SUCCESS;
char deleted[MAX_FULL_NAME_LEN]; char deleted[MAX_FULL_NAME_LEN];
...@@ -2030,11 +2029,11 @@ fts_optimize_purge_deleted_doc_ids( ...@@ -2030,11 +2029,11 @@ fts_optimize_purge_deleted_doc_ids(
ut_a(ib_vector_size(optim->to_delete->doc_ids) > 0); ut_a(ib_vector_size(optim->to_delete->doc_ids) > 0);
update = static_cast<fts_update_t*>( update = static_cast<doc_id_t*>(
ib_vector_get(optim->to_delete->doc_ids, 0)); ib_vector_get(optim->to_delete->doc_ids, 0));
/* Convert to "storage" byte order. */ /* Convert to "storage" byte order. */
fts_write_doc_id((byte*) &write_doc_id, update->doc_id); fts_write_doc_id((byte*) &write_doc_id, *update);
/* This is required for the SQL parser to work. It must be able /* This is required for the SQL parser to work. It must be able
to find the following variables. So we do it twice. */ to find the following variables. So we do it twice. */
...@@ -2056,11 +2055,11 @@ fts_optimize_purge_deleted_doc_ids( ...@@ -2056,11 +2055,11 @@ fts_optimize_purge_deleted_doc_ids(
/* Delete the doc ids that were copied at the start. */ /* Delete the doc ids that were copied at the start. */
for (i = 0; i < ib_vector_size(optim->to_delete->doc_ids); ++i) { for (i = 0; i < ib_vector_size(optim->to_delete->doc_ids); ++i) {
update = static_cast<fts_update_t*>(ib_vector_get( update = static_cast<doc_id_t*>(ib_vector_get(
optim->to_delete->doc_ids, i)); optim->to_delete->doc_ids, i));
/* Convert to "storage" byte order. */ /* Convert to "storage" byte order. */
fts_write_doc_id((byte*) &write_doc_id, update->doc_id); fts_write_doc_id((byte*) &write_doc_id, *update);
fts_bind_doc_id(info, "doc_id1", &write_doc_id); fts_bind_doc_id(info, "doc_id1", &write_doc_id);
......
...@@ -730,10 +730,10 @@ fts_query_union_doc_id( ...@@ -730,10 +730,10 @@ fts_query_union_doc_id(
{ {
ib_rbt_bound_t parent; ib_rbt_bound_t parent;
ulint size = ib_vector_size(query->deleted->doc_ids); ulint size = ib_vector_size(query->deleted->doc_ids);
fts_update_t* array = (fts_update_t*) query->deleted->doc_ids->data; doc_id_t* updates = (doc_id_t*) query->deleted->doc_ids->data;
/* Check if the doc id is deleted and it's not already in our set. */ /* Check if the doc id is deleted and it's not already in our set. */
if (fts_bsearch(array, 0, static_cast<int>(size), doc_id) < 0 if (fts_bsearch(updates, 0, static_cast<int>(size), doc_id) < 0
&& rbt_search(query->doc_ids, &parent, &doc_id) != 0) { && rbt_search(query->doc_ids, &parent, &doc_id) != 0) {
fts_ranking_t ranking; fts_ranking_t ranking;
...@@ -761,10 +761,10 @@ fts_query_remove_doc_id( ...@@ -761,10 +761,10 @@ fts_query_remove_doc_id(
{ {
ib_rbt_bound_t parent; ib_rbt_bound_t parent;
ulint size = ib_vector_size(query->deleted->doc_ids); ulint size = ib_vector_size(query->deleted->doc_ids);
fts_update_t* array = (fts_update_t*) query->deleted->doc_ids->data; doc_id_t* updates = (doc_id_t*) query->deleted->doc_ids->data;
/* Check if the doc id is deleted and it's in our set. */ /* Check if the doc id is deleted and it's in our set. */
if (fts_bsearch(array, 0, static_cast<int>(size), doc_id) < 0 if (fts_bsearch(updates, 0, static_cast<int>(size), doc_id) < 0
&& rbt_search(query->doc_ids, &parent, &doc_id) == 0) { && rbt_search(query->doc_ids, &parent, &doc_id) == 0) {
ut_free(rbt_remove_node(query->doc_ids, parent.last)); ut_free(rbt_remove_node(query->doc_ids, parent.last));
...@@ -791,10 +791,10 @@ fts_query_change_ranking( ...@@ -791,10 +791,10 @@ fts_query_change_ranking(
{ {
ib_rbt_bound_t parent; ib_rbt_bound_t parent;
ulint size = ib_vector_size(query->deleted->doc_ids); ulint size = ib_vector_size(query->deleted->doc_ids);
fts_update_t* array = (fts_update_t*) query->deleted->doc_ids->data; doc_id_t* updates = (doc_id_t*) query->deleted->doc_ids->data;
/* Check if the doc id is deleted and it's in our set. */ /* Check if the doc id is deleted and it's in our set. */
if (fts_bsearch(array, 0, static_cast<int>(size), doc_id) < 0 if (fts_bsearch(updates, 0, static_cast<int>(size), doc_id) < 0
&& rbt_search(query->doc_ids, &parent, &doc_id) == 0) { && rbt_search(query->doc_ids, &parent, &doc_id) == 0) {
fts_ranking_t* ranking; fts_ranking_t* ranking;
...@@ -828,7 +828,7 @@ fts_query_intersect_doc_id( ...@@ -828,7 +828,7 @@ fts_query_intersect_doc_id(
{ {
ib_rbt_bound_t parent; ib_rbt_bound_t parent;
ulint size = ib_vector_size(query->deleted->doc_ids); ulint size = ib_vector_size(query->deleted->doc_ids);
fts_update_t* array = (fts_update_t*) query->deleted->doc_ids->data; doc_id_t* updates = (doc_id_t*) query->deleted->doc_ids->data;
fts_ranking_t* ranking= NULL; fts_ranking_t* ranking= NULL;
/* There are three types of intersect: /* There are three types of intersect:
...@@ -840,7 +840,7 @@ fts_query_intersect_doc_id( ...@@ -840,7 +840,7 @@ fts_query_intersect_doc_id(
if it matches 'b' and it's in doc_ids.(multi_exist = true). */ if it matches 'b' and it's in doc_ids.(multi_exist = true). */
/* Check if the doc id is deleted and it's in our set */ /* Check if the doc id is deleted and it's in our set */
if (fts_bsearch(array, 0, static_cast<int>(size), doc_id) < 0) { if (fts_bsearch(updates, 0, static_cast<int>(size), doc_id) < 0) {
fts_ranking_t new_ranking; fts_ranking_t new_ranking;
if (rbt_search(query->doc_ids, &parent, &doc_id) != 0) { if (rbt_search(query->doc_ids, &parent, &doc_id) != 0) {
...@@ -3649,8 +3649,8 @@ fts_query_prepare_result( ...@@ -3649,8 +3649,8 @@ fts_query_prepare_result(
if (query->flags == FTS_OPT_RANKING) { if (query->flags == FTS_OPT_RANKING) {
fts_word_freq_t* word_freq; fts_word_freq_t* word_freq;
ulint size = ib_vector_size(query->deleted->doc_ids); ulint size = ib_vector_size(query->deleted->doc_ids);
fts_update_t* array = doc_id_t* updates =
(fts_update_t*) query->deleted->doc_ids->data; (doc_id_t*) query->deleted->doc_ids->data;
node = rbt_first(query->word_freqs); node = rbt_first(query->word_freqs);
ut_ad(node); ut_ad(node);
...@@ -3665,7 +3665,7 @@ fts_query_prepare_result( ...@@ -3665,7 +3665,7 @@ fts_query_prepare_result(
doc_freq = rbt_value(fts_doc_freq_t, node); doc_freq = rbt_value(fts_doc_freq_t, node);
/* Don't put deleted docs into result */ /* Don't put deleted docs into result */
if (fts_bsearch(array, 0, static_cast<int>(size), if (fts_bsearch(updates, 0, static_cast<int>(size),
doc_freq->doc_id) >= 0) { doc_freq->doc_id) >= 0) {
/* one less matching doc count */ /* one less matching doc count */
--word_freq->doc_count; --word_freq->doc_count;
...@@ -4016,7 +4016,7 @@ fts_query( ...@@ -4016,7 +4016,7 @@ fts_query(
DEBUG_SYNC_C("fts_deleted_doc_ids_append"); DEBUG_SYNC_C("fts_deleted_doc_ids_append");
/* Sort the vector so that we can do a binary search over the ids. */ /* Sort the vector so that we can do a binary search over the ids. */
ib_vector_sort(query.deleted->doc_ids, fts_update_doc_id_cmp); ib_vector_sort(query.deleted->doc_ids, fts_doc_id_cmp);
/* Convert the query string to lower case before parsing. We own /* Convert the query string to lower case before parsing. We own
the ut_malloc'ed result and so remember to free it before return. */ the ut_malloc'ed result and so remember to free it before return. */
......
...@@ -239,7 +239,7 @@ Do a binary search for a doc id in the array ...@@ -239,7 +239,7 @@ Do a binary search for a doc id in the array
int int
fts_bsearch( fts_bsearch(
/*========*/ /*========*/
fts_update_t* array, /*!< in: array to sort */ doc_id_t* array, /*!< in: array to sort */
int lower, /*!< in: lower bound of array*/ int lower, /*!< in: lower bound of array*/
int upper, /*!< in: upper bound of array*/ int upper, /*!< in: upper bound of array*/
doc_id_t doc_id) /*!< in: doc id to lookup */ doc_id_t doc_id) /*!< in: doc id to lookup */
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, 2019, MariaDB Corporation. Copyright (c) 2017, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software the terms of the GNU General Public License as published by the Free Software
...@@ -80,20 +80,6 @@ struct fts_index_cache_t { ...@@ -80,20 +80,6 @@ struct fts_index_cache_t {
CHARSET_INFO* charset; /*!< charset */ CHARSET_INFO* charset; /*!< charset */
}; };
/** For supporting the tracking of updates on multiple FTS indexes we need
to track which FTS indexes need to be updated. For INSERT and DELETE we
update all fts indexes. */
struct fts_update_t {
doc_id_t doc_id; /*!< The doc id affected */
ib_vector_t* fts_indexes; /*!< The FTS indexes that need to be
updated. A NULL value means all
indexes need to be updated. This
vector is not allocated on the heap
and so must be freed explicitly,
when we are done with it */
};
/** Stop word control infotmation. */ /** Stop word control infotmation. */
struct fts_stopword_t { struct fts_stopword_t {
ulint status; /*!< Status of the stopword tree */ ulint status; /*!< Status of the stopword tree */
...@@ -319,10 +305,9 @@ fts_ranking_doc_id_cmp( ...@@ -319,10 +305,9 @@ fts_ranking_doc_id_cmp(
const void* p2); /*!< in: id2 */ const void* p2); /*!< in: id2 */
/******************************************************************//** /******************************************************************//**
Compare two fts_update_t instances doc_ids. */ Compare two doc_ids. */
UNIV_INLINE UNIV_INLINE
int int fts_doc_id_cmp(
fts_update_doc_id_cmp(
/*==================*/ /*==================*/
/*!< out: /*!< out:
< 0 if n1 < n2, < 0 if n1 < n2,
......
...@@ -79,19 +79,18 @@ fts_ranking_doc_id_cmp( ...@@ -79,19 +79,18 @@ fts_ranking_doc_id_cmp(
} }
/******************************************************************//** /******************************************************************//**
Compare two fts_update_t doc_ids. Compare two doc_ids.
@return < 0 if n1 < n2, 0 if n1 == n2, > 0 if n1 > n2 */ @return < 0 if n1 < n2, 0 if n1 == n2, > 0 if n1 > n2 */
UNIV_INLINE UNIV_INLINE
int int fts_doc_id_cmp(
fts_update_doc_id_cmp(
/*==================*/ /*==================*/
const void* p1, /*!< in: id1 */ const void* p1, /*!< in: id1 */
const void* p2) /*!< in: id2 */ const void* p2) /*!< in: id2 */
{ {
const fts_update_t* up1 = (const fts_update_t*) p1; const doc_id_t* up1 = static_cast<const doc_id_t*>(p1);
const fts_update_t* up2 = (const fts_update_t*) p2; const doc_id_t* up2 = static_cast<const doc_id_t*>(p2);
return((int)(up1->doc_id - up2->doc_id)); return static_cast<int>(*up1 - *up2);
} }
/******************************************************************//** /******************************************************************//**
......
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