Commit 48450d8a authored by unknown's avatar unknown
Browse files

Fix for bug #15225 (ANALYZE temporary has no effect)


mysql-test/r/analyze.result:
  test result fixed
mysql-test/t/analyze.test:
  test case added
sql/sql_table.cc:
  we don't need to remove temporary table from the cache,
  but we need to reload it's info
parent 5aeb6929
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -37,3 +37,12 @@ Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_
execute stmt1;
Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
deallocate prepare stmt1;
create temporary table t1(a int, index(a));
insert into t1 values('1'),('2'),('3'),('4'),('5');
analyze table t1;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	OK
show index from t1;
Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment
t1	1	a	1	a	A	5	NULL	NULL	YES	BTREE	
drop table t1;
+9 −0
Original line number Diff line number Diff line
@@ -48,4 +48,13 @@ execute stmt1;
execute stmt1;
deallocate prepare stmt1;

#
# bug#15225 (ANALYZE temporary has no effect)
#
create temporary table t1(a int, index(a));
insert into t1 values('1'),('2'),('3'),('4'),('5');
analyze table t1;
show index from t1;
drop table t1;

# End of 4.1 tests
+9 −4
Original line number Diff line number Diff line
@@ -2139,11 +2139,16 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
    if (fatal_error)
      table->table->version=0;			// Force close of table
    else if (open_for_modify)
    {
      if (table->table->tmp_table)
        table->table->file->info(HA_STATUS_CONST);
      else
      {
        pthread_mutex_lock(&LOCK_open);
        remove_table_from_cache(thd, table->table->table_cache_key,
                                table->table->real_name, RTFC_NO_FLAG);
        pthread_mutex_unlock(&LOCK_open);
      }
      /* May be something modified consequently we have to invalidate cache */
      query_cache_invalidate3(thd, table->table, 0);
    }