1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#
# Bug 32529561 - CRASH IF ROLLBACK A TRANSACTION THAT MODIFIES GENERATED AND INDEXED COLUMN
#
# We are only interested in validating that the following commands do not crash the server
# Test with virtual generated columns
CREATE TABLE bug32529561_v (
`longstr` blob NOT NULL,
`gen_1` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)),
`gen_2` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)),
`gen_3` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)),
`gen_4` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)),
`gen_5` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)),
KEY `key_5` (`gen_5`)
);
insert into bug32529561_v (longstr) values ('123');
select * from bug32529561_v;
begin;
update bug32529561_v set longstr = concat('456', repeat('a', 9000));
rollback;
select * from bug32529561_v;
# Test with stored generated columns
CREATE TABLE bug32529561_s (
`longstr` blob NOT NULL,
`gen_1` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)) stored,
`gen_2` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)) stored,
`gen_3` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)) stored,
`gen_4` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)) stored,
`gen_5` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)) stored,
KEY `key_5` (`gen_5`)
);
insert into bug32529561_s (longstr) values ('123');
select * from bug32529561_s;
begin;
update bug32529561_s set longstr = concat('456', repeat('a', 9000));
rollback;
select * from bug32529561_s;
# Test with mixed generated columns
CREATE TABLE bug32529561_m (
`longstr` blob NOT NULL,
`gen_1` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)) stored,
`gen_2` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)),
`gen_3` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)) stored,
`gen_4` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)),
`gen_5` varchar(3) GENERATED ALWAYS AS (left(`longstr`, 3)) stored,
KEY `key_5` (`gen_5`)
);
insert into bug32529561_m (longstr) values ('123');
select * from bug32529561_m;
begin;
update bug32529561_m set longstr = concat('456', repeat('a', 9000));
rollback;
select * from bug32529561_m;
# Cleanup
DROP TABLE bug32529561_v;
DROP TABLE bug32529561_s;
DROP TABLE bug32529561_m;
|