-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding Full Text Search support to partitions
Contains Spiral patches: 007_mariadb-10.2.0.partition_fulltext.diff MDEV-7705 038_mariadb-10.2.0.partition_fulltext2.diff MDEV-7734 This commit has the following differences compared to the original patches: - Added necessary full text search cleanup at the storage engine layer that was omitted in the original patch. - Added test case. - A lot of code cleanups to make the code notable smaller. - Changed SQL code to use ha_ft_end() instead of ft_end() Original author: Kentoku SHIBA First reviewer: Jacob Mathew Second reviewer: Michael Widenius
- Loading branch information
Showing
8 changed files
with
942 additions
and
20 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
23 changes: 23 additions & 0 deletions
23
storage/spider/mysql-test/spider/include/partition_fulltext_deinit.inc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP | ||
--let $MASTER_1_COMMENT_2_2= $MASTER_1_COMMENT_2_2_BACKUP | ||
--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP | ||
--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP | ||
--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP | ||
--let $CHILD2_2_DROP_TABLES= $CHILD2_2_DROP_TABLES_BACKUP | ||
--let $CHILD2_2_CREATE_TABLES= $CHILD2_2_CREATE_TABLES_BACKUP | ||
--let $CHILD2_2_SELECT_TABLES= $CHILD2_2_SELECT_TABLES_BACKUP | ||
--let $CHILD2_3_DROP_TABLES= $CHILD2_3_DROP_TABLES_BACKUP | ||
--let $CHILD2_3_CREATE_TABLES= $CHILD2_3_CREATE_TABLES_BACKUP | ||
--let $CHILD2_3_SELECT_TABLES= $CHILD2_3_SELECT_TABLES_BACKUP | ||
--let $OUTPUT_CHILD_GROUP2= $OUTPUT_CHILD_GROUP2_BACKUP | ||
--let $USE_GENERAL_LOG= $USE_GENERAL_LOG_BACKUP | ||
--connection master_1 | ||
set session join_cache_level= @old_join_cache_level; | ||
set session optimizer_switch= @old_optimizer_switch; | ||
--disable_warnings | ||
--disable_query_log | ||
--disable_result_log | ||
--source ../t/test_deinit.inc | ||
--enable_result_log | ||
--enable_query_log | ||
--enable_warnings |
72 changes: 72 additions & 0 deletions
72
storage/spider/mysql-test/spider/include/partition_fulltext_init.inc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
--disable_warnings | ||
--disable_query_log | ||
--disable_result_log | ||
--source ../t/test_init.inc | ||
--enable_result_log | ||
--enable_query_log | ||
--enable_warnings | ||
--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1 | ||
let $MASTER_1_COMMENT_2_1= | ||
COMMENT='table "tbl_a", bka_mode "1"' | ||
PARTITION BY KEY(pkey) ( | ||
PARTITION pt1 COMMENT='srv "s_2_1"', | ||
PARTITION pt2 COMMENT='srv "s_2_2"', | ||
PARTITION pt3 COMMENT='srv "s_2_3"' | ||
); | ||
--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES | ||
let $CHILD2_1_DROP_TABLES= | ||
DROP TABLE IF EXISTS tbl_a; | ||
--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES | ||
let $CHILD2_1_CREATE_TABLES= | ||
CREATE TABLE tbl_a ( | ||
pkey int NOT NULL, | ||
words text NOT NULL, | ||
PRIMARY KEY (pkey), | ||
FULLTEXT (words) | ||
) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; | ||
--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES | ||
let $CHILD2_1_SELECT_TABLES= | ||
SELECT pkey FROM tbl_a ORDER BY pkey; | ||
let $CHILD2_1_SELECT_ARGUMENT1= | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; | ||
--let $CHILD2_2_DROP_TABLES_BACKUP= $CHILD2_2_DROP_TABLES | ||
let $CHILD2_2_DROP_TABLES= | ||
DROP TABLE IF EXISTS tbl_a; | ||
--let $CHILD2_2_CREATE_TABLES_BACKUP= $CHILD2_2_CREATE_TABLES | ||
let $CHILD2_2_CREATE_TABLES= | ||
CREATE TABLE tbl_a ( | ||
pkey int NOT NULL, | ||
words text NOT NULL, | ||
PRIMARY KEY (pkey), | ||
FULLTEXT (words) | ||
) $CHILD2_2_ENGINE $CHILD2_2_CHARSET; | ||
--let $CHILD2_2_SELECT_TABLES_BACKUP= $CHILD2_2_SELECT_TABLES | ||
let $CHILD2_2_SELECT_TABLES= | ||
SELECT pkey FROM tbl_a ORDER BY pkey; | ||
let $CHILD2_2_SELECT_ARGUMENT1= | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; | ||
--let $CHILD2_3_DROP_TABLES_BACKUP= $CHILD2_3_DROP_TABLES | ||
let $CHILD2_3_DROP_TABLES= | ||
DROP TABLE IF EXISTS tbl_a; | ||
--let $CHILD2_3_CREATE_TABLES_BACKUP= $CHILD2_3_CREATE_TABLES | ||
let $CHILD2_3_CREATE_TABLES= | ||
CREATE TABLE tbl_a ( | ||
pkey int NOT NULL, | ||
words text NOT NULL, | ||
PRIMARY KEY (pkey), | ||
FULLTEXT (words) | ||
) $CHILD2_3_ENGINE $CHILD2_3_CHARSET; | ||
--let $CHILD2_3_SELECT_TABLES_BACKUP= $CHILD2_3_SELECT_TABLES | ||
let $CHILD2_3_SELECT_TABLES= | ||
SELECT pkey FROM tbl_a ORDER BY pkey; | ||
let $CHILD2_3_SELECT_ARGUMENT1= | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; | ||
--let $OUTPUT_CHILD_GROUP2_BACKUP= $OUTPUT_CHILD_GROUP2 | ||
--let $OUTPUT_CHILD_GROUP2= 1 | ||
--let $USE_GENERAL_LOG_BACKUP= $USE_GENERAL_LOG | ||
--let $USE_GENERAL_LOG= 1 | ||
--connection master_1 | ||
set @old_join_cache_level= @@join_cache_level; | ||
set session join_cache_level= 5; | ||
set @old_optimizer_switch= @@optimizer_switch; | ||
set session optimizer_switch= 'mrr=on'; |
126 changes: 126 additions & 0 deletions
126
storage/spider/mysql-test/spider/r/partition_fulltext.result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
for master_1 | ||
for child2 | ||
child2_1 | ||
child2_2 | ||
child2_3 | ||
for child3 | ||
child3_1 | ||
child3_2 | ||
child3_3 | ||
connection master_1; | ||
set @old_join_cache_level= @@join_cache_level; | ||
set session join_cache_level= 5; | ||
set @old_optimizer_switch= @@optimizer_switch; | ||
set session optimizer_switch= 'mrr=on'; | ||
|
||
drop and create databases | ||
connection master_1; | ||
DROP DATABASE IF EXISTS auto_test_local; | ||
CREATE DATABASE auto_test_local; | ||
USE auto_test_local; | ||
connection child2_1; | ||
SET @old_log_output = @@global.log_output; | ||
SET GLOBAL log_output = 'TABLE,FILE'; | ||
DROP DATABASE IF EXISTS auto_test_remote; | ||
CREATE DATABASE auto_test_remote; | ||
USE auto_test_remote; | ||
connection child2_2; | ||
SET @old_log_output = @@global.log_output; | ||
SET GLOBAL log_output = 'TABLE,FILE'; | ||
DROP DATABASE IF EXISTS auto_test_remote2; | ||
CREATE DATABASE auto_test_remote2; | ||
USE auto_test_remote2; | ||
connection child2_3; | ||
SET @old_log_output = @@global.log_output; | ||
SET GLOBAL log_output = 'TABLE,FILE'; | ||
DROP DATABASE IF EXISTS auto_test_remote3; | ||
CREATE DATABASE auto_test_remote3; | ||
USE auto_test_remote3; | ||
|
||
create table and insert | ||
connection child2_1; | ||
CHILD2_1_DROP_TABLES | ||
CHILD2_1_CREATE_TABLES | ||
TRUNCATE TABLE mysql.general_log; | ||
connection child2_2; | ||
CHILD2_2_DROP_TABLES | ||
CHILD2_2_CREATE_TABLES | ||
TRUNCATE TABLE mysql.general_log; | ||
connection child2_3; | ||
CHILD2_3_DROP_TABLES | ||
CHILD2_3_CREATE_TABLES | ||
TRUNCATE TABLE mysql.general_log; | ||
connection master_1; | ||
DROP TABLE IF EXISTS tbl_a; | ||
DROP TABLE IF EXISTS tbl_b; | ||
CREATE TABLE tbl_a ( | ||
pkey int NOT NULL, | ||
words text NOT NULL, | ||
PRIMARY KEY (pkey), | ||
FULLTEXT (words) | ||
) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1 | ||
INSERT INTO tbl_a (pkey, words) VALUES (0, 'abc'),(1, 'def'),(2, 'ghi'),(3, 'jkl'),(4, 'mno'),(5, 'pqr'),(6, 'stu'),(7, 'vwx'); | ||
|
||
select test | ||
connection child2_1; | ||
TRUNCATE TABLE mysql.general_log; | ||
connection master_1; | ||
SELECT pkey, words FROM tbl_a WHERE match(words) against('+ghi' in boolean mode); | ||
pkey words | ||
2 ghi | ||
connection child2_1; | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; | ||
argument | ||
select match(`words`)against('+ghi' in boolean mode),`pkey`,`words` from `auto_test_remote`.`tbl_a` where match(`words`)against('+ghi' in boolean mode) and (match(`words`)against('+ghi' in boolean mode)) | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' | ||
SELECT pkey FROM tbl_a ORDER BY pkey; | ||
pkey | ||
4 | ||
5 | ||
connection child2_2; | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; | ||
argument | ||
select match(`words`)against('+ghi' in boolean mode),`pkey`,`words` from `auto_test_remote2`.`tbl_a` where match(`words`)against('+ghi' in boolean mode) and (match(`words`)against('+ghi' in boolean mode)) | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' | ||
SELECT pkey FROM tbl_a ORDER BY pkey; | ||
pkey | ||
0 | ||
1 | ||
6 | ||
7 | ||
connection child2_3; | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; | ||
argument | ||
select match(`words`)against('+ghi' in boolean mode),`pkey`,`words` from `auto_test_remote3`.`tbl_a` where match(`words`)against('+ghi' in boolean mode) and (match(`words`)against('+ghi' in boolean mode)) | ||
SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' | ||
SELECT pkey FROM tbl_a ORDER BY pkey; | ||
pkey | ||
2 | ||
3 | ||
|
||
deinit | ||
connection master_1; | ||
DROP DATABASE IF EXISTS auto_test_local; | ||
connection child2_1; | ||
DROP DATABASE IF EXISTS auto_test_remote; | ||
SET GLOBAL log_output = @old_log_output; | ||
connection child2_2; | ||
DROP DATABASE IF EXISTS auto_test_remote2; | ||
SET GLOBAL log_output = @old_log_output; | ||
connection child2_3; | ||
DROP DATABASE IF EXISTS auto_test_remote3; | ||
SET GLOBAL log_output = @old_log_output; | ||
connection master_1; | ||
set session join_cache_level= @old_join_cache_level; | ||
set session optimizer_switch= @old_optimizer_switch; | ||
for master_1 | ||
for child2 | ||
child2_1 | ||
child2_2 | ||
child2_3 | ||
for child3 | ||
child3_1 | ||
child3_2 | ||
child3_3 | ||
|
||
end of test |
Oops, something went wrong.