mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
MDEV-29778 Having Unique index interference with MATCH from a FULLTEXT
InnoDB fails to fetch FTS_DOC_ID if the select query uses secondary index. So always do extra lookup on clustered index in case of fts query
This commit is contained in:
committed by
Marko Mäkelä
parent
e11661a4a2
commit
e1414fc7e3
@@ -774,4 +774,15 @@ UNLOCK TABLES;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
ALTER TABLE t2 IMPORT TABLESPACE;
|
||||
DROP TABLE t2, t1;
|
||||
#
|
||||
# MDEV-29778 Having Unique index interference with MATCH
|
||||
# from a FULLTEXT
|
||||
#
|
||||
CREATE TABLE t1(f1 VARCHAR(100), FULLTEXT(f1),
|
||||
UNIQUE INDEX(f1))ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES("test");
|
||||
SELECT f1, MATCH(f1) AGAINST ("test" IN BOOLEAN MODE) FROM t1;
|
||||
f1 MATCH(f1) AGAINST ("test" IN BOOLEAN MODE)
|
||||
test 0.000000001885928302414186
|
||||
DROP TABLE t1;
|
||||
# End of 10.3 tests
|
||||
|
@@ -790,4 +790,14 @@ ALTER TABLE t2 IMPORT TABLESPACE;
|
||||
--enable_warnings
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-29778 Having Unique index interference with MATCH
|
||||
--echo # from a FULLTEXT
|
||||
--echo #
|
||||
CREATE TABLE t1(f1 VARCHAR(100), FULLTEXT(f1),
|
||||
UNIQUE INDEX(f1))ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES("test");
|
||||
SELECT f1, MATCH(f1) AGAINST ("test" IN BOOLEAN MODE) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # End of 10.3 tests
|
||||
|
@@ -7703,6 +7703,11 @@ ha_innobase::build_template(
|
||||
m_prebuilt->versioned_write = table->versioned_write(VERS_TRX_ID);
|
||||
m_prebuilt->need_to_access_clustered = (index == clust_index);
|
||||
|
||||
if (m_prebuilt->in_fts_query) {
|
||||
/* Do clustered index lookup to fetch the FTS_DOC_ID */
|
||||
m_prebuilt->need_to_access_clustered = true;
|
||||
}
|
||||
|
||||
/* Either m_prebuilt->index should be a secondary index, or it
|
||||
should be the clustered index. */
|
||||
ut_ad(dict_index_is_clust(index) == (index == clust_index));
|
||||
|
Reference in New Issue
Block a user