Merge chilla.local:/home/mydev/mysql-5.1-ateam
into chilla.local:/home/mydev/mysql-5.1-bug28810
This commit is contained in:
commit
08510d6903
@ -476,16 +476,15 @@ ALTER TABLE t1 DISABLE KEYS;
|
|||||||
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
|
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
|
||||||
ERROR HY000: Can't find FULLTEXT index matching the column list
|
ERROR HY000: Can't find FULLTEXT index matching the column list
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1(a VARCHAR(2) CHARACTER SET big5 COLLATE big5_chinese_ci,
|
|
||||||
FULLTEXT(a));
|
|
||||||
INSERT INTO t1 VALUES(0xA3C2);
|
|
||||||
DROP TABLE t1;
|
|
||||||
CREATE TABLE t1(a VARCHAR(20), FULLTEXT(a));
|
CREATE TABLE t1(a VARCHAR(20), FULLTEXT(a));
|
||||||
INSERT INTO t1 VALUES('Offside'),('City Of God');
|
INSERT INTO t1 VALUES('Offside'),('City Of God');
|
||||||
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city of*' IN BOOLEAN MODE);
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city of*' IN BOOLEAN MODE);
|
||||||
a
|
a
|
||||||
City Of God
|
City Of God
|
||||||
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city (of)*' IN BOOLEAN MODE);
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city (of*)' IN BOOLEAN MODE);
|
||||||
|
a
|
||||||
|
City Of God
|
||||||
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city* of*' IN BOOLEAN MODE);
|
||||||
a
|
a
|
||||||
City Of God
|
City Of God
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@ -11,3 +11,7 @@ Table Op Msg_type Msg_text
|
|||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(a VARCHAR(2) CHARACTER SET big5 COLLATE big5_chinese_ci,
|
||||||
|
FULLTEXT(a));
|
||||||
|
INSERT INTO t1 VALUES(0xA3C2);
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -399,22 +399,14 @@ ALTER TABLE t1 DISABLE KEYS;
|
|||||||
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
|
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
|
||||||
# BUG#29464 - load data infile into table with big5 chinese fulltext index
|
|
||||||
# hangs 100% cpu
|
|
||||||
#
|
|
||||||
CREATE TABLE t1(a VARCHAR(2) CHARACTER SET big5 COLLATE big5_chinese_ci,
|
|
||||||
FULLTEXT(a));
|
|
||||||
INSERT INTO t1 VALUES(0xA3C2);
|
|
||||||
DROP TABLE t1;
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUG#29445 - match ... against () never returns
|
# BUG#29445 - match ... against () never returns
|
||||||
#
|
#
|
||||||
CREATE TABLE t1(a VARCHAR(20), FULLTEXT(a));
|
CREATE TABLE t1(a VARCHAR(20), FULLTEXT(a));
|
||||||
INSERT INTO t1 VALUES('Offside'),('City Of God');
|
INSERT INTO t1 VALUES('Offside'),('City Of God');
|
||||||
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city of*' IN BOOLEAN MODE);
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city of*' IN BOOLEAN MODE);
|
||||||
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city (of)*' IN BOOLEAN MODE);
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city (of*)' IN BOOLEAN MODE);
|
||||||
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city* of*' IN BOOLEAN MODE);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -22,3 +22,13 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
# End of 5.0 tests
|
# End of 5.0 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#29464 - load data infile into table with big5 chinese fulltext index
|
||||||
|
# hangs 100% cpu
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a VARCHAR(2) CHARACTER SET big5 COLLATE big5_chinese_ci,
|
||||||
|
FULLTEXT(a));
|
||||||
|
INSERT INTO t1 VALUES(0xA3C2);
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# End of 5.1 tests
|
||||||
|
@ -23,6 +23,12 @@
|
|||||||
inside plus subtree. max_docid could be used by any word in plus
|
inside plus subtree. max_docid could be used by any word in plus
|
||||||
subtree, but it could be updated by plus-word only.
|
subtree, but it could be updated by plus-word only.
|
||||||
|
|
||||||
|
Fulltext "smarter index merge" optimization assumes that rows
|
||||||
|
it gets are ordered by doc_id. That is not the case when we
|
||||||
|
search for a word with truncation operator. It may return
|
||||||
|
rows in random order. Thus we may not use "smarter index merge"
|
||||||
|
optimization with "trunc-words".
|
||||||
|
|
||||||
The idea is: there is no need to search for docid smaller than
|
The idea is: there is no need to search for docid smaller than
|
||||||
biggest docid inside current plus subtree or any upper plus subtree.
|
biggest docid inside current plus subtree or any upper plus subtree.
|
||||||
|
|
||||||
@ -443,7 +449,7 @@ static int _ft2_search(FTB *ftb, FTB_WORD *ftbw, my_bool init_search)
|
|||||||
memcpy(lastkey_buf+off, info->lastkey, info->lastkey_length);
|
memcpy(lastkey_buf+off, info->lastkey, info->lastkey_length);
|
||||||
}
|
}
|
||||||
ftbw->docid[0]=info->lastpos;
|
ftbw->docid[0]=info->lastpos;
|
||||||
if (ftbw->flags & FTB_FLAG_YES)
|
if (ftbw->flags & FTB_FLAG_YES && !(ftbw->flags & FTB_FLAG_TRUNC))
|
||||||
ftbw->max_docid_expr->max_docid= info->lastpos;
|
ftbw->max_docid_expr->max_docid= info->lastpos;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -488,7 +494,7 @@ static void _ftb_init_index_search(FT_INFO *ftb)
|
|||||||
{
|
{
|
||||||
if (ftbe->flags & FTB_FLAG_NO || /* 2 */
|
if (ftbe->flags & FTB_FLAG_NO || /* 2 */
|
||||||
ftbe->up->ythresh - ftbe->up->yweaks >
|
ftbe->up->ythresh - ftbe->up->yweaks >
|
||||||
test(ftbe->flags & FTB_FLAG_YES)) /* 1 */
|
(uint) test(ftbe->flags & FTB_FLAG_YES)) /* 1 */
|
||||||
{
|
{
|
||||||
FTB_EXPR *top_ftbe=ftbe->up;
|
FTB_EXPR *top_ftbe=ftbe->up;
|
||||||
ftbw->docid[0]=HA_OFFSET_ERROR;
|
ftbw->docid[0]=HA_OFFSET_ERROR;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user