Loading mysql-test/r/fulltext_order_by.result +74 −0 Original line number Diff line number Diff line Loading @@ -86,3 +86,77 @@ a rel 1 1 2 2 drop table t1; CREATE TABLE t1 ( id int(11) NOT NULL auto_increment, thread int(11) NOT NULL default '0', beitrag longtext NOT NULL, PRIMARY KEY (id), KEY thread (thread), FULLTEXT KEY beitrag (beitrag) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7923 ; CREATE TABLE t2 ( id int(11) NOT NULL auto_increment, text varchar(100) NOT NULL default '', PRIMARY KEY (id), KEY text (text) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=63 ; CREATE TABLE t3 ( id int(11) NOT NULL auto_increment, forum int(11) NOT NULL default '0', betreff varchar(70) NOT NULL default '', PRIMARY KEY (id), KEY forum (forum), FULLTEXT KEY betreff (betreff) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=996 ; select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) group by a.text, b.id, b.betreff union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) group by a.text, b.id, b.betreff order by match(b.betreff) against ('+abc' in boolean mode) desc; ERROR 42S02: Unknown table 'b' in order clause select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) order by match(b.betreff) against ('+abc' in boolean mode) desc; ERROR 42S02: Unknown table 'b' in order clause select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) order by match(betreff) against ('+abc' in boolean mode) desc; text id betreff drop table t1,t2,t3; mysql-test/r/select.result +35 −0 Original line number Diff line number Diff line Loading @@ -2524,3 +2524,38 @@ select * from t3 left join t1 on t3.id = t1.uid, t2 where t2.ident in (0, t1.gid id name gid uid ident level 1 fs NULL NULL 0 READ drop table t1,t2,t3; CREATE TABLE t1 ( acct_id int(11) NOT NULL default '0', profile_id smallint(6) default NULL, UNIQUE KEY t1$acct_id (acct_id), KEY t1$profile_id (profile_id) ); INSERT INTO t1 VALUES (132,17),(133,18); CREATE TABLE t2 ( profile_id smallint(6) default NULL, queue_id int(11) default NULL, seq int(11) default NULL, KEY t2$queue_id (queue_id) ); INSERT INTO t2 VALUES (17,31,4),(17,30,3),(17,36,2),(17,37,1); CREATE TABLE t3 ( id int(11) NOT NULL default '0', qtype int(11) default NULL, seq int(11) default NULL, warn_lvl int(11) default NULL, crit_lvl int(11) default NULL, rr1 tinyint(4) NOT NULL default '0', rr2 int(11) default NULL, default_queue tinyint(4) NOT NULL default '0', KEY t3$qtype (qtype), KEY t3$id (id) ); INSERT INTO t3 VALUES (30,1,29,NULL,NULL,0,NULL,0),(31,1,28,NULL,NULL,0,NULL,0), (36,1,34,NULL,NULL,0,NULL,0),(37,1,35,NULL,NULL,0,121,0); SELECT COUNT(*) FROM t1 a STRAIGHT_JOIN t2 pq STRAIGHT_JOIN t3 q WHERE (pq.profile_id = a.profile_id) AND (a.acct_id = 132) AND (pq.queue_id = q.id) AND (q.rr1 <> 1); COUNT(*) 4 drop table t1,t2,t3; mysql-test/t/fulltext_order_by.test +81 −0 Original line number Diff line number Diff line Loading @@ -54,3 +54,84 @@ SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1; SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel,a; drop table t1; # BUG#11869 CREATE TABLE t1 ( id int(11) NOT NULL auto_increment, thread int(11) NOT NULL default '0', beitrag longtext NOT NULL, PRIMARY KEY (id), KEY thread (thread), FULLTEXT KEY beitrag (beitrag) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7923 ; CREATE TABLE t2 ( id int(11) NOT NULL auto_increment, text varchar(100) NOT NULL default '', PRIMARY KEY (id), KEY text (text) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=63 ; CREATE TABLE t3 ( id int(11) NOT NULL auto_increment, forum int(11) NOT NULL default '0', betreff varchar(70) NOT NULL default '', PRIMARY KEY (id), KEY forum (forum), FULLTEXT KEY betreff (betreff) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=996 ; --error 1109 select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) group by a.text, b.id, b.betreff union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) group by a.text, b.id, b.betreff order by match(b.betreff) against ('+abc' in boolean mode) desc; --error 1109 select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) order by match(b.betreff) against ('+abc' in boolean mode) desc; select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) order by match(betreff) against ('+abc' in boolean mode) desc; drop table t1,t2,t3; mysql-test/t/select.test +41 −0 Original line number Diff line number Diff line Loading @@ -2075,3 +2075,44 @@ INSERT INTO `t3` VALUES (1,'fs'); select * from t3 left join t1 on t3.id = t1.uid, t2 where t2.ident in (0, t1.gid, t3.id, 0); drop table t1,t2,t3; # Test for BUG#11700 CREATE TABLE t1 ( acct_id int(11) NOT NULL default '0', profile_id smallint(6) default NULL, UNIQUE KEY t1$acct_id (acct_id), KEY t1$profile_id (profile_id) ); INSERT INTO t1 VALUES (132,17),(133,18); CREATE TABLE t2 ( profile_id smallint(6) default NULL, queue_id int(11) default NULL, seq int(11) default NULL, KEY t2$queue_id (queue_id) ); INSERT INTO t2 VALUES (17,31,4),(17,30,3),(17,36,2),(17,37,1); CREATE TABLE t3 ( id int(11) NOT NULL default '0', qtype int(11) default NULL, seq int(11) default NULL, warn_lvl int(11) default NULL, crit_lvl int(11) default NULL, rr1 tinyint(4) NOT NULL default '0', rr2 int(11) default NULL, default_queue tinyint(4) NOT NULL default '0', KEY t3$qtype (qtype), KEY t3$id (id) ); INSERT INTO t3 VALUES (30,1,29,NULL,NULL,0,NULL,0),(31,1,28,NULL,NULL,0,NULL,0), (36,1,34,NULL,NULL,0,NULL,0),(37,1,35,NULL,NULL,0,121,0); SELECT COUNT(*) FROM t1 a STRAIGHT_JOIN t2 pq STRAIGHT_JOIN t3 q WHERE (pq.profile_id = a.profile_id) AND (a.acct_id = 132) AND (pq.queue_id = q.id) AND (q.rr1 <> 1); drop table t1,t2,t3; sql/item_func.cc +3 −0 Original line number Diff line number Diff line Loading @@ -3210,6 +3210,9 @@ bool Item_func_match::fix_index() if (key == NO_SUCH_KEY) return 0; if (!table) goto err; for (keynr=0 ; keynr < table->keys ; keynr++) { if ((table->key_info[keynr].flags & HA_FULLTEXT) && Loading Loading
mysql-test/r/fulltext_order_by.result +74 −0 Original line number Diff line number Diff line Loading @@ -86,3 +86,77 @@ a rel 1 1 2 2 drop table t1; CREATE TABLE t1 ( id int(11) NOT NULL auto_increment, thread int(11) NOT NULL default '0', beitrag longtext NOT NULL, PRIMARY KEY (id), KEY thread (thread), FULLTEXT KEY beitrag (beitrag) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7923 ; CREATE TABLE t2 ( id int(11) NOT NULL auto_increment, text varchar(100) NOT NULL default '', PRIMARY KEY (id), KEY text (text) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=63 ; CREATE TABLE t3 ( id int(11) NOT NULL auto_increment, forum int(11) NOT NULL default '0', betreff varchar(70) NOT NULL default '', PRIMARY KEY (id), KEY forum (forum), FULLTEXT KEY betreff (betreff) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=996 ; select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) group by a.text, b.id, b.betreff union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) group by a.text, b.id, b.betreff order by match(b.betreff) against ('+abc' in boolean mode) desc; ERROR 42S02: Unknown table 'b' in order clause select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) order by match(b.betreff) against ('+abc' in boolean mode) desc; ERROR 42S02: Unknown table 'b' in order clause select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) order by match(betreff) against ('+abc' in boolean mode) desc; text id betreff drop table t1,t2,t3;
mysql-test/r/select.result +35 −0 Original line number Diff line number Diff line Loading @@ -2524,3 +2524,38 @@ select * from t3 left join t1 on t3.id = t1.uid, t2 where t2.ident in (0, t1.gid id name gid uid ident level 1 fs NULL NULL 0 READ drop table t1,t2,t3; CREATE TABLE t1 ( acct_id int(11) NOT NULL default '0', profile_id smallint(6) default NULL, UNIQUE KEY t1$acct_id (acct_id), KEY t1$profile_id (profile_id) ); INSERT INTO t1 VALUES (132,17),(133,18); CREATE TABLE t2 ( profile_id smallint(6) default NULL, queue_id int(11) default NULL, seq int(11) default NULL, KEY t2$queue_id (queue_id) ); INSERT INTO t2 VALUES (17,31,4),(17,30,3),(17,36,2),(17,37,1); CREATE TABLE t3 ( id int(11) NOT NULL default '0', qtype int(11) default NULL, seq int(11) default NULL, warn_lvl int(11) default NULL, crit_lvl int(11) default NULL, rr1 tinyint(4) NOT NULL default '0', rr2 int(11) default NULL, default_queue tinyint(4) NOT NULL default '0', KEY t3$qtype (qtype), KEY t3$id (id) ); INSERT INTO t3 VALUES (30,1,29,NULL,NULL,0,NULL,0),(31,1,28,NULL,NULL,0,NULL,0), (36,1,34,NULL,NULL,0,NULL,0),(37,1,35,NULL,NULL,0,121,0); SELECT COUNT(*) FROM t1 a STRAIGHT_JOIN t2 pq STRAIGHT_JOIN t3 q WHERE (pq.profile_id = a.profile_id) AND (a.acct_id = 132) AND (pq.queue_id = q.id) AND (q.rr1 <> 1); COUNT(*) 4 drop table t1,t2,t3;
mysql-test/t/fulltext_order_by.test +81 −0 Original line number Diff line number Diff line Loading @@ -54,3 +54,84 @@ SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1; SELECT a, MATCH (message) AGAINST ('t* f*' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel,a; drop table t1; # BUG#11869 CREATE TABLE t1 ( id int(11) NOT NULL auto_increment, thread int(11) NOT NULL default '0', beitrag longtext NOT NULL, PRIMARY KEY (id), KEY thread (thread), FULLTEXT KEY beitrag (beitrag) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7923 ; CREATE TABLE t2 ( id int(11) NOT NULL auto_increment, text varchar(100) NOT NULL default '', PRIMARY KEY (id), KEY text (text) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=63 ; CREATE TABLE t3 ( id int(11) NOT NULL auto_increment, forum int(11) NOT NULL default '0', betreff varchar(70) NOT NULL default '', PRIMARY KEY (id), KEY forum (forum), FULLTEXT KEY betreff (betreff) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=996 ; --error 1109 select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) group by a.text, b.id, b.betreff union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) group by a.text, b.id, b.betreff order by match(b.betreff) against ('+abc' in boolean mode) desc; --error 1109 select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) order by match(b.betreff) against ('+abc' in boolean mode) desc; select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(b.betreff) against ('+abc' in boolean mode) union select a.text, b.id, b.betreff from t2 a inner join t3 b on a.id = b.forum inner join t1 c on b.id = c.thread where match(c.beitrag) against ('+abc' in boolean mode) order by match(betreff) against ('+abc' in boolean mode) desc; drop table t1,t2,t3;
mysql-test/t/select.test +41 −0 Original line number Diff line number Diff line Loading @@ -2075,3 +2075,44 @@ INSERT INTO `t3` VALUES (1,'fs'); select * from t3 left join t1 on t3.id = t1.uid, t2 where t2.ident in (0, t1.gid, t3.id, 0); drop table t1,t2,t3; # Test for BUG#11700 CREATE TABLE t1 ( acct_id int(11) NOT NULL default '0', profile_id smallint(6) default NULL, UNIQUE KEY t1$acct_id (acct_id), KEY t1$profile_id (profile_id) ); INSERT INTO t1 VALUES (132,17),(133,18); CREATE TABLE t2 ( profile_id smallint(6) default NULL, queue_id int(11) default NULL, seq int(11) default NULL, KEY t2$queue_id (queue_id) ); INSERT INTO t2 VALUES (17,31,4),(17,30,3),(17,36,2),(17,37,1); CREATE TABLE t3 ( id int(11) NOT NULL default '0', qtype int(11) default NULL, seq int(11) default NULL, warn_lvl int(11) default NULL, crit_lvl int(11) default NULL, rr1 tinyint(4) NOT NULL default '0', rr2 int(11) default NULL, default_queue tinyint(4) NOT NULL default '0', KEY t3$qtype (qtype), KEY t3$id (id) ); INSERT INTO t3 VALUES (30,1,29,NULL,NULL,0,NULL,0),(31,1,28,NULL,NULL,0,NULL,0), (36,1,34,NULL,NULL,0,NULL,0),(37,1,35,NULL,NULL,0,121,0); SELECT COUNT(*) FROM t1 a STRAIGHT_JOIN t2 pq STRAIGHT_JOIN t3 q WHERE (pq.profile_id = a.profile_id) AND (a.acct_id = 132) AND (pq.queue_id = q.id) AND (q.rr1 <> 1); drop table t1,t2,t3;
sql/item_func.cc +3 −0 Original line number Diff line number Diff line Loading @@ -3210,6 +3210,9 @@ bool Item_func_match::fix_index() if (key == NO_SUCH_KEY) return 0; if (!table) goto err; for (keynr=0 ; keynr < table->keys ; keynr++) { if ((table->key_info[keynr].flags & HA_FULLTEXT) && Loading