From 666efa1c43344a0b4dbe815e57333647d4d8f2b3 Mon Sep 17 00:00:00 2001
From: unknown <gluh@mysql.com/eagle.(none)>
Date: Wed, 17 Oct 2007 14:08:03 +0500
Subject: [PATCH] Bug#31381 Error in retrieving Data from INFORMATION_SCHEMA
 move 'table_collation' field filling outside of if(file) condition because
 this field has 'OPEN_FRM_ONLY' attribute

mysql-test/r/information_schema.result:
  test result
mysql-test/t/information_schema.test:
  test case
sql/sql_show.cc:
  move 'table_collation' field filling outside of if(file) condition
  because this field has 'OPEN_FRM_ONLY' attribute
---
 mysql-test/r/information_schema.result | 4 ++++
 mysql-test/t/information_schema.test   | 6 ++++++
 sql/sql_show.cc                        | 7 ++++---
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result
index f185522470..a33e3470d2 100644
--- a/mysql-test/r/information_schema.result
+++ b/mysql-test/r/information_schema.result
@@ -1560,4 +1560,8 @@ SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
 WHERE SCHEMA_NAME ='information_schema';
 SCHEMA_NAME
 information_schema
+SELECT TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES
+WHERE TABLE_SCHEMA='mysql' and TABLE_NAME= 'db';
+TABLE_COLLATION
+utf8_bin
 End of 5.1 tests.
diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test
index 96d510e207..6d6efd9939 100644
--- a/mysql-test/t/information_schema.test
+++ b/mysql-test/t/information_schema.test
@@ -1201,5 +1201,11 @@ DROP VIEW v1;
 #
 SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
 WHERE SCHEMA_NAME ='information_schema';
+                                                                                                 
+#
+# Bug#31381 Error in retrieving Data from INFORMATION_SCHEMA
+#
+SELECT TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES
+WHERE TABLE_SCHEMA='mysql' and TABLE_NAME= 'db';
 
 --echo End of 5.1 tests.
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index cc0cda4232..6104efd776 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -3487,6 +3487,10 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
                             (ptr == option_buff ? 0 : 
                              (uint) (ptr-option_buff)-1), cs);
 
+    tmp_buff= (share->table_charset ?
+               share->table_charset->name : "default");
+    table->field[17]->store(tmp_buff, strlen(tmp_buff), cs);
+
     if (share->comment.str)
       table->field[20]->store(share->comment.str, share->comment.length, cs);
 
@@ -3564,9 +3568,6 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
         table->field[16]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
         table->field[16]->set_notnull();
       }
-      tmp_buff= (share->table_charset ?
-                 share->table_charset->name : "default");
-      table->field[17]->store(tmp_buff, strlen(tmp_buff), cs);
       if (file->ha_table_flags() & (ulong) HA_HAS_CHECKSUM)
       {
         table->field[18]->store((longlong) file->checksum(), TRUE);
-- 
2.30.9