mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
4a1a64ec53
Problem: ALTER TABLE ADD INDEX may lead to table copying if there's numeric field(s) with non-default display width modificator specified. Fix: compare numeric field's storage lenghts when we decide whether they can be considered 'equal' for table alteration purposes.
43 lines
1.2 KiB
Text
43 lines
1.2 KiB
Text
DROP TABLE IF EXISTS t1;
|
|
Warnings:
|
|
Note 1051 Unknown table 't1'
|
|
CREATE TABLE t1 (
|
|
a varchar(32) character set utf8 collate utf8_bin NOT NULL,
|
|
b varchar(32) character set utf8 collate utf8_bin NOT NULL )
|
|
ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
INSERT INTO t1 VALUES
|
|
('AAAAAAAAAA','AAAAAAAAAA'), ('AAAAAAAAAB','AAAAAAAAAB '),
|
|
('AAAAAAAAAB','AAAAAAAAAB'), ('AAAAAAAAAC','AAAAAAAAAC'),
|
|
('AAAAAAAAAD','AAAAAAAAAD'), ('AAAAAAAAAE','AAAAAAAAAE'),
|
|
('AAAAAAAAAF','AAAAAAAAAF'), ('AAAAAAAAAG','AAAAAAAAAG'),
|
|
('AAAAAAAAAH','AAAAAAAAAH'), ('AAAAAAAAAI','AAAAAAAAAI'),
|
|
('AAAAAAAAAJ','AAAAAAAAAJ'), ('AAAAAAAAAK','AAAAAAAAAK');
|
|
set tmp_table_size=1024;
|
|
set session debug="d,raise_error";
|
|
SELECT MAX(a) FROM t1 GROUP BY a,b;
|
|
ERROR 23000: Can't write; duplicate key in table 'tmp_table'
|
|
set tmp_table_size=default;
|
|
DROP TABLE t1;
|
|
#
|
|
# Bug #50946: fast index creation still seems to copy the table
|
|
#
|
|
CREATE TABLE t1 (a INT(100) NOT NULL);
|
|
INSERT INTO t1 VALUES (1), (0), (2);
|
|
SET SESSION debug='+d,alter_table_only_index_change';
|
|
ALTER TABLE t1 ADD INDEX a(a);
|
|
SET SESSION debug=DEFAULT;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(100) NOT NULL,
|
|
KEY `a` (`a`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
SELECT * FROM t1;
|
|
a
|
|
0
|
|
1
|
|
2
|
|
DROP TABLE t1;
|
|
#
|
|
# End of 5.1 tests
|
|
#
|