Loading mysql-test/r/subselect.result +21 −0 Original line number Diff line number Diff line Loading @@ -1990,3 +1990,24 @@ ac 700 NULL drop tables t1,t2; set @got_val= (SELECT 1 FROM (SELECT 'A' as my_col) as T1 ) ; create table t1 (a int, b int); create table t2 (a int, b int); insert into t1 values (1,1),(1,2),(1,3),(2,4),(2,5); insert into t2 values (1,3),(2,1); select distinct a,b, (select max(b) from t2 where t1.b=t2.a) from t1 order by t1.b; a b (select max(b) from t2 where t1.b=t2.a) 1 1 3 1 2 1 1 3 NULL 2 4 NULL 2 5 NULL drop table t1, t2; create table t1 (id int); create table t2 (id int, body text, fulltext (body)); insert into t1 values(1),(2),(3); insert into t2 values (1,'test'), (2,'mysql'), (3,'test'), (4,'test'); select count(distinct id) from t1 where id in (select id from t2 where match(body) against ('mysql' in boolean mode)); count(distinct id) 1 drop table t2,t1; mysql-test/t/subselect.test +27 −0 Original line number Diff line number Diff line Loading @@ -1282,3 +1282,30 @@ INSERT INTO `t2` VALUES (6,5,12,7,'a'),(12,0,0,7,'a'),(12,1,0,7,'a'),(12,5,5,7,' SELECT b.sc FROM (SELECT (SELECT a.access FROM t1 a WHERE a.map = op.map AND a.slave = op.pid AND a.master = 1) ac FROM t2 op WHERE op.id = 12 AND op.map = 0) b; SELECT b.ac FROM (SELECT (SELECT a.access FROM t1 a WHERE a.map = op.map AND a.slave = op.pid AND a.master = 1) ac FROM t2 op WHERE op.id = 12 AND op.map = 0) b; drop tables t1,t2; # # Subselect in non-select command just after connection # connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK); connection root; set @got_val= (SELECT 1 FROM (SELECT 'A' as my_col) as T1 ) ; # # primary query with temporary table and subquery with groupping # create table t1 (a int, b int); create table t2 (a int, b int); insert into t1 values (1,1),(1,2),(1,3),(2,4),(2,5); insert into t2 values (1,3),(2,1); select distinct a,b, (select max(b) from t2 where t1.b=t2.a) from t1 order by t1.b; drop table t1, t2; # # subqueries with full text search # create table t1 (id int); create table t2 (id int, body text, fulltext (body)); insert into t1 values(1),(2),(3); insert into t2 values (1,'test'), (2,'mysql'), (3,'test'), (4,'test'); select count(distinct id) from t1 where id in (select id from t2 where match(body) against ('mysql' in boolean mode)); drop table t2,t1; sql/ha_myisam.h +0 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,6 @@ class ha_myisam: public handler int index_first(byte * buf); int index_last(byte * buf); int index_next_same(byte *buf, const byte *key, uint keylen); int index_end() { ft_handler=NULL; return 0; } int ft_init() { if (!ft_handler) Loading sql/handler.h +1 −0 Original line number Diff line number Diff line Loading @@ -372,6 +372,7 @@ class handler :public Sql_alloc virtual int read_range_next(); int compare_key(key_range *range); virtual int ft_init() { return HA_ERR_WRONG_COMMAND; } void ft_end() { ft_handler=NULL; } virtual FT_INFO *ft_init_ext(uint flags,uint inx,const byte *key, uint keylen) { return NULL; } Loading sql/opt_range.h +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ class FT_SELECT: public QUICK_SELECT { public: FT_SELECT(THD *thd, TABLE *table, uint key): QUICK_SELECT (thd, table, key, 1) { init(); } ~FT_SELECT() { file->ft_end(); } int init() { return error= file->ft_init(); } int get_next() { return error= file->ft_read(record); } }; Loading Loading
mysql-test/r/subselect.result +21 −0 Original line number Diff line number Diff line Loading @@ -1990,3 +1990,24 @@ ac 700 NULL drop tables t1,t2; set @got_val= (SELECT 1 FROM (SELECT 'A' as my_col) as T1 ) ; create table t1 (a int, b int); create table t2 (a int, b int); insert into t1 values (1,1),(1,2),(1,3),(2,4),(2,5); insert into t2 values (1,3),(2,1); select distinct a,b, (select max(b) from t2 where t1.b=t2.a) from t1 order by t1.b; a b (select max(b) from t2 where t1.b=t2.a) 1 1 3 1 2 1 1 3 NULL 2 4 NULL 2 5 NULL drop table t1, t2; create table t1 (id int); create table t2 (id int, body text, fulltext (body)); insert into t1 values(1),(2),(3); insert into t2 values (1,'test'), (2,'mysql'), (3,'test'), (4,'test'); select count(distinct id) from t1 where id in (select id from t2 where match(body) against ('mysql' in boolean mode)); count(distinct id) 1 drop table t2,t1;
mysql-test/t/subselect.test +27 −0 Original line number Diff line number Diff line Loading @@ -1282,3 +1282,30 @@ INSERT INTO `t2` VALUES (6,5,12,7,'a'),(12,0,0,7,'a'),(12,1,0,7,'a'),(12,5,5,7,' SELECT b.sc FROM (SELECT (SELECT a.access FROM t1 a WHERE a.map = op.map AND a.slave = op.pid AND a.master = 1) ac FROM t2 op WHERE op.id = 12 AND op.map = 0) b; SELECT b.ac FROM (SELECT (SELECT a.access FROM t1 a WHERE a.map = op.map AND a.slave = op.pid AND a.master = 1) ac FROM t2 op WHERE op.id = 12 AND op.map = 0) b; drop tables t1,t2; # # Subselect in non-select command just after connection # connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK); connection root; set @got_val= (SELECT 1 FROM (SELECT 'A' as my_col) as T1 ) ; # # primary query with temporary table and subquery with groupping # create table t1 (a int, b int); create table t2 (a int, b int); insert into t1 values (1,1),(1,2),(1,3),(2,4),(2,5); insert into t2 values (1,3),(2,1); select distinct a,b, (select max(b) from t2 where t1.b=t2.a) from t1 order by t1.b; drop table t1, t2; # # subqueries with full text search # create table t1 (id int); create table t2 (id int, body text, fulltext (body)); insert into t1 values(1),(2),(3); insert into t2 values (1,'test'), (2,'mysql'), (3,'test'), (4,'test'); select count(distinct id) from t1 where id in (select id from t2 where match(body) against ('mysql' in boolean mode)); drop table t2,t1;
sql/ha_myisam.h +0 −1 Original line number Diff line number Diff line Loading @@ -81,7 +81,6 @@ class ha_myisam: public handler int index_first(byte * buf); int index_last(byte * buf); int index_next_same(byte *buf, const byte *key, uint keylen); int index_end() { ft_handler=NULL; return 0; } int ft_init() { if (!ft_handler) Loading
sql/handler.h +1 −0 Original line number Diff line number Diff line Loading @@ -372,6 +372,7 @@ class handler :public Sql_alloc virtual int read_range_next(); int compare_key(key_range *range); virtual int ft_init() { return HA_ERR_WRONG_COMMAND; } void ft_end() { ft_handler=NULL; } virtual FT_INFO *ft_init_ext(uint flags,uint inx,const byte *key, uint keylen) { return NULL; } Loading
sql/opt_range.h +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ class FT_SELECT: public QUICK_SELECT { public: FT_SELECT(THD *thd, TABLE *table, uint key): QUICK_SELECT (thd, table, key, 1) { init(); } ~FT_SELECT() { file->ft_end(); } int init() { return error= file->ft_init(); } int get_next() { return error= file->ft_read(record); } }; Loading