polardbxengine/mysql-test/suite/innodb_fts/t/ngram_2.test

148 lines
4.3 KiB
Plaintext

#
# InnoDB FULLTEXT SEARCH: CJK support - ngram parser
#
#
#Test 3 scenarios:
#1. CREATE a CJK fulltext index with ngram parser when ngram parser is loaded,
# restart without ngram parser, do SELECT/INSERT;
#2. CREATE a CJK fulltext index with ngram parser when ngram parser is not loaded.
#3. CREATE a CJK fulltext index without ngram parser when ngram parser is not loaded.
SET NAMES utf8mb4;
# t1 with default parser
CREATE TABLE t1 (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
content TEXT,
FULLTEXT INDEX ft_content (content)
) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
INSERT INTO t1 (title, content) VALUES ('中国', '中国'), ('中国上海', '中国上海');
ALTER TABLE t1 ADD FULLTEXT INDEX ft_title (title);
SHOW CREATE TABLE t1;
SELECT * FROM t1 WHERE MATCH(title) AGAINST('中国') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(title) AGAINST('中国上海') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(content) AGAINST('中国') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(content) AGAINST('中国上海') ORDER BY id;
DROP TABLE t1;
# t1 with ngram parser
CREATE TABLE t1 (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
content TEXT,
FULLTEXT INDEX ft_content (content) WITH PARSER ngram
) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
INSERT INTO t1 (title, content) VALUES ('中国', '中国'), ('中国上海', '中国上海');
ALTER TABLE t1 ADD FULLTEXT INDEX ft_title (title) WITH PARSER ngram;
SHOW CREATE TABLE t1;
SELECT * FROM t1 WHERE MATCH(title) AGAINST('中国') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(title) AGAINST('中国上海') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(content) AGAINST('中国') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(content) AGAINST('中国上海') ORDER BY id;
# t2 with ngram parser
CREATE TABLE t2 (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
content TEXT,
FULLTEXT INDEX ft_content (content) WITH PARSER ngram
) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
ALTER TABLE t2 ADD FULLTEXT INDEX ft_title (title) WITH PARSER ngram;
# Restart without ngram.
let $restart_parameters = restart: --ngram=OFF;
--source include/restart_mysqld.inc
# t1
CHECK TABLE t1;
--error ER_PLUGIN_IS_NOT_LOADED
SELECT * FROM t1;
--error ER_PLUGIN_IS_NOT_LOADED
SELECT * FROM t1 WHERE MATCH(title) AGAINST('中国');
--error ER_PLUGIN_IS_NOT_LOADED
SELECT * FROM t1 WHERE MATCH(title) AGAINST('中国上海');
--error ER_PLUGIN_IS_NOT_LOADED
SELECT * FROM t1 WHERE MATCH(content) AGAINST('中国');
--error ER_PLUGIN_IS_NOT_LOADED
SELECT * FROM t1 WHERE MATCH(content) AGAINST('中国上海');
--error ER_PLUGIN_IS_NOT_LOADED
INSERT INTO t1 (title, content) VALUES ('中国', '中国');
--error ER_PLUGIN_IS_NOT_LOADED
DROP INDEX ft_title ON t1;
--error ER_PLUGIN_IS_NOT_LOADED
DROP INDEX ft_content ON t1;
--error ER_PLUGIN_IS_NOT_LOADED
TRUNCATE TABLE t1;
--error ER_PLUGIN_IS_NOT_LOADED
ALTER TABLE t1 RENAME TO t3;
# t2
RENAME TABLE t2 to t3;
DROP TABLE t3;
--error ER_FUNCTION_NOT_DEFINED
CREATE TABLE t2 (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
FULLTEXT INDEX ft_title (title) WITH PARSER ngram
) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
CREATE TABLE t2 (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200)
) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
--error ER_FUNCTION_NOT_DEFINED
ALTER TABLE t2 ADD FULLTEXT INDEX ft_title (title) WITH PARSER ngram;
ALTER TABLE t2 ADD FULLTEXT INDEX ft_title (title);
INSERT INTO t2 (title) VALUES ('中国');
SELECT * FROM t2 WHERE MATCH(title) AGAINST('中国') ORDER BY id;
SELECT * FROM t2 WHERE MATCH(title) AGAINST('中国上海') ORDER BY id;
DROP TABLE t2;
# Restart with ngram.
let $restart_parameters = restart;
--source include/restart_mysqld.inc
CHECK TABLE t1;
SELECT * FROM t1;
SELECT * FROM t1 WHERE MATCH(title) AGAINST('中国') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(title) AGAINST('中国上海') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(content) AGAINST('中国') ORDER BY id;
SELECT * FROM t1 WHERE MATCH(content) AGAINST('中国上海') ORDER BY id;
DROP TABLE t1;