mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
backport Serg's fix of FT interface (BUG#6523)
This commit is contained in:
@ -2003,3 +2003,11 @@ a b (select max(b) from t2 where t1.b=t2.a)
|
|||||||
2 4 NULL
|
2 4 NULL
|
||||||
2 5 NULL
|
2 5 NULL
|
||||||
drop table t1, t2;
|
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;
|
||||||
|
@ -1299,3 +1299,13 @@ insert into t1 values (1,1),(1,2),(1,3),(2,4),(2,5);
|
|||||||
insert into t2 values (1,3),(2,1);
|
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;
|
select distinct a,b, (select max(b) from t2 where t1.b=t2.a) from t1 order by t1.b;
|
||||||
drop table t1, t2;
|
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;
|
||||||
|
@ -81,7 +81,6 @@ class ha_myisam: public handler
|
|||||||
int index_first(byte * buf);
|
int index_first(byte * buf);
|
||||||
int index_last(byte * buf);
|
int index_last(byte * buf);
|
||||||
int index_next_same(byte *buf, const byte *key, uint keylen);
|
int index_next_same(byte *buf, const byte *key, uint keylen);
|
||||||
int index_end() { ft_handler=NULL; return 0; }
|
|
||||||
int ft_init()
|
int ft_init()
|
||||||
{
|
{
|
||||||
if (!ft_handler)
|
if (!ft_handler)
|
||||||
|
@ -372,6 +372,7 @@ public:
|
|||||||
virtual int read_range_next();
|
virtual int read_range_next();
|
||||||
int compare_key(key_range *range);
|
int compare_key(key_range *range);
|
||||||
virtual int ft_init() { return HA_ERR_WRONG_COMMAND; }
|
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,
|
virtual FT_INFO *ft_init_ext(uint flags,uint inx,const byte *key,
|
||||||
uint keylen)
|
uint keylen)
|
||||||
{ return NULL; }
|
{ return NULL; }
|
||||||
|
@ -154,7 +154,7 @@ class FT_SELECT: public QUICK_SELECT {
|
|||||||
public:
|
public:
|
||||||
FT_SELECT(THD *thd, TABLE *table, uint key):
|
FT_SELECT(THD *thd, TABLE *table, uint key):
|
||||||
QUICK_SELECT (thd, table, key, 1) { init(); }
|
QUICK_SELECT (thd, table, key, 1) { init(); }
|
||||||
|
~FT_SELECT() { file->ft_end(); }
|
||||||
int init() { return error= file->ft_init(); }
|
int init() { return error= file->ft_init(); }
|
||||||
int get_next() { return error= file->ft_read(record); }
|
int get_next() { return error= file->ft_read(record); }
|
||||||
};
|
};
|
||||||
|
@ -3834,7 +3834,7 @@ JOIN::join_free(bool full)
|
|||||||
DBUG_ENTER("JOIN::join_free");
|
DBUG_ENTER("JOIN::join_free");
|
||||||
|
|
||||||
full= full || (!select_lex->uncacheable &&
|
full= full || (!select_lex->uncacheable &&
|
||||||
!thd->lex->describe);
|
!thd->lex->describe); // do not cleanup too early on EXPLAIN
|
||||||
|
|
||||||
if (table)
|
if (table)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user