Skip to content

Commit

Permalink
MDEV-22686 # Assertion `trn' failed in ha_maria::start_stmt
Browse files Browse the repository at this point in the history
Calling stmt rollback closed the transaction, which caused the above issue
  • Loading branch information
montywi committed May 24, 2020
1 parent 6532b10 commit 59f0119
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 1 deletion.
29 changes: 29 additions & 0 deletions mysql-test/suite/maria/create.result
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,32 @@ select * from t2;
f1 f2
3 qux
DROP TABLE t1, t2;
CREATE TABLE t1 (a INT) ENGINE=Aria;
INSERT INTO t1 VALUES (1);
CREATE TABLE t2 (b INT);
CREATE OR REPLACE TABLE t2 AS SELECT * FROM t1;
SELECT * from t1;
a
1
SELECT * from t2;
a
1
BEGIN;
CREATE OR REPLACE TABLE t2 AS SELECT * FROM t1;
SELECT * from t2;
a
1
COMMIT;
LOCK TABLES t1 read, t2 write;
CREATE OR REPLACE TABLE t2 AS SELECT * FROM t1;
SELECT * from t2;
a
1
UNLOCK TABLES;
CREATE TABLE t3 (a INT) engine=Aria;
INSERT INTO t3 values(2);
CREATE OR REPLACE TABLE t2 AS SELECT t1.a,t3.a as b FROM t1,t3;
SELECT * from t2;
a b
1 2
DROP TABLE t1, t2, t3;
35 changes: 35 additions & 0 deletions mysql-test/suite/maria/create.test
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,38 @@ INSERT IGNORE INTO t1 VALUES (1),(2);
CREATE OR REPLACE TABLE t2 ENGINE=Aria AS SELECT SUM(a) AS f1, IFNULL( 'qux', ExtractValue( 'foo', 'bar' ) ) AS f2 FROM t1;
select * from t2;
DROP TABLE t1, t2;

#
# MDEV-22686 # Assertion `trn' failed in ha_maria::start_stmt
# ASAN heap-after-free in maria_status
#

CREATE TABLE t1 (a INT) ENGINE=Aria;
INSERT INTO t1 VALUES (1);
CREATE TABLE t2 (b INT);
CREATE OR REPLACE TABLE t2 AS SELECT * FROM t1;
SELECT * from t1;
SELECT * from t2;

# Check also BEGIN/COMMIT

BEGIN;
CREATE OR REPLACE TABLE t2 AS SELECT * FROM t1;
SELECT * from t2;
COMMIT;

# Check also LOCK TABLES

LOCK TABLES t1 read, t2 write;
CREATE OR REPLACE TABLE t2 AS SELECT * FROM t1;
SELECT * from t2;
UNLOCK TABLES;

# Check with 3 tables
CREATE TABLE t3 (a INT) engine=Aria;
INSERT INTO t3 values(2);

CREATE OR REPLACE TABLE t2 AS SELECT t1.a,t3.a as b FROM t1,t3;
SELECT * from t2;

DROP TABLE t1, t2, t3;
5 changes: 4 additions & 1 deletion storage/maria/ha_maria.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3450,7 +3450,10 @@ static int maria_rollback(handlerton *hton, THD *thd, bool all)
ER_DATA_WAS_COMMITED_UNDER_ROLLBACK,
ER_THD(thd, ER_DATA_WAS_COMMITED_UNDER_ROLLBACK),
"Aria");
DBUG_RETURN(maria_commit(hton, thd, all));
if (all)
DBUG_RETURN(maria_commit(hton, thd, all));
/* Statement rollbacks are ignored. Commit will happen in external_lock */
DBUG_RETURN(0);
}

#else
Expand Down

0 comments on commit 59f0119

Please sign in to comment.