Skip to content

Commit 69cb0a8

Browse files
author
Alexander Nozdrin
committed
Manual merge from mysql-trunk-merge.
Conflicts: - sql/sql_select.cc
2 parents 7bb5169 + 4cfda7f commit 69cb0a8

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

mysql-test/r/fulltext.result

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,4 +611,12 @@ WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
611611
count(*)
612612
0
613613
DROP TABLE t1,t2,t3;
614+
#
615+
# Bug #49445: Assertion failed: 0, file .\item_row.cc, line 55 with
616+
# fulltext search and row op
617+
#
618+
CREATE TABLE t1(a CHAR(1),FULLTEXT(a));
619+
SELECT 1 FROM t1 WHERE MATCH(a) AGAINST ('') AND ROW(a,a) > ROW(1,1);
620+
1
621+
DROP TABLE t1;
614622
End of 5.1 tests

mysql-test/t/fulltext.test

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -554,4 +554,14 @@ SELECT count(*) FROM t1 WHERE
554554
DROP TABLE t1,t2,t3;
555555

556556

557+
--echo #
558+
--echo # Bug #49445: Assertion failed: 0, file .\item_row.cc, line 55 with
559+
--echo # fulltext search and row op
560+
--echo #
561+
562+
CREATE TABLE t1(a CHAR(1),FULLTEXT(a));
563+
SELECT 1 FROM t1 WHERE MATCH(a) AGAINST ('') AND ROW(a,a) > ROW(1,1);
564+
DROP TABLE t1;
565+
566+
557567
--echo End of 5.1 tests

sql/sql_select.cc

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3673,20 +3673,20 @@ add_ft_keys(DYNAMIC_ARRAY *keyuse_array,
36733673
cond_func=(Item_func_match *)cond;
36743674
else if (func->arg_count == 2)
36753675
{
3676-
Item_func *arg0=(Item_func *)(func->arguments()[0]),
3677-
*arg1=(Item_func *)(func->arguments()[1]);
3678-
if (arg1->const_item() &&
3679-
arg0->type() == Item::FUNC_ITEM &&
3680-
arg0->functype() == Item_func::FT_FUNC &&
3676+
Item *arg0=(Item *)(func->arguments()[0]),
3677+
*arg1=(Item *)(func->arguments()[1]);
3678+
if (arg1->const_item() && arg1->cols() == 1 &&
3679+
arg0->type() == Item::FUNC_ITEM &&
3680+
((Item_func *) arg0)->functype() == Item_func::FT_FUNC &&
36813681
((functype == Item_func::GE_FUNC && arg1->val_real() > 0) ||
36823682
(functype == Item_func::GT_FUNC && arg1->val_real() >=0)))
3683-
cond_func=(Item_func_match *) arg0;
3683+
cond_func= (Item_func_match *) arg0;
36843684
else if (arg0->const_item() &&
3685-
arg1->type() == Item::FUNC_ITEM &&
3686-
arg1->functype() == Item_func::FT_FUNC &&
3685+
arg1->type() == Item::FUNC_ITEM &&
3686+
((Item_func *) arg1)->functype() == Item_func::FT_FUNC &&
36873687
((functype == Item_func::LE_FUNC && arg0->val_real() > 0) ||
36883688
(functype == Item_func::LT_FUNC && arg0->val_real() >=0)))
3689-
cond_func=(Item_func_match *) arg1;
3689+
cond_func= (Item_func_match *) arg1;
36903690
}
36913691
}
36923692
else if (cond->type() == Item::COND_ITEM)

0 commit comments

Comments
 (0)