polardbxengine/mysql-test/suite/innodb/t/undo.test

44 lines
1.5 KiB
Plaintext

--source include/have_innodb_max_16k.inc
let $ps16 = `SELECT truncate(@@innodb_page_size / 16, 0)`;
let $ps316 = `SELECT truncate(3 * @@innodb_page_size / 16, 0)`;
# Test creating too big undo log record for a table.
--disable_query_log
eval CREATE TABLE t0 (a blob, b blob, c blob, d blob, e blob, f blob,
index(a($ps316)), index(b($ps16)), index(c($ps16)),
index(d($ps16)), index(e($ps16)), index(f($ps16))) row_format=dynamic;
--enable_query_log
BEGIN;
INSERT INTO t0 VALUES(
repeat('a',10000),repeat('b',10000),repeat('c',10000),
repeat('d',10000),repeat('e',10000),repeat('f',10000));
--error ER_UNDO_RECORD_TOO_BIG
UPDATE t0 SET a=substr(a,9999),b=substr(b,9999),c=substr(c,9999),
d=substr(d,9999),e=substr(e,9999),f=substr(f,9999);
UPDATE t0 SET a=substr(a,9999);
SELECT LENGTH(a) FROM t0;
ROLLBACK;
SELECT * FROM t0;
DROP TABLE t0;
--disable_query_log
eval CREATE TEMPORARY TABLE t0 (a blob, b blob, c blob, d blob, e blob, f blob,
index(a($ps316)), index(b($ps16)), index(c($ps16)),
index(d($ps16)), index(e($ps16)), index(f($ps16))) row_format=dynamic;
--enable_query_log
BEGIN;
INSERT INTO t0 VALUES(
repeat('a',10000),repeat('b',10000),repeat('c',10000),
repeat('d',10000),repeat('e',10000),repeat('f',10000));
--error ER_UNDO_RECORD_TOO_BIG
UPDATE t0 SET a=substr(a,9999),b=substr(b,9999),c=substr(c,9999),
d=substr(d,9999),e=substr(e,9999),f=substr(f,9999);
UPDATE t0 SET a=substr(a,9999);
SELECT LENGTH(a) FROM t0;
ROLLBACK;
SELECT * FROM t0;
DROP TABLE t0;