summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2003-07-31 13:45:35 +0200
committerunknown <serg@serg.mylan>2003-07-31 13:45:35 +0200
commit687ebba461075af77544c3bf1d268148fc3b2c90 (patch)
tree86e22579e5e385304471e69daba4abd0971763dc
parent20e39672fb84d3ce70ff466713b84f7d9c78c7fe (diff)
downloadmariadb-git-687ebba461075af77544c3bf1d268148fc3b2c90.tar.gz
bug #942. docid == ftb->lastpos in join on looping over nested table
-rw-r--r--myisam/ft_boolean_search.c4
-rw-r--r--mysql-test/r/fulltext.result11
-rw-r--r--mysql-test/t/fulltext.test16
3 files changed, 28 insertions, 3 deletions
diff --git a/myisam/ft_boolean_search.c b/myisam/ft_boolean_search.c
index ed6bf1808a9..6a7b7531d4d 100644
--- a/myisam/ft_boolean_search.c
+++ b/myisam/ft_boolean_search.c
@@ -299,7 +299,7 @@ FT_INFO * ft_init_boolean_search(MI_INFO *info, uint keynr, byte *query,
default_charset_info :
info->s->keyinfo[keynr].seg->charset);
ftb->with_scan=0;
- ftb->lastpos=0;
+ ftb->lastpos=HA_POS_ERROR;
bzero(& ftb->no_dupes, sizeof(TREE));
init_alloc_root(&ftb->mem_root, 1024, 1024);
@@ -543,7 +543,7 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
if (!ftb->queue.elements)
return 0;
- if (ftb->state != INDEX_SEARCH && docid < ftb->lastpos)
+ if (ftb->state != INDEX_SEARCH && docid <= ftb->lastpos)
{
FTB_EXPR *x;
uint i;
diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result
index 646c1a7bee2..737390865f1 100644
--- a/mysql-test/r/fulltext.result
+++ b/mysql-test/r/fulltext.result
@@ -256,3 +256,14 @@ select ref_mag from t1 where match ref_mag against ('+test' in boolean mode);
ref_mag
test
drop table t1;
+create table t1 (t1_id int(11) primary key, name varchar(32));
+insert into t1 values (1, 'data1');
+insert into t1 values (2, 'data2');
+create table t2 (t2_id int(11) primary key, t1_id int(11), name varchar(32));
+insert into t2 values (1, 1, 'xxfoo');
+insert into t2 values (2, 1, 'xxbar');
+insert into t2 values (3, 1, 'xxbuz');
+select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('xxfoo' in boolean mode);
+t1_id name t2_id t1_id name
+1 data1 1 1 xxfoo
+drop table t1,t2;
diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test
index 942552f5e98..387a36f1f52 100644
--- a/mysql-test/t/fulltext.test
+++ b/mysql-test/t/fulltext.test
@@ -189,7 +189,7 @@ select * from t1 where match (a) against ('aaaa');
drop table t1;
#
-# bug 283 by jocelyn fournier <joc@presence-pc.com>
+# bug #283 by jocelyn fournier <joc@presence-pc.com>
# FULLTEXT index on a TEXT filed converted to a CHAR field doesn't work anymore
#
@@ -201,3 +201,17 @@ alter table t1 change ref_mag ref_mag char (255) not null;
select ref_mag from t1 where match ref_mag against ('+test' in boolean mode);
drop table t1;
+#
+# bug #942: JOIN
+#
+
+create table t1 (t1_id int(11) primary key, name varchar(32));
+insert into t1 values (1, 'data1');
+insert into t1 values (2, 'data2');
+create table t2 (t2_id int(11) primary key, t1_id int(11), name varchar(32));
+insert into t2 values (1, 1, 'xxfoo');
+insert into t2 values (2, 1, 'xxbar');
+insert into t2 values (3, 1, 'xxbuz');
+select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('xxfoo' in boolean mode);
+drop table t1,t2;
+