Skip to content

Commit 29e7290

Browse files
Merge branch 'mysql-5.7' into mysql-8.0
2 parents 86baf1e + f51051a commit 29e7290

File tree

3 files changed

+66
-2
lines changed

3 files changed

+66
-2
lines changed

mysql-test/suite/innodb_fts/r/sync.result

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@ SET DEBUG_SYNC= 'now WAIT_FOR written';
1313
SET GLOBAL innodb_ft_aux_table="test/t1";
1414
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
1515
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
16+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
17+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
1618
database 2 3 2 2 0
1719
database 2 3 2 3 6
1820
mysql 1 3 2 1 0
1921
mysql 1 3 2 3 0
20-
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
21-
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
2222
SET GLOBAL innodb_ft_aux_table=default;
2323
SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database');
2424
FTS_DOC_ID title
25+
3 mysql database
2526
1 mysql
2627
2 database
2728
SET DEBUG_SYNC= 'now SIGNAL selected';
@@ -132,3 +133,32 @@ id title
132133
2 database
133134
3 good
134135
DROP TABLE t1;
136+
#
137+
# Bug #31310404 I_S_FTS_INDEX_CACHE_FILL_ONE_INDEX() IS NOT PROTECTED BY THE LOCK
138+
#
139+
CREATE TABLE t1 (
140+
FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
141+
title VARCHAR(200),
142+
FULLTEXT(title)
143+
) ENGINE = InnoDB;
144+
INSERT INTO t1(title) VALUES('mysql');
145+
INSERT INTO t1(title) VALUES('database');
146+
SET SESSION debug="+d,fts_instrument_sync_request";
147+
INSERT INTO t1(title) VALUES('mysql database');
148+
SET SESSION debug="-d,fts_instrument_sync_request";
149+
SET GLOBAL innodb_ft_aux_table="test/t1";
150+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
151+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
152+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
153+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
154+
database 2 3 2 2 0
155+
database 2 3 2 3 6
156+
mysql 1 3 2 1 0
157+
mysql 1 3 2 3 0
158+
SET GLOBAL innodb_ft_aux_table=default;
159+
SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database');
160+
FTS_DOC_ID title
161+
3 mysql database
162+
1 mysql
163+
2 database
164+
DROP TABLE t1;

mysql-test/suite/innodb_fts/t/sync.test

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,31 @@ SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database good');
168168
DROP TABLE t1;
169169

170170
--source include/wait_until_count_sessions.inc
171+
172+
--echo #
173+
--echo # Bug #31310404 I_S_FTS_INDEX_CACHE_FILL_ONE_INDEX() IS NOT PROTECTED BY THE LOCK
174+
--echo #
175+
176+
CREATE TABLE t1 (
177+
FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
178+
title VARCHAR(200),
179+
FULLTEXT(title)
180+
) ENGINE = InnoDB;
181+
182+
INSERT INTO t1(title) VALUES('mysql');
183+
INSERT INTO t1(title) VALUES('database');
184+
185+
SET SESSION debug="+d,fts_instrument_sync_request";
186+
INSERT INTO t1(title) VALUES('mysql database');
187+
SET SESSION debug="-d,fts_instrument_sync_request";
188+
189+
SET GLOBAL innodb_ft_aux_table="test/t1";
190+
191+
# If FTS SYNC is in progress then wait for SYNC to finish.
192+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
193+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
194+
SET GLOBAL innodb_ft_aux_table=default;
195+
196+
SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database');
197+
198+
DROP TABLE t1;

storage/innobase/handler/i_s.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2672,6 +2672,12 @@ static int i_s_fts_index_cache_fill(
26722672

26732673
ut_a(cache);
26742674

2675+
/* Check if cache is being synced.
2676+
Note: we wait till cache is being synced. */
2677+
while (cache->sync->in_progress) {
2678+
os_event_wait(cache->sync->event);
2679+
}
2680+
26752681
for (ulint i = 0; i < ib_vector_size(cache->indexes); i++) {
26762682
fts_index_cache_t *index_cache;
26772683

0 commit comments

Comments
 (0)