summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <holyfoot@deer.(none)>2005-12-10 18:02:36 +0400
committerunknown <holyfoot@deer.(none)>2005-12-10 18:02:36 +0400
commit48450d8a2b7a4e50d8642c1f6fb9415eac5f2e12 (patch)
tree96ccbb674d8c34c0478e7f113661dac8941cff38
parent5aeb69296a4e134f0215da3e6bcce4956b7d76ad (diff)
downloadmariadb-git-48450d8a2b7a4e50d8642c1f6fb9415eac5f2e12.tar.gz
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
-rw-r--r--mysql-test/r/analyze.result9
-rw-r--r--mysql-test/t/analyze.test9
-rw-r--r--sql/sql_table.cc13
3 files changed, 27 insertions, 4 deletions
diff --git a/mysql-test/r/analyze.result b/mysql-test/r/analyze.result
index 796b382f5d6..bded22c4859 100644
--- a/mysql-test/r/analyze.result
+++ b/mysql-test/r/analyze.result
@@ -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;
diff --git a/mysql-test/t/analyze.test b/mysql-test/t/analyze.test
index 5d653b65579..a4694c32d3c 100644
--- a/mysql-test/t/analyze.test
+++ b/mysql-test/t/analyze.test
@@ -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
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 294c59af90f..d582c36a4f4 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -2140,10 +2140,15 @@ send_result_message:
table->table->version=0; // Force close of table
else if (open_for_modify)
{
- 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);
+ 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);
}