Commit 1b431c42 authored by unknown's avatar unknown
Browse files

Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1

into mysql.com:/home/psergey/mysql-4.1-bug11869-part2

parents 75c06af2 852dcb75
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -159,4 +159,14 @@ match(c.beitrag) against ('+abc' in boolean mode)
order by 
match(betreff) against ('+abc' in boolean mode) desc;
text	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' in boolean mode) desc;
id	betreff
select distinct 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 group by b.id+1 
order by match(betreff) against ('+abc' in boolean mode) desc;
id	betreff
drop table t1,t2,t3;
+11 −0
Original line number Diff line number Diff line
@@ -133,6 +133,17 @@ where
order by 
  match(betreff) against ('+abc' in boolean mode) desc;

# BUG#11869 part2: used table type doesn't support FULLTEXT indexes error
(select b.id, b.betreff from t3 b) union 
(select b.id, b.betreff from t3 b) 
order by match(betreff) against ('+abc' in boolean mode) desc;

select distinct b.id, b.betreff from t3 b 
order by match(betreff) against ('+abc' in boolean mode) desc;

select b.id, b.betreff from t3 b group by b.id+1 
order by match(betreff) against ('+abc' in boolean mode) desc;

drop table t1,t2,t3;

# End of 4.1 tests
+6 −0
Original line number Diff line number Diff line
@@ -215,6 +215,12 @@ extern CHARSET_INFO *national_charset_info, *table_alias_charset;
   in the user query has requested */
#define SELECT_ALL			(1L << 29)

/* 
  Force the used temporary table to be a MyISAM table (because we will use
  fulltext functions when reading from it.
*/
#define TMP_TABLE_FORCE_MYISAM          (1L << 30) 

/* If set to 0, then the thread will ignore all warnings with level notes.
   Set by executing SET SQL_NOTES=1 */
#define OPTION_SQL_NOTES                (1L << 31)
+1 −1
Original line number Diff line number Diff line
@@ -5290,7 +5290,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
  /* If result table is small; use a heap */
  if (blob_count || using_unique_constraint ||
      (select_options & (OPTION_BIG_TABLES | SELECT_SMALL_RESULT)) ==
      OPTION_BIG_TABLES)
      OPTION_BIG_TABLES ||(select_options & TMP_TABLE_FORCE_MYISAM))
  {
    table->file=get_new_handler(table,table->db_type=DB_TYPE_MYISAM);
    if (group &&
+12 −4
Original line number Diff line number Diff line
@@ -297,14 +297,22 @@ int st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result,
      }
    }
    
    ulong create_options= first_select_in_union()->options | thd_arg->options |
                          TMP_TABLE_ALL_COLUMNS;
    /*
      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.
    */
    if (global_parameters->ftfunc_list->elements)
      create_options= create_options | TMP_TABLE_FORCE_MYISAM;

    union_result->tmp_table_param.field_count= types.elements;
    if (!(table= create_tmp_table(thd_arg,
				  &union_result->tmp_table_param, types,
				  (ORDER*) 0, (bool) union_distinct, 1, 
				  (first_select_in_union()->options |
				   thd_arg->options |
				   TMP_TABLE_ALL_COLUMNS),
				  HA_POS_ERROR, (char *) tmp_table_alias)))
                                  create_options, HA_POS_ERROR, 
                                  (char *) tmp_table_alias)))
      goto err;
    table->file->extra(HA_EXTRA_WRITE_CACHE);
    table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);