mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
fulltext and left join bug fixed
This commit is contained in:
@ -5,6 +5,9 @@ INSERT INTO t1 VALUES('MySQL has now support', 'for full-text search'),
|
|||||||
('Only MyISAM tables','support collections'),
|
('Only MyISAM tables','support collections'),
|
||||||
('Function MATCH ... AGAINST()','is used to do a search'),
|
('Function MATCH ... AGAINST()','is used to do a search'),
|
||||||
('Full-text search in MySQL', 'implements vector space model');
|
('Full-text search in MySQL', 'implements vector space model');
|
||||||
|
explain select * from t1 where MATCH(a,b) AGAINST ("collections");
|
||||||
|
table type possible_keys key key_len ref rows Extra
|
||||||
|
t1 fulltext a a 0 1 Using where
|
||||||
select * from t1 where MATCH(a,b) AGAINST ("collections");
|
select * from t1 where MATCH(a,b) AGAINST ("collections");
|
||||||
a b
|
a b
|
||||||
Only MyISAM tables support collections
|
Only MyISAM tables support collections
|
||||||
|
@ -31,3 +31,14 @@ match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE)
|
|||||||
1
|
1
|
||||||
0
|
0
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
create table t1 (venue_id int(11) default null, venue_text varchar(255) default null, dt datetime default null) type=myisam;
|
||||||
|
insert into t1 (venue_id, venue_text, dt) values (1, 'a1', '2003-05-23 19:30:00'),(null, 'a2', '2003-05-23 19:30:00');
|
||||||
|
create table t2 (name varchar(255) not null default '', entity_id int(11) not null auto_increment, primary key (entity_id), fulltext key name (name)) type=myisam;
|
||||||
|
insert into t2 (name, entity_id) values ('aberdeen town hall', 1), ('glasgow royal concert hall', 2), ('queen\'s hall, edinburgh', 3);
|
||||||
|
select * from t1 left join t2 on venue_id = entity_id where match(name) against('aberdeen' in boolean mode) and dt = '2003-05-23 19:30:00';
|
||||||
|
venue_id venue_text dt name entity_id
|
||||||
|
1 a1 2003-05-23 19:30:00 aberdeen town hall 1
|
||||||
|
select * from t1 left join t2 on venue_id = entity_id where match(name) against('aberdeen') and dt = '2003-05-23 19:30:00';
|
||||||
|
venue_id venue_text dt name entity_id
|
||||||
|
1 a1 2003-05-23 19:30:00 aberdeen town hall 1
|
||||||
|
drop table t1,t2;
|
||||||
|
@ -13,6 +13,7 @@ INSERT INTO t1 VALUES('MySQL has now support', 'for full-text search'),
|
|||||||
|
|
||||||
# nl search
|
# nl search
|
||||||
|
|
||||||
|
explain select * from t1 where MATCH(a,b) AGAINST ("collections");
|
||||||
select * from t1 where MATCH(a,b) AGAINST ("collections");
|
select * from t1 where MATCH(a,b) AGAINST ("collections");
|
||||||
select * from t1 where MATCH(a,b) AGAINST ("indexes");
|
select * from t1 where MATCH(a,b) AGAINST ("indexes");
|
||||||
select * from t1 where MATCH(a,b) AGAINST ("indexes collections");
|
select * from t1 where MATCH(a,b) AGAINST ("indexes collections");
|
||||||
|
@ -28,3 +28,15 @@ select match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE)
|
|||||||
|
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #484, reported by Stephen Brandon <stephen@brandonitconsulting.co.uk>
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (venue_id int(11) default null, venue_text varchar(255) default null, dt datetime default null) type=myisam;
|
||||||
|
insert into t1 (venue_id, venue_text, dt) values (1, 'a1', '2003-05-23 19:30:00'),(null, 'a2', '2003-05-23 19:30:00');
|
||||||
|
create table t2 (name varchar(255) not null default '', entity_id int(11) not null auto_increment, primary key (entity_id), fulltext key name (name)) type=myisam;
|
||||||
|
insert into t2 (name, entity_id) values ('aberdeen town hall', 1), ('glasgow royal concert hall', 2), ('queen\'s hall, edinburgh', 3);
|
||||||
|
select * from t1 left join t2 on venue_id = entity_id where match(name) against('aberdeen' in boolean mode) and dt = '2003-05-23 19:30:00';
|
||||||
|
select * from t1 left join t2 on venue_id = entity_id where match(name) against('aberdeen') and dt = '2003-05-23 19:30:00';
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
|
@ -2299,6 +2299,9 @@ double Item_func_match::val()
|
|||||||
if (ft_handler == NULL)
|
if (ft_handler == NULL)
|
||||||
DBUG_RETURN(-1.0);
|
DBUG_RETURN(-1.0);
|
||||||
|
|
||||||
|
if (table->null_row) /* NULL row from an outer join */
|
||||||
|
return 0.0;
|
||||||
|
|
||||||
if (join_key)
|
if (join_key)
|
||||||
{
|
{
|
||||||
if (table->file->ft_handler)
|
if (table->file->ft_handler)
|
||||||
|
@ -1688,6 +1688,9 @@ add_ft_keys(DYNAMIC_ARRAY *keyuse_array,
|
|||||||
if (!cond_func || cond_func->key == NO_SUCH_KEY)
|
if (!cond_func || cond_func->key == NO_SUCH_KEY)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!(usable_tables & cond_func->table->map))
|
||||||
|
return;
|
||||||
|
|
||||||
KEYUSE keyuse;
|
KEYUSE keyuse;
|
||||||
|
|
||||||
keyuse.table= cond_func->table;
|
keyuse.table= cond_func->table;
|
||||||
|
Reference in New Issue
Block a user