summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sergefp@mysql.com>2005-08-07 21:03:45 +0000
committerunknown <sergefp@mysql.com>2005-08-07 21:03:45 +0000
commitb9e04cf1efa45a717832cd2500502edb4c318858 (patch)
treee2b5cb84b734323b2287064d4d2617bac73932d5
parent1b431c427457a4619d03c0818391638ce01c30c1 (diff)
downloadmariadb-git-b9e04cf1efa45a717832cd2500502edb4c318858.tar.gz
BUG#11869: part2: post-review fixes:
In init_prepare_fake_select_lex() don't empty ftfunc_list. UNION's ORDER BY clause may contain MATCH(...), for which fix_index() should be called. mysql-test/r/fulltext_order_by.result: BUG#11869 part2 : added another test case mysql-test/t/fulltext_order_by.test: BUG#11869 part2 : added another test case
-rw-r--r--mysql-test/r/fulltext_order_by.result4
-rw-r--r--mysql-test/t/fulltext_order_by.test5
-rw-r--r--sql/sql_union.cc5
3 files changed, 11 insertions, 3 deletions
diff --git a/mysql-test/r/fulltext_order_by.result b/mysql-test/r/fulltext_order_by.result
index 5f40e43f0c0..0b77153248e 100644
--- a/mysql-test/r/fulltext_order_by.result
+++ b/mysql-test/r/fulltext_order_by.result
@@ -163,6 +163,10 @@ text id betreff
(select b.id, b.betreff from t3 b)
order by match(betreff) against ('+abc' in boolean mode) desc;
id betreff
+(select b.id, b.betreff from t3 b) union
+(select b.id, b.betreff from t3 b)
+order by match(betreff) against ('+abc') desc;
+ERROR HY000: Can't find FULLTEXT index matching the column list
select distinct b.id, b.betreff from t3 b
order by match(betreff) against ('+abc' in boolean mode) desc;
id betreff
diff --git a/mysql-test/t/fulltext_order_by.test b/mysql-test/t/fulltext_order_by.test
index fec74b5dc54..da05fd494c4 100644
--- a/mysql-test/t/fulltext_order_by.test
+++ b/mysql-test/t/fulltext_order_by.test
@@ -138,6 +138,11 @@ order by
(select b.id, b.betreff from t3 b)
order by match(betreff) against ('+abc' in boolean mode) desc;
+--error 1191
+(select b.id, b.betreff from t3 b) union
+(select b.id, b.betreff from t3 b)
+order by match(betreff) against ('+abc') desc;
+
select distinct b.id, b.betreff from t3 b
order by match(betreff) against ('+abc' in boolean mode) desc;
diff --git a/sql/sql_union.cc b/sql/sql_union.cc
index eeb8dfdfef5..c33444fd73e 100644
--- a/sql/sql_union.cc
+++ b/sql/sql_union.cc
@@ -132,8 +132,6 @@ st_select_lex_unit::init_prepare_fake_select_lex(THD *thd)
options_tmp&= ~OPTION_FOUND_ROWS;
else if (found_rows_for_union && !thd->lex->describe)
options_tmp|= OPTION_FOUND_ROWS;
- fake_select_lex->ftfunc_list_alloc.empty();
- fake_select_lex->ftfunc_list= &fake_select_lex->ftfunc_list_alloc;
fake_select_lex->table_list.link_in_list((byte *)&result_table_list,
(byte **)
&result_table_list.next);
@@ -302,7 +300,8 @@ int st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result,
/*
Force the temporary table to be a MyISAM table if we're going to use
fullext functions (MATCH ... AGAINST .. IN BOOLEAN MODE) when reading
- from it.
+ from it (this should be removed in 5.2 when fulltext search is moved
+ out of MyISAM).
*/
if (global_parameters->ftfunc_list->elements)
create_options= create_options | TMP_TABLE_FORCE_MYISAM;