Commit b036b6b5 authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-13937 Aria engine: Internal Error 160 after partition handling

Partition wasn't setting HA_OPTION_PACK_RECORD on ALTER TABLE
if the row format was PAGE.

(so one bit in the null bitmap was reserved for a deleted bit -
see make_empty_rec - and all actual null bits were one off)
parent 19a702a8
create table t1 (
pk bigint not null auto_increment,
dt datetime default null,
unique (pk, dt)
) engine=aria row_format=dynamic
partition by range columns(dt) (
partition `p20171231` values less than ('2017-12-31'),
partition `p20181231` values less than ('2018-12-31')
);
insert into t1 values (1,'2017-09-28 15:12:00');
select * from t1;
pk dt
1 2017-09-28 15:12:00
alter table t1 drop partition p20181231;
select * from t1;
pk dt
1 2017-09-28 15:12:00
drop table t1;
#
# MDEV-13937 Aria engine: Internal Error 160 after partition handling
#
source include/have_partition.inc;
create table t1 (
pk bigint not null auto_increment,
dt datetime default null,
unique (pk, dt)
) engine=aria row_format=dynamic
partition by range columns(dt) (
partition `p20171231` values less than ('2017-12-31'),
partition `p20181231` values less than ('2018-12-31')
);
insert into t1 values (1,'2017-09-28 15:12:00');
select * from t1;
alter table t1 drop partition p20181231;
select * from t1;
drop table t1;
......@@ -6672,7 +6672,8 @@ uint fast_alter_partition_table(THD *thd, TABLE *table,
lpt->alter_info= alter_info;
lpt->create_info= create_info;
lpt->db_options= create_info->table_options;
if (create_info->row_type == ROW_TYPE_DYNAMIC)
if (create_info->row_type != ROW_TYPE_FIXED &&
create_info->row_type != ROW_TYPE_DEFAULT)
lpt->db_options|= HA_OPTION_PACK_RECORD;
lpt->table= fast_alter_table;
lpt->old_table= table;
......
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