mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
MDEV-19055 Failures with temporary tables and Aria
There was two separate problems: - Aria pagecache didn't properly handle re-reading of blocks that have given errors before (this triggered an assert) - temporary tables that where opened several times where not properly closed in ALTER, REPAIR or OPTIMIZE table Other things - Added a couple of asserts that will make it easier to find problems like this in the future.
This commit is contained in:
parent
2b660fb4c2
commit
c8b5fa4afc
7 changed files with 101 additions and 14 deletions
|
|
@ -47,3 +47,46 @@ t1 CREATE TABLE `t1` (
|
|||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
|
||||
CREATE TABLE t2 SELECT * FROM t1;
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# MDEV-19055 Assertion `(_my_thread_var())->thr_errno != 0' failed in pagecache_read
|
||||
#
|
||||
CREATE OR REPLACE TABLE t1 (x INT) ENGINE=Aria;
|
||||
CREATE TEMPORARY TABLE t2 (a TIME) ENGINE=Aria;
|
||||
ALTER TABLE t2 ADD b DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
|
||||
ALTER TABLE t2 ADD CHECK (b = 4);
|
||||
INSERT IGNORE INTO t2 () VALUES (),(),(),();
|
||||
ALTER IGNORE TABLE t2 ADD c INT;
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
count(a) sum(a)
|
||||
0 NULL
|
||||
DELETE FROM t2 ORDER BY c LIMIT 1;
|
||||
INSERT IGNORE INTO t2 SELECT * FROM t2;
|
||||
OPTIMIZE TABLE t2;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t2 optimize status OK
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
count(a) sum(a)
|
||||
0 NULL
|
||||
INSERT IGNORE INTO t2 SELECT * FROM t2;
|
||||
SET SQL_MODE= 'STRICT_ALL_TABLES';
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
count(a) sum(a)
|
||||
0 NULL
|
||||
ALTER TABLE t2 CHANGE IF EXISTS d c INT;
|
||||
ERROR 22007: Incorrect datetime value: '4'
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
count(a) sum(a)
|
||||
0 NULL
|
||||
ALTER IGNORE TABLE t2 ADD IF NOT EXISTS e BIT;
|
||||
ALTER TABLE t1 MODIFY IF EXISTS xx INT;
|
||||
INSERT IGNORE INTO t2 () VALUES (),(),(),();
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
count(a) sum(a)
|
||||
0 NULL
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
check table t2;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t2 check status OK
|
||||
DROP TABLE t1,t2;
|
||||
|
|
|
|||
|
|
@ -42,3 +42,38 @@ ALTER TABLE t1 ORDER BY unknown_column;
|
|||
SHOW CREATE TABLE t1;
|
||||
CREATE TABLE t2 SELECT * FROM t1;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-19055 Assertion `(_my_thread_var())->thr_errno != 0' failed in pagecache_read
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
CREATE OR REPLACE TABLE t1 (x INT) ENGINE=Aria;
|
||||
CREATE TEMPORARY TABLE t2 (a TIME) ENGINE=Aria;
|
||||
ALTER TABLE t2 ADD b DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
|
||||
ALTER TABLE t2 ADD CHECK (b = 4);
|
||||
INSERT IGNORE INTO t2 () VALUES (),(),(),();
|
||||
ALTER IGNORE TABLE t2 ADD c INT;
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
DELETE FROM t2 ORDER BY c LIMIT 1;
|
||||
INSERT IGNORE INTO t2 SELECT * FROM t2;
|
||||
OPTIMIZE TABLE t2;
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
INSERT IGNORE INTO t2 SELECT * FROM t2;
|
||||
SET SQL_MODE= 'STRICT_ALL_TABLES';
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
--error ER_TRUNCATED_WRONG_VALUE
|
||||
ALTER TABLE t2 CHANGE IF EXISTS d c INT;
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
ALTER IGNORE TABLE t2 ADD IF NOT EXISTS e BIT;
|
||||
ALTER TABLE t1 MODIFY IF EXISTS xx INT;
|
||||
INSERT IGNORE INTO t2 () VALUES (),(),(),();
|
||||
SELECT count(a),sum(a) FROM t2;
|
||||
--enable_warnings
|
||||
check table t1;
|
||||
check table t2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue