• Sachin Agarwal's avatar
    Bug #31228694 FTS QUERY WITH LIMIT HIT AN ASSERT · 1ff8588c
    Sachin Agarwal authored
    Problem:
    1. The server terminates abnormally when phrase search doesn't
    filter out doc_ids correctly. This problem has been fixed in bug
    2. Wrong query result: It's a regression from the bug #22709692 fix.
    This fix optimize full-text search query with limit clause.
    when FTS expression involves only union operation, we fetch only
    number of doc_ids specified with the limit clause.
    Fulltext phrase search is not an union operation and we consider
    phrase search with plugin parser a union operation.
    In phrase search with limit clause, we fetch limited doc_ids for
    each token and if any of the selected doc_id does not contain all
    tokens in correct order then we do not include that row_id in the
    result set.
    Therefore phrase search gets fewer number of rows than the qualified
    rows exist in the table.
    
    Fix:
    Added a condition that phrase search with plugin parser is not a
    union operation.
    
    RB: 24925
    Reviewed by : Annamalai Gurusami <annamalai.gurusami@oracle.com>
    
    This is a cherry-pick of
    mysql/mysql-server@5549920b7a33ef33034461d973a9ecb17ce49799
    without a test case, because the test case depends on an n-gram
    tokenizer that will be missing from MariaDB until MDEV-10267 is added.
    1ff8588c
fts0ast.cc 20.1 KB