diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result
index 64e2434521e9db9d21fd4b3a5ec48a60d1d499c4..3f1e94c9e5f9e92031faffdc948a1f4f29f3c90c 100644
--- a/mysql-test/r/information_schema.result
+++ b/mysql-test/r/information_schema.result
@@ -585,8 +585,8 @@ select TABLE_NAME,TABLE_TYPE,ENGINE
 from information_schema.tables 
 where table_schema='information_schema' limit 2;
 TABLE_NAME	TABLE_TYPE	ENGINE
-CHARACTER_SETS	TEMPORARY	MEMORY
-COLLATIONS	TEMPORARY	MEMORY
+CHARACTER_SETS	SYSTEM VIEW	MEMORY
+COLLATIONS	SYSTEM VIEW	MEMORY
 show tables from information_schema like "T%";
 Tables_in_information_schema (T%)
 TABLES
@@ -598,10 +598,10 @@ ERROR HY000: Can't create database 'information_schema'; database exists
 use information_schema;
 show full tables like "T%";
 Tables_in_information_schema (T%)	Table_type
-TABLES	TEMPORARY
-TABLE_CONSTRAINTS	TEMPORARY
-TABLE_PRIVILEGES	TEMPORARY
-TRIGGERS	TEMPORARY
+TABLES	SYSTEM VIEW
+TABLE_CONSTRAINTS	SYSTEM VIEW
+TABLE_PRIVILEGES	SYSTEM VIEW
+TRIGGERS	SYSTEM VIEW
 create table t1(a int);
 ERROR 42S02: Unknown table 't1' in information_schema
 use test;
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 3bb349d7c292f02f8d52ef98fdaec17a0bb9d634..958971d65f1230c5a2daedadb625b5e83550dbfc 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -2052,7 +2052,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
             {
               if (with_i_schema)
               {
-                table->field[3]->store("TEMPORARY", 9, system_charset_info);
+                table->field[3]->store("SYSTEM VIEW", 11, system_charset_info);
               }
               else
               {
@@ -2220,7 +2220,9 @@ static int get_schema_tables_record(THD *thd, struct st_table_list *tables,
 
     file->info(HA_STATUS_VARIABLE | HA_STATUS_TIME | HA_STATUS_AUTO |
                HA_STATUS_NO_LOCK);
-    if (share->tmp_table == TMP_TABLE)
+    if (share->tmp_table == SYSTEM_TMP_TABLE)
+      table->field[3]->store("SYSTEM VIEW", 11, cs);
+    else if (share->tmp_table)
       table->field[3]->store("TEMPORARY", 9, cs);
     else
       table->field[3]->store("BASE TABLE", 10, cs);
@@ -3560,7 +3562,7 @@ int mysql_schema_table(THD *thd, LEX *lex, TABLE_LIST *table_list)
   {
     DBUG_RETURN(1);
   }
-  table->s->tmp_table= TMP_TABLE;
+  table->s->tmp_table= SYSTEM_TMP_TABLE;
   table->grant.privilege= SELECT_ACL;
   /*
     This test is necessary to make
diff --git a/sql/table.h b/sql/table.h
index c0e4ad4c150e3ed677faccd5991eec4e274c0acc..5bbf57460580464512f5c4a40bba83d1befbfe76 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -49,7 +49,8 @@ typedef struct st_grant_info
   ulong want_privilege;
 } GRANT_INFO;
 
-enum tmp_table_type {NO_TMP_TABLE=0, TMP_TABLE=1, TRANSACTIONAL_TMP_TABLE=2};
+enum tmp_table_type {NO_TMP_TABLE=0, TMP_TABLE=1, TRANSACTIONAL_TMP_TABLE=2,
+                     SYSTEM_TMP_TABLE=3};
 
 enum frm_type_enum
 {