diff --git a/Makefile.am b/Makefile.am index dfa6c7f0f07..8a575b3c365 100644 --- a/Makefile.am +++ b/Makefile.am @@ -101,7 +101,9 @@ dist-hook: tags: support-files/build-tags -.PHONY: init-db bin-dist + +.PHONY: init-db bin-dist test test-full test-ps test-nr \ + test-ns test-pr test-unit # Target 'test' will run the regression test suite using the built server. # @@ -111,29 +113,34 @@ tags: # will then calculate the various port numbers it needs from this, # making sure each user use different ports. -test: - cd mysql-test ; \ - ./mysql-test-run.pl --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --ps-protocol --mysqld=--binlog-format=row +test-unit: + cd unittest && $(MAKE) test -test-full: +test-ps: cd mysql-test ; \ - ./mysql-test-run.pl --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --ps-protocol --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --mysqld=--binlog-format=row && \ - ./mysql-test-run.pl --ps-protocol --mysqld=--binlog-format=row + ./mysql-test-run.pl $(force) --ps-protocol --mysqld=--binlog-format=statement + +test-nr: + cd mysql-test ; \ + ./mysql-test-run.pl $(force) --mysqld=--binlog-format=row + +test-pr: + cd mysql-test ; \ + ./mysql-test-run.pl $(force) --ps-protocol --mysqld=--binlog-format=row + +test-ns: + cd mysql-test ; \ + ./mysql-test-run.pl $(force) --mysqld=--binlog-format=statement + +test: test-unit test-ns test-pr + +test-full: test test-nr test-ps test-force: - cd mysql-test ; \ - ./mysql-test-run.pl --force --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --ps-protocol --force --mysqld=--binlog-format=row + $(MAKE) force=--force test test-force-full: - cd mysql-test ; \ - ./mysql-test-run.pl --force --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --force --ps-protocol --mysqld=--binlog-format=statement && \ - ./mysql-test-run.pl --force --mysqld=--binlog-format=row && \ - ./mysql-test-run.pl --force --ps-protocol --mysqld=--binlog-format=row + $(MAKE) force=--force test-full # Keep these for a while test-pl: test @@ -141,8 +148,6 @@ test-full-pl: test-full test-force-pl: test-force test-force-full-pl: test-force-full - - # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/mysql-test/r/fulltext_left_join.result b/mysql-test/r/fulltext_left_join.result index f3dad290525..68a424fa3a5 100644 --- a/mysql-test/r/fulltext_left_join.result +++ b/mysql-test/r/fulltext_left_join.result @@ -50,3 +50,20 @@ venue_id venue_text dt name entity_id 1 a1 2003-05-23 19:30:00 aberdeen town hall 1 NULL a2 2003-05-23 19:30:00 NULL NULL 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; diff --git a/mysql-test/t/fulltext_left_join.test b/mysql-test/t/fulltext_left_join.test index 3bb1f0b7309..7c22f49ed8c 100644 --- a/mysql-test/t/fulltext_left_join.test +++ b/mysql-test/t/fulltext_left_join.test @@ -32,7 +32,7 @@ select match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE) drop table t1, t2; # -# Bug #484, reported by Stephen Brandon +# BUG#484, reported by Stephen Brandon # 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'; 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 diff --git a/mysql-test/t/ps_1general.test b/mysql-test/t/ps_1general.test index 0b9a46ad4d3..76da296c0b0 100644 --- a/mysql-test/t/ps_1general.test +++ b/mysql-test/t/ps_1general.test @@ -320,16 +320,16 @@ prepare stmt4 from ' show status like ''Threads_running'' '; execute stmt4; prepare stmt4 from ' show variables like ''sql_mode'' '; execute stmt4; -prepare stmt4 from ' show engine bdb logs '; # The output depends on the bdb being enabled and on the history # history (actions of the bdb engine). # That is the reason why, we switch the output here off. # (The real output will be tested in ps_6bdb.test) --disable_warnings +prepare stmt4 from ' show engine bdb logs '; +--enable_warnings --disable_result_log execute stmt4; --enable_result_log ---enable_warnings prepare stmt4 from ' show grants for user '; --error 1295 prepare stmt4 from ' show create table t2 '; diff --git a/sql/item_func.cc b/sql/item_func.cc index 3b633295f20..051238843fa 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4516,7 +4516,7 @@ double Item_func_match::val_real() if (ft_handler == NULL) 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 */ DBUG_RETURN(0.0); if (join_key)