summaryrefslogtreecommitdiff
path: root/sql/sql_show.cc
diff options
context:
space:
mode:
authorMagnus Blåudd <magnus.blaudd@oracle.com>2011-03-04 09:41:29 +0100
committerMagnus Blåudd <magnus.blaudd@oracle.com>2011-03-04 09:41:29 +0100
commit6c85d6535781870e9d35a0f00ace9ef42edf3e90 (patch)
tree91078f8e09a7d3bf446e8c6c1896bde1a0a20ad7 /sql/sql_show.cc
parent44b41979bd4767ccffa6450ccfcf331d3bad7b9b (diff)
downloadmariadb-git-6c85d6535781870e9d35a0f00ace9ef42edf3e90.tar.gz
Bug#60111 storage type for table not saved in .frm
- Add new "format section" in extra data segment with additional table and column properties. This was originally introduced in 5.1.20 based MySQL Cluster - Remove hardcoded STORAGE DISK for table and instead output the real storage format used. Keep both TABLESPACE and STORAGE inside same version guard. - Implement default version of handler::get_tablespace_name() since tablespace is now available in share and it's unnecessary for each handler to implement. (the function could actually be removed totally now). - Add test for combinations of TABLESPACE and STORAGE with CREATE TABLE and ALTER TABLE - Add test to show that 5.5 now can read a .frm file created by MySQL Cluster 7.0.22. Although it does not yet show the column level attributes, they are read.
Diffstat (limited to 'sql/sql_show.cc')
-rw-r--r--sql/sql_show.cc25
1 files changed, 16 insertions, 9 deletions
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index abef175ab55..c3dda3072f2 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -1379,17 +1379,24 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
if (!(thd->variables.sql_mode & MODE_NO_TABLE_OPTIONS) && !foreign_db_mode)
{
show_table_options= TRUE;
- /*
- Get possible table space definitions and append them
- to the CREATE TABLE statement
- */
- if ((for_str= file->get_tablespace_name(thd,0,0)))
+ /* TABLESPACE and STORAGE */
+ if (share->tablespace ||
+ share->default_storage_media != HA_SM_DEFAULT)
{
- packet->append(STRING_WITH_LEN(" /*!50100 TABLESPACE "));
- packet->append(for_str, strlen(for_str));
- packet->append(STRING_WITH_LEN(" STORAGE DISK */"));
- my_free(for_str);
+ packet->append(STRING_WITH_LEN(" /*!50100"));
+ if (share->tablespace)
+ {
+ packet->append(STRING_WITH_LEN(" TABLESPACE "));
+ packet->append(share->tablespace, strlen(share->tablespace));
+ }
+
+ if (share->default_storage_media == HA_SM_DISK)
+ packet->append(STRING_WITH_LEN(" STORAGE DISK"));
+ if (share->default_storage_media == HA_SM_MEMORY)
+ packet->append(STRING_WITH_LEN(" STORAGE MEMORY"));
+
+ packet->append(STRING_WITH_LEN(" */"));
}
/*