mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#39372 "Smart" ALTER TABLE not so smart after all.
The problem was that PACK_KEYS and MAX_ROWS clause in ALTER TABLE did not trigger table reconstruction. The fix is to rebuild a table if PACK_KEYS or MAX_ROWS are specified. mysql-test/r/alter_table.result: test result mysql-test/t/alter_table.test: test case sql/sql_table.cc: The problem was that PACK_KEYS and MAX_ROWS clause in ALTER TABLE did not trigger table reconstruction. The fix is to rebuild a table if PACK_KEYS or MAX_ROWS are specified.
This commit is contained in:
@ -1222,4 +1222,22 @@ ALTER TABLE t1 CHANGE d c varchar(10);
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
create table t1(f1 int not null, f2 int not null, key (f1), key (f2));
|
||||
select index_length into @unpaked_keys_size from
|
||||
information_schema.tables where table_name='t1';
|
||||
alter table t1 pack_keys=1;
|
||||
select index_length into @paked_keys_size from
|
||||
information_schema.tables where table_name='t1';
|
||||
select (@unpaked_keys_size > @paked_keys_size);
|
||||
(@unpaked_keys_size > @paked_keys_size)
|
||||
1
|
||||
select max_data_length into @orig_max_data_length from
|
||||
information_schema.tables where table_name='t1';
|
||||
alter table t1 max_rows=100;
|
||||
select max_data_length into @changed_max_data_length from
|
||||
information_schema.tables where table_name='t1';
|
||||
select (@orig_max_data_length > @changed_max_data_length);
|
||||
(@orig_max_data_length > @changed_max_data_length)
|
||||
1
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
|
@ -947,4 +947,34 @@ ALTER TABLE t1 CHANGE d c varchar(10);
|
||||
--disable_info
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#39372 "Smart" ALTER TABLE not so smart after all.
|
||||
#
|
||||
create table t1(f1 int not null, f2 int not null, key (f1), key (f2));
|
||||
let $count= 50;
|
||||
--disable_query_log
|
||||
while ($count)
|
||||
{
|
||||
EVAL insert into t1 values (1,1),(1,1),(1,1),(1,1),(1,1);
|
||||
EVAL insert into t1 values (2,2),(2,2),(2,2),(2,2),(2,2);
|
||||
dec $count ;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
select index_length into @unpaked_keys_size from
|
||||
information_schema.tables where table_name='t1';
|
||||
alter table t1 pack_keys=1;
|
||||
select index_length into @paked_keys_size from
|
||||
information_schema.tables where table_name='t1';
|
||||
select (@unpaked_keys_size > @paked_keys_size);
|
||||
|
||||
select max_data_length into @orig_max_data_length from
|
||||
information_schema.tables where table_name='t1';
|
||||
alter table t1 max_rows=100;
|
||||
select max_data_length into @changed_max_data_length from
|
||||
information_schema.tables where table_name='t1';
|
||||
select (@orig_max_data_length > @changed_max_data_length);
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
Reference in New Issue
Block a user