mirror of
https://github.com/MariaDB/server.git
synced 2026-05-08 08:04:29 +02:00
InnoDB: Make SHOW TABLE STATUS report Row_format=Compact and
Row_format=Redundant sql/ha_innodb.cc: Implement get_row_type() sql/ha_innodb.h: Declare get_row_type() sql/handler.h: Declare get_row_type() sql/sql_show.cc: get_schema_tables_record(): Primarily invoke handler::get_row_type() in order to determine the row type within the storage engine. Secondarily use the old method of examining the HA_OPTION flags.
This commit is contained in:
parent
b0cc9d7ad7
commit
198578d682
4 changed files with 56 additions and 4 deletions
|
|
@ -1714,6 +1714,26 @@ innobase_close_connection(
|
|||
** InnoDB database tables
|
||||
*****************************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
Get the record format from the data dictionary. */
|
||||
enum row_type
|
||||
ha_innobase::get_row_type() const
|
||||
/*=============================*/
|
||||
/* out: ROW_TYPE_REDUNDANT or ROW_TYPE_COMPACT */
|
||||
{
|
||||
row_prebuilt_t* prebuilt = (row_prebuilt_t*) innobase_prebuilt;
|
||||
|
||||
if (prebuilt && prebuilt->table) {
|
||||
if (prebuilt->table->comp) {
|
||||
return(ROW_TYPE_COMPACT);
|
||||
} else {
|
||||
return(ROW_TYPE_REDUNDANT);
|
||||
}
|
||||
}
|
||||
ut_ad(0);
|
||||
return(ROW_TYPE_NOT_USED);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Gives the file extension of an InnoDB single-table tablespace. */
|
||||
|
||||
|
|
|
|||
|
|
@ -96,6 +96,11 @@ class ha_innobase: public handler
|
|||
{
|
||||
}
|
||||
~ha_innobase() {}
|
||||
/*
|
||||
Get the row type from the storage engine. If this method returns
|
||||
ROW_TYPE_NOT_USED, the information in HA_CREATE_INFO should be used.
|
||||
*/
|
||||
enum row_type get_row_type() const;
|
||||
|
||||
const char* table_type() const { return("InnoDB");}
|
||||
const char *index_type(uint key_number) { return "BTREE"; }
|
||||
|
|
|
|||
|
|
@ -385,6 +385,12 @@ public:
|
|||
virtual ha_rows estimate_rows_upper_bound()
|
||||
{ return records+EXTRA_RECORDS; }
|
||||
|
||||
/*
|
||||
Get the row type from the storage engine. If this method returns
|
||||
ROW_TYPE_NOT_USED, the information in HA_CREATE_INFO should be used.
|
||||
*/
|
||||
virtual enum row_type get_row_type() const { return ROW_TYPE_NOT_USED; }
|
||||
|
||||
virtual const char *index_type(uint key_number) { DBUG_ASSERT(0); return "";}
|
||||
|
||||
int ha_index_init(uint idx)
|
||||
|
|
|
|||
|
|
@ -2046,10 +2046,31 @@ static int get_schema_tables_record(THD *thd, struct st_table_list *tables,
|
|||
tmp_buff= file->table_type();
|
||||
table->field[4]->store(tmp_buff, strlen(tmp_buff), cs);
|
||||
table->field[5]->store((longlong) share->frm_version);
|
||||
enum row_type row_type = file->get_row_type();
|
||||
switch (row_type) {
|
||||
case ROW_TYPE_NOT_USED:
|
||||
case ROW_TYPE_DEFAULT:
|
||||
tmp_buff= ((share->db_options_in_use &
|
||||
HA_OPTION_COMPRESS_RECORD) ? "Compressed" :
|
||||
(share->db_options_in_use & HA_OPTION_PACK_RECORD) ?
|
||||
"Dynamic" : "Fixed");
|
||||
break;
|
||||
case ROW_TYPE_FIXED:
|
||||
tmp_buff= "Fixed";
|
||||
break;
|
||||
case ROW_TYPE_DYNAMIC:
|
||||
tmp_buff= "Dynamic";
|
||||
break;
|
||||
case ROW_TYPE_COMPRESSED:
|
||||
tmp_buff= "Compressed";
|
||||
break;
|
||||
case ROW_TYPE_REDUNDANT:
|
||||
tmp_buff= "Redundant";
|
||||
break;
|
||||
case ROW_TYPE_COMPACT:
|
||||
tmp_buff= "Compact";
|
||||
break;
|
||||
}
|
||||
table->field[6]->store(tmp_buff, strlen(tmp_buff), cs);
|
||||
if (!tables->schema_table)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue