mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
fulltext.test, fulltext.result, ft_nlq_search.c:
a bug in latin1_german2 FT fixed myisam/ft_nlq_search.c: a bug in latin1_german2 FT fixed mysql-test/r/fulltext.result: a bug in latin1_german2 FT fixed mysql-test/t/fulltext.test: a bug in latin1_german2 FT fixed
This commit is contained in:
@ -73,6 +73,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
|
|||||||
uchar *keybuff=aio->keybuff;
|
uchar *keybuff=aio->keybuff;
|
||||||
MI_KEYDEF *keyinfo=info->s->keyinfo+aio->keynr;
|
MI_KEYDEF *keyinfo=info->s->keyinfo+aio->keynr;
|
||||||
my_off_t key_root=info->s->state.key_root[aio->keynr];
|
my_off_t key_root=info->s->state.key_root[aio->keynr];
|
||||||
|
uint extra=HA_FT_WLEN+info->s->base.rec_reflength;
|
||||||
#if HA_FT_WTYPE == HA_KEYTYPE_FLOAT
|
#if HA_FT_WTYPE == HA_KEYTYPE_FLOAT
|
||||||
float tmp_weight;
|
float tmp_weight;
|
||||||
#else
|
#else
|
||||||
@ -94,7 +95,8 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (keylen &&
|
if (keylen &&
|
||||||
mi_compare_text(aio->charset,info->lastkey,keylen, keybuff,keylen,0))
|
mi_compare_text(aio->charset,info->lastkey+1,
|
||||||
|
info->lastkey_length-extra, keybuff+1,keylen,0))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
subkeys=ft_sintXkorr(info->lastkey+keylen);
|
subkeys=ft_sintXkorr(info->lastkey+keylen);
|
||||||
|
@ -29,8 +29,8 @@ Full-text indexes are called collections
|
|||||||
Only MyISAM tables support collections
|
Only MyISAM tables support collections
|
||||||
select * from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
|
select * from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
|
||||||
a b
|
a b
|
||||||
Full-text indexes are called collections
|
|
||||||
Only MyISAM tables support collections
|
Only MyISAM tables support collections
|
||||||
|
Full-text indexes are called collections
|
||||||
MySQL has now support for full-text search
|
MySQL has now support for full-text search
|
||||||
explain select * from t1 where MATCH(a,b) AGAINST ("collections");
|
explain select * from t1 where MATCH(a,b) AGAINST ("collections");
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
@ -294,18 +294,27 @@ INSERT t1 VALUES ('Mit freundlichem Gr
|
|||||||
SET NAMES koi8r;
|
SET NAMES koi8r;
|
||||||
INSERT t1 VALUES ("<22><><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>!"),
|
INSERT t1 VALUES ("<22><><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>!"),
|
||||||
("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>!"),("<22> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!");
|
("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>!"),("<22> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!");
|
||||||
SELECT t, charset(t) FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||||||
t charset(t)
|
t collation(t)
|
||||||
<EFBFBD><EFBFBD><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> utf8
|
<EFBFBD><EFBFBD><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> utf8_general_ci
|
||||||
SELECT t, charset(t) FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD>*' IN BOOLEAN MODE);
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD>*' IN BOOLEAN MODE);
|
||||||
t charset(t)
|
t collation(t)
|
||||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! utf8
|
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! utf8_general_ci
|
||||||
SELECT * FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD>' IN BOOLEAN MODE);
|
SELECT * FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD>' IN BOOLEAN MODE);
|
||||||
t
|
t
|
||||||
SELECT t, charset(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
||||||
t charset(t)
|
t collation(t)
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
SELECT t, charset(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
||||||
t charset(t)
|
t collation(t)
|
||||||
aus Osnabr<62>ck utf8
|
aus Osnabr<62>ck utf8_general_ci
|
||||||
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabrueck');
|
||||||
|
t collation(t)
|
||||||
|
alter table t1 modify t varchar(200) collate latin1_german2_ci not null;
|
||||||
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
||||||
|
t collation(t)
|
||||||
|
aus Osnabr<62>ck latin1_german2_ci
|
||||||
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabrueck');
|
||||||
|
t collation(t)
|
||||||
|
aus Osnabr<62>ck latin1_german2_ci
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@ -237,11 +237,16 @@ INSERT t1 VALUES ('Mit freundlichem Gr
|
|||||||
SET NAMES koi8r;
|
SET NAMES koi8r;
|
||||||
INSERT t1 VALUES ("<22><><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>!"),
|
INSERT t1 VALUES ("<22><><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>!"),
|
||||||
("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>!"),("<22> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!");
|
("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>!"),("<22> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!");
|
||||||
SELECT t, charset(t) FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||||||
SELECT t, charset(t) FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD>*' IN BOOLEAN MODE);
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD>*' IN BOOLEAN MODE);
|
||||||
SELECT * FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD>' IN BOOLEAN MODE);
|
SELECT * FROM t1 WHERE MATCH t AGAINST ('<27><><EFBFBD>' IN BOOLEAN MODE);
|
||||||
SELECT t, charset(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
SELECT t, charset(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
||||||
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabrueck');
|
||||||
|
#alter table t1 modify t text character set latin1 collate latin1_german2_ci not null;
|
||||||
|
alter table t1 modify t varchar(200) collate latin1_german2_ci not null;
|
||||||
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
||||||
|
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabrueck');
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user