diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2022-08-04 16:58:42 +0200 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2022-08-04 16:58:42 +0200 |
commit | ee620a7416ac1719de322f16593fe403f5c43833 (patch) | |
tree | e8eb1e37d02d2b4aa29942b7732f3e3e9d5367da /storage/innobase/fts | |
parent | 558f1eff64e7708b594ef0315e23bdeb1d23ccf7 (diff) | |
parent | 3b071bad1981a12e76769cbfc31b62fbd7362372 (diff) | |
download | mariadb-git-ee620a7416ac1719de322f16593fe403f5c43833.tar.gz |
Merge branch '10.5' into 10.6
Diffstat (limited to 'storage/innobase/fts')
-rw-r--r-- | storage/innobase/fts/fts0que.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/storage/innobase/fts/fts0que.cc b/storage/innobase/fts/fts0que.cc index 2b9fbcfb569..4407224a24d 100644 --- a/storage/innobase/fts/fts0que.cc +++ b/storage/innobase/fts/fts0que.cc @@ -1203,6 +1203,14 @@ fts_query_difference( return(query->error); } +/* Free the query intersection +@param query query instance */ +static void fts_query_free_intersection(fts_query_t* query) +{ + fts_query_free_doc_ids(query, query->intersection); + query->intersection = NULL; +} + /*****************************************************************//** Intersect the token doc ids with the current set. @return DB_SUCCESS if all go well */ @@ -1301,6 +1309,7 @@ fts_query_intersect( /* error is passed by 'query->error' */ if (query->error != DB_SUCCESS) { ut_ad(query->error == DB_FTS_EXCEED_RESULT_CACHE_LIMIT); + fts_query_free_intersection(query); return(query->error); } @@ -1329,6 +1338,8 @@ fts_query_intersect( ut_a(!query->multi_exist || (query->multi_exist && rbt_size(query->doc_ids) <= n_doc_ids)); + } else if (query->intersection) { + fts_query_free_intersection(query); } } @@ -1547,6 +1558,10 @@ fts_merge_doc_ids( query, ranking->doc_id, ranking->rank); if (query->error != DB_SUCCESS) { + if (query->intersection) { + ut_a(query->oper == FTS_EXIST); + fts_query_free_intersection(query); + } DBUG_RETURN(query->error); } |