Commit 1b8749f7 authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 10.2 into 10.3

parents 4513de31 bd1d152d
......@@ -3207,6 +3207,38 @@ a
1
3
drop table t1;
#
# MDEV-16086: tmp table for CTE is created as ARIA tables
#
CREATE TABLE t1 (
Id int(11) not null AUTO_INCREMENT,
Parent varchar(15) not null,
Child varchar(15) not null,
PRIMARY KEY (Id)
) ENGINE = MyISAM;
INSERT INTO t1 (Parent, Child) VALUES
('123', '456'),('456', '789'),('321', '654'),('654', '987');
WITH RECURSIVE cte AS
( SELECT b.Parent,
b.Child,
CAST(CONCAT(b.Child,',') AS CHAR(513)) Path
FROM t1 b
LEFT OUTER JOIN t1 bc ON b.Child = bc.Parent
WHERE bc.Id IS NULL
UNION ALL SELECT c.Parent,
c.Child,
CONCAT(p.Path,c.Child,',') Path
FROM t1 c
INNER JOIN cte p ON c.Child = p.Parent)
SELECT *
FROM cte
ORDER BY Path;
Parent Child Path
456 789 789,
123 456 789,456,
654 987 987,
321 654 987,654,
DROP TABLE t1;
# Start of 10.3 tests
#
# MDEV-14217 [db crash] Recursive CTE when SELECT includes new field
......
......@@ -2215,6 +2215,38 @@ select * from qn;
drop table t1;
--echo #
--echo # MDEV-16086: tmp table for CTE is created as ARIA tables
--echo #
CREATE TABLE t1 (
Id int(11) not null AUTO_INCREMENT,
Parent varchar(15) not null,
Child varchar(15) not null,
PRIMARY KEY (Id)
) ENGINE = MyISAM;
INSERT INTO t1 (Parent, Child) VALUES
('123', '456'),('456', '789'),('321', '654'),('654', '987');
WITH RECURSIVE cte AS
( SELECT b.Parent,
b.Child,
CAST(CONCAT(b.Child,',') AS CHAR(513)) Path
FROM t1 b
LEFT OUTER JOIN t1 bc ON b.Child = bc.Parent
WHERE bc.Id IS NULL
UNION ALL SELECT c.Parent,
c.Child,
CONCAT(p.Path,c.Child,',') Path
FROM t1 c
INNER JOIN cte p ON c.Child = p.Parent)
SELECT *
FROM cte
ORDER BY Path;
DROP TABLE t1;
--echo # Start of 10.3 tests
--echo #
......
......@@ -638,3 +638,15 @@ t1 CREATE TEMPORARY TABLE `t1` (
`j` int(11) DEFAULT NULL,
PRIMARY KEY (`i`) KEY_BLOCK_SIZE=8
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
DROP TABLE t1;
CREATE TEMPORARY TABLE t1(f1 INT, KEY(f1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(NULL);
UPDATE t1 SET f1 = 0;
START TRANSACTION;
UPDATE t1 SET f1 = 4;
UPDATE t1 SET f1 = 0;
ROLLBACK;
SELECT * FROM t1;
f1
0
DROP TABLE t1;
......@@ -464,3 +464,14 @@ ALTER TABLE t1 ROW_FORMAT = DYNAMIC;
set innodb_strict_mode = ON;
ALTER TABLE t1 ADD COLUMN j INT;
SHOW CREATE TABLE t1;
DROP TABLE t1;
CREATE TEMPORARY TABLE t1(f1 INT, KEY(f1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(NULL);
UPDATE t1 SET f1 = 0;
START TRANSACTION;
UPDATE t1 SET f1 = 4;
UPDATE t1 SET f1 = 0;
ROLLBACK;
SELECT * FROM t1;
DROP TABLE t1;
......@@ -540,8 +540,8 @@ row_undo_mod_del_mark_or_remove_sec_low(
/* For temporary table, we can skip to check older version of
clustered index entry, because there is no MVCC or purge. */
if (!node->table->is_temporary()
&& row_vers_old_has_index_entry(
if (node->table->is_temporary()
|| row_vers_old_has_index_entry(
FALSE, btr_pcur_get_rec(&node->pcur),
&mtr_vers, index, entry, 0, 0)) {
err = btr_cur_del_mark_set_sec_rec(BTR_NO_LOCKING_FLAG,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment