mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Percona-Server-5.6.14-rel62.0 merge
support ha_innodb.so as a dynamic plugin. * remove obsolete *,innodb_plugin.rdiff files * s/--plugin-load=/--plugin-load-add=/ * MYSQL_PLUGIN_IMPORT glob_hostname[] * use my_error instead of push_warning_printf(ER_DEFAULT) * don't use tdc_size and tc_size in a module update test cases (XtraDB is 5.6.14, InnoDB is 5.6.10) * copy new tests over * disable some tests for (old) InnoDB * delete XtraDB tests that no longer apply small compatibility changes: * s/HTON_EXTENDED_KEYS/HTON_SUPPORTS_EXTENDED_KEYS/ * revert unnecessary InnoDB changes to make it a bit closer to the upstream fix XtraDB to compile on Windows (both as a static and a dynamic plugin) disable XtraDB on Windows (deadlocks) and where no atomic ops are available (e.g. CentOS 5) storage/innobase/handler/ha_innodb.cc: revert few unnecessary changes to make it a bit closer to the original InnoDB storage/innobase/include/univ.i: correct the version to match what it was merged from
This commit is contained in:
@ -9,6 +9,11 @@ let collation=UTF8_UNICODE_CI;
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
if (`select plugin_auth_version <= "5.6.10" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in InnoDB 5.6.10 or earlier
|
||||
}
|
||||
|
||||
# Create FTS table
|
||||
CREATE TABLE t1 (
|
||||
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
||||
@ -600,35 +605,18 @@ INSERT INTO t1 VALUES (1,'ペペペ'),(2,'テテテ'),(3,'ルルル'),(4,'ググ
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
# TODO: uncomment this when utf8_unicode_520_ci is merged
|
||||
#--echo "----------Test15---------"
|
||||
#CREATE TABLE t1 (s1 VARCHAR (60) CHARACTER SET UTF8 COLLATE UTF8_UNICODE_520_CI) ENGINE = MyISAM;
|
||||
#CREATE FULLTEXT INDEX i ON t1 (s1);
|
||||
#INSERT INTO t1 VALUES
|
||||
#('a'),('b'),('c'),('d'),('ŁŁŁŁ'),('LLLL'),(NULL),('ŁŁŁŁ ŁŁŁŁ'),('LLLLLLLL');
|
||||
#SELECT * FROM t1 WHERE MATCH(s1) AGAINST ('LLLL' COLLATE UTF8_UNICODE_520_CI);
|
||||
#DROP TABLE if EXISTS t2;
|
||||
#CREATE TABLE t2 (s1 VARCHAR(60) CHARACTER SET UTF8 COLLATE UTF8_POLISH_CI) ENGINE = InnoDB;
|
||||
#CREATE FULLTEXT INDEX i ON t2 ( s1);
|
||||
#INSERT INTO t2 VALUES
|
||||
#('a'),('b'),('c'),('d'),('ŁŁŁŁ'),('LLLL'),(NULL),('ŁŁŁŁ ŁŁŁŁ'),('LLLLLLLL');
|
||||
#SELECT * FROM t2 WHERE MATCH(s1) AGAINST ('LLLL' COLLATE UTF8_UNICODE_520_CI);
|
||||
#--disable_warnings
|
||||
#DROP TABLE t1,t2;
|
||||
#--enable_warnings
|
||||
|
||||
--echo "----------Test15a--------"
|
||||
CREATE TABLE t1 (s1 VARCHAR (60) CHARACTER SET UTF8 COLLATE UTF8_UNICODE_CI) ENGINE = MyISAM;
|
||||
--echo "----------Test15---------"
|
||||
CREATE TABLE t1 (s1 VARCHAR (60) CHARACTER SET UTF8 COLLATE UTF8_UNICODE_520_CI) ENGINE = MyISAM;
|
||||
CREATE FULLTEXT INDEX i ON t1 (s1);
|
||||
INSERT INTO t1 VALUES
|
||||
('a'),('b'),('c'),('d'),('ÓÓÓÓ'),('OOOO'),(NULL),('ÓÓÓÓ ÓÓÓÓ'),('OOOOOOOO');
|
||||
SELECT * FROM t1 WHERE MATCH(s1) AGAINST ('OOOO' COLLATE UTF8_UNICODE_CI);
|
||||
('a'),('b'),('c'),('d'),('ŁŁŁŁ'),('LLLL'),(NULL),('ŁŁŁŁ ŁŁŁŁ'),('LLLLLLLL');
|
||||
SELECT * FROM t1 WHERE MATCH(s1) AGAINST ('LLLL' COLLATE UTF8_UNICODE_520_CI);
|
||||
DROP TABLE if EXISTS t2;
|
||||
CREATE TABLE t2 (s1 VARCHAR(60) CHARACTER SET UTF8 COLLATE UTF8_POLISH_CI) ENGINE = InnoDB;
|
||||
CREATE FULLTEXT INDEX i ON t2 ( s1);
|
||||
INSERT INTO t2 VALUES
|
||||
('a'),('b'),('c'),('d'),('ÓÓÓÓ'),('OOOO'),(NULL),('ÓÓÓÓ ÓÓÓÓ'),('OOOOOOOO');
|
||||
SELECT * FROM t2 WHERE MATCH(s1) AGAINST ('OOOO' COLLATE UTF8_UNICODE_CI);
|
||||
('a'),('b'),('c'),('d'),('ŁŁŁŁ'),('LLLL'),(NULL),('ŁŁŁŁ ŁŁŁŁ'),('LLLLLLLL');
|
||||
SELECT * FROM t2 WHERE MATCH(s1) AGAINST ('LLLL' COLLATE UTF8_UNICODE_520_CI);
|
||||
--disable_warnings
|
||||
DROP TABLE t1,t2;
|
||||
--enable_warnings
|
||||
@ -1179,3 +1167,170 @@ DROP TABLE `A B`;
|
||||
CREATE TABLE `t-26`(a VARCHAR(10),FULLTEXT KEY(a)) ENGINE=INNODB;
|
||||
INSERT INTO `t-26` VALUES('117');
|
||||
DROP TABLE `t-26`;
|
||||
|
||||
# Test on phrase search with stopwords contained in the search string
|
||||
CREATE TABLE `t1` (
|
||||
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`content` TEXT NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
FULLTEXT INDEX `IDX_CONTEXT_FULLTEXT`(`content`)
|
||||
)
|
||||
ENGINE = InnoDB;
|
||||
|
||||
insert into t1 (content)
|
||||
values
|
||||
('This is a story which has has a complicated phrase structure here in the
|
||||
middle'),
|
||||
('This is a story which doesn''t have that text'),
|
||||
('This is a story that has complicated the phrase structure');
|
||||
|
||||
select * from t1
|
||||
where match(content) against('"complicated phrase structure"' in boolean
|
||||
mode);
|
||||
|
||||
# Test single phrase search with "+" symbol, one row should be returned
|
||||
select * from t1
|
||||
where match(content) against('+"complicated phrase structure"' in boolean
|
||||
mode);
|
||||
|
||||
# Test phrase search with stopwords in between, one row should be returned
|
||||
select * from t1
|
||||
where match(content) against('"complicated the phrase structure"' in boolean
|
||||
mode);
|
||||
|
||||
# Test phrase search with multiple "+" symbols
|
||||
select * from t1 where match(content) against('+"this is a story which" +"complicated the phrase structure"' in boolean mode);
|
||||
|
||||
# Test phrase search with leading word is a stopword, such stopword would be
|
||||
# ignored
|
||||
select * from t1 where match(content) against('"the complicated the phrase structure"' in boolean mode);
|
||||
|
||||
# Test phrase search with non-matching stopword in between, no row should be
|
||||
# returned
|
||||
select * from t1 where match(content) against('"complicated a phrase structure"' in boolean mode);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE my (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c VARCHAR(32), FULLTEXT(c)) ENGINE = INNODB;
|
||||
|
||||
INSERT INTO my (c) VALUES ('green-iguana');
|
||||
|
||||
SELECT * FROM my WHERE MATCH(c) AGAINST ('green-iguana');
|
||||
|
||||
DROP TABLE my;
|
||||
|
||||
CREATE TABLE ift (
|
||||
`a` int(11) NOT NULL,
|
||||
`b` text,
|
||||
PRIMARY KEY (`a`),
|
||||
FULLTEXT KEY `b` (`b`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
INSERT INTO ift values (1, "skip");
|
||||
INSERT INTO ift values (2, "skip and networking");
|
||||
INSERT INTO ift values (3, "--skip-networking");
|
||||
INSERT INTO ift values (4, "-donot--skip-networking");
|
||||
|
||||
SELECT * FROM ift WHERE MATCH (b) AGAINST ('--skip-networking');
|
||||
SELECT * FROM ift WHERE MATCH (b) AGAINST ('skip-networking');
|
||||
SELECT * FROM ift WHERE MATCH (b) AGAINST ('----');
|
||||
SELECT * FROM ift WHERE MATCH (b) AGAINST ('-donot--skip-networking');
|
||||
|
||||
DROP TABLE ift;
|
||||
|
||||
# Test special cases of wildword.
|
||||
# Create FTS table
|
||||
CREATE TABLE articles (
|
||||
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
||||
title VARCHAR(200),
|
||||
body TEXT,
|
||||
FULLTEXT (title,body)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
# Insert six rows
|
||||
INSERT INTO articles (title,body) VALUES
|
||||
('MySQL Tutorial','DBMS stands for DataBase ...') ,
|
||||
('How To Use MySQL Well','After you went through a ...'),
|
||||
('Optimizing MySQL','In this tutorial we will show ...'),
|
||||
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
|
||||
('MySQL vs. YourSQL','In the following database comparison ...'),
|
||||
('( that''s me )','When configured properly, MySQL ...');
|
||||
|
||||
SELECT * FROM articles WHERE MATCH (title,body)
|
||||
AGAINST ('( yours''s* )' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM articles WHERE MATCH (title,body)
|
||||
AGAINST ('s*' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM articles WHERE MATCH (title,body)
|
||||
AGAINST ('stands\'] | * | show[@database' IN NATURAL LANGUAGE MODE);
|
||||
|
||||
DROP TABLE articles;
|
||||
|
||||
# Test for BUG#16429688 - FTS: SYNTAX ERROR, UNEXPECTED '*', EXPECTING $END
|
||||
CREATE TABLE t1(a TEXT CHARACTER SET LATIN1, FULLTEXT INDEX(a)) ENGINE=INNODB;
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
SELECT * FROM t1 WHERE MATCH(a) AGAINST("*");
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# Test for BUG#16516193 - LITERAL PHRASES CANNOT BE COMBINED WITH + OR - OPERATOR
|
||||
# Create FTS table
|
||||
CREATE TABLE t1 (
|
||||
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
||||
a VARCHAR(200),
|
||||
FULLTEXT (a)
|
||||
) ENGINE= InnoDB;
|
||||
|
||||
# Insert rows
|
||||
INSERT INTO t1 (a) VALUES
|
||||
('Do you know MySQL is a good database'),
|
||||
('How to build a good database'),
|
||||
('Do you know'),
|
||||
('Do you know MySQL'),
|
||||
('How to use MySQL'),
|
||||
('Do you feel good'),
|
||||
('MySQL is good'),
|
||||
('MySQL is good to know'),
|
||||
('What is database');
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+"know mysql"' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+("know mysql")' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('("know mysql" good)' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+("know mysql" good)' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('(good "know mysql")' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+(good "know mysql")' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+("know mysql" "good database")' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+"know mysql" +"good database"' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+"know database"@4' IN BOOLEAN MODE);
|
||||
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+"know database"@8' IN BOOLEAN MODE);
|
||||
|
||||
# Drop table
|
||||
DROP TABLE t1;
|
||||
|
||||
# Test for BUG#16885178 - INNODB FULLTEXT PHRASE SEARCH VALGRIND ERROR
|
||||
CREATE TABLE t1 (
|
||||
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
||||
a VARCHAR(200),
|
||||
FULLTEXT (a)
|
||||
) ENGINE= InnoDB;
|
||||
|
||||
# Insert a special row
|
||||
INSERT INTO t1 (a) VALUES
|
||||
('know mysql good database');
|
||||
|
||||
# This phrase search fails in valgrind test before the fix.
|
||||
SELECT * FROM t1 WHERE MATCH (a) AGAINST ('+"good database"' IN BOOLEAN MODE);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
Reference in New Issue
Block a user