mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#14708: Inconsistent treatment of NULLs in LEFT JOINed FULLTEXT matching without index
Don't rely on table->null_row when no index is used - it may be a multi-table search
This commit is contained in:
@ -50,3 +50,20 @@ venue_id venue_text dt name entity_id
|
|||||||
1 a1 2003-05-23 19:30:00 aberdeen town hall 1
|
1 a1 2003-05-23 19:30:00 aberdeen town hall 1
|
||||||
NULL a2 2003-05-23 19:30:00 NULL NULL
|
NULL a2 2003-05-23 19:30:00 NULL NULL
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
create table t1 (id int not null primary key, d char(200) not null, e char(200));
|
||||||
|
insert into t1 values (1, 'aword', null), (2, 'aword', 'bword'), (3, 'bword', null), (4, 'bword', 'aword'), (5, 'aword and bword', null);
|
||||||
|
select * from t1 where match(d, e) against ('+aword +bword' in boolean mode);
|
||||||
|
id d e
|
||||||
|
2 aword bword
|
||||||
|
4 bword aword
|
||||||
|
5 aword and bword NULL
|
||||||
|
create table t2 (m_id int not null, f char(200), key (m_id));
|
||||||
|
insert into t2 values (1, 'bword'), (3, 'aword'), (5, '');
|
||||||
|
select * from t1 left join t2 on m_id = id where match(d, e, f) against ('+aword +bword' in boolean mode);
|
||||||
|
id d e m_id f
|
||||||
|
1 aword NULL 1 bword
|
||||||
|
2 aword bword NULL NULL
|
||||||
|
3 bword NULL 3 aword
|
||||||
|
4 bword aword NULL NULL
|
||||||
|
5 aword and bword NULL 5
|
||||||
|
drop table t1,t2;
|
||||||
|
@ -32,7 +32,7 @@ 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>
|
# 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) engine=myisam;
|
create table t1 (venue_id int(11) default null, venue_text varchar(255) default null, dt datetime default null) engine=myisam;
|
||||||
@ -45,4 +45,17 @@ select * from t1 left join t2 on (venue_id = entity_id and match(name) against('
|
|||||||
select * from t1 left join t2 on (venue_id = entity_id and match(name) against('aberdeen')) where dt = '2003-05-23 19:30:00';
|
select * from t1 left join t2 on (venue_id = entity_id and match(name) against('aberdeen')) where dt = '2003-05-23 19:30:00';
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#14708
|
||||||
|
# Inconsistent treatment of NULLs in LEFT JOINed FULLTEXT matching without index
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (id int not null primary key, d char(200) not null, e char(200));
|
||||||
|
insert into t1 values (1, 'aword', null), (2, 'aword', 'bword'), (3, 'bword', null), (4, 'bword', 'aword'), (5, 'aword and bword', null);
|
||||||
|
select * from t1 where match(d, e) against ('+aword +bword' in boolean mode);
|
||||||
|
create table t2 (m_id int not null, f char(200), key (m_id));
|
||||||
|
insert into t2 values (1, 'bword'), (3, 'aword'), (5, '');
|
||||||
|
select * from t1 left join t2 on m_id = id where match(d, e, f) against ('+aword +bword' in boolean mode);
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -4482,7 +4482,7 @@ double Item_func_match::val_real()
|
|||||||
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 */
|
if (key != NO_SUCH_KEY && table->null_row) /* NULL row from an outer join */
|
||||||
return 0.0;
|
return 0.0;
|
||||||
|
|
||||||
if (join_key)
|
if (join_key)
|
||||||
|
Reference in New Issue
Block a user