Commit 03e91ce3 authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-14641 Incompatible key or row definition between the MariaDB .frm file...

MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine

make sure that mysql_create_frm_image() and fast_alter_partition_table()
use the same code to derive HA_OPTION_PACK_RECORD from
create_info->row_type.
parent c1e5fef0
CREATE TABLE t1 (i INT) ENGINE=MYISAM
PARTITION BY LIST(i) (
PARTITION p0 VALUES IN (1),
PARTITION p1 VALUES IN (2)
);
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
ALTER TABLE t1 DROP PARTITION p1;
SELECT * FROM t1;
i
DROP TABLE t1;
#
# MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
#
--source include/have_partition.inc
CREATE TABLE t1 (i INT) ENGINE=MYISAM
PARTITION BY LIST(i) (
PARTITION p0 VALUES IN (1),
PARTITION p1 VALUES IN (2)
);
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
ALTER TABLE t1 DROP PARTITION p1;
SELECT * FROM t1;
# Cleanup
DROP TABLE t1;
...@@ -1666,6 +1666,13 @@ struct HA_CREATE_INFO ...@@ -1666,6 +1666,13 @@ struct HA_CREATE_INFO
used_fields|= (HA_CREATE_USED_CHARSET | HA_CREATE_USED_DEFAULT_CHARSET); used_fields|= (HA_CREATE_USED_CHARSET | HA_CREATE_USED_DEFAULT_CHARSET);
return false; return false;
} }
ulong table_options_with_row_type()
{
if (row_type == ROW_TYPE_DYNAMIC || row_type == ROW_TYPE_PAGE)
return table_options | HA_OPTION_PACK_RECORD;
else
return table_options;
}
}; };
......
...@@ -6834,10 +6834,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, ...@@ -6834,10 +6834,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table,
lpt->part_info= part_info; lpt->part_info= part_info;
lpt->alter_info= alter_info; lpt->alter_info= alter_info;
lpt->create_info= create_info; lpt->create_info= create_info;
lpt->db_options= create_info->table_options; lpt->db_options= create_info->table_options_with_row_type();
if (create_info->row_type != ROW_TYPE_FIXED &&
create_info->row_type != ROW_TYPE_DEFAULT)
lpt->db_options|= HA_OPTION_PACK_RECORD;
lpt->table= table; lpt->table= table;
lpt->key_info_buffer= 0; lpt->key_info_buffer= 0;
lpt->key_count= 0; lpt->key_count= 0;
......
...@@ -4405,10 +4405,7 @@ handler *mysql_create_frm_image(THD *thd, ...@@ -4405,10 +4405,7 @@ handler *mysql_create_frm_image(THD *thd,
set_table_default_charset(thd, create_info, (char*) db); set_table_default_charset(thd, create_info, (char*) db);
db_options= create_info->table_options; db_options= create_info->table_options_with_row_type();
if (create_info->row_type == ROW_TYPE_DYNAMIC ||
create_info->row_type == ROW_TYPE_PAGE)
db_options|= HA_OPTION_PACK_RECORD;
if (!(file= get_new_handler((TABLE_SHARE*) 0, thd->mem_root, if (!(file= get_new_handler((TABLE_SHARE*) 0, thd->mem_root,
create_info->db_type))) create_info->db_type)))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment