mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge branch '10.7' into 10.8
This commit is contained in:
@ -4972,8 +4972,153 @@ a
|
||||
0
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-12325 Unexpected data type and truncation when using CTE
|
||||
#
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT, mid INT, name TEXT
|
||||
);
|
||||
INSERT INTO t1 VALUES (0,NULL,'Name'),(1,0,'Name1'),(2,0,'Name2'),(11,1,'Name11'),(12,1,'Name12');
|
||||
WITH RECURSIVE
|
||||
cteReports (level, id, mid, name) AS
|
||||
(
|
||||
SELECT 1, id, mid, name FROM t1 WHERE mid IS NULL
|
||||
UNION ALL
|
||||
SELECT r.level + 1, e.id, e.mid + 1000000000000, e.name FROM t1 e
|
||||
INNER JOIN cteReports r ON e.mid = r.id
|
||||
)
|
||||
SELECT
|
||||
level, id, mid, name,
|
||||
(SELECT name FROM t1 WHERE id= cteReports.mid) AS mname
|
||||
FROM cteReports ORDER BY level, mid;
|
||||
ERROR 22003: Out of range value for column 'mid' at row 2
|
||||
create table t2 as WITH RECURSIVE
|
||||
cteReports (level, id, mid, name) AS
|
||||
(
|
||||
SELECT 1, id, mid, name FROM t1 WHERE mid IS NULL
|
||||
UNION ALL
|
||||
SELECT r.level + 1, e.id, e.mid + 1000000000000, e.name FROM t1 e
|
||||
INNER JOIN cteReports r ON e.mid = r.id
|
||||
)
|
||||
SELECT
|
||||
level, id, mid, name,
|
||||
(SELECT name FROM t1 WHERE id= cteReports.mid) AS mname
|
||||
FROM cteReports ORDER BY level, mid;;
|
||||
ERROR 22003: Out of range value for column 'mid' at row 2
|
||||
create table t2 ignore as WITH RECURSIVE
|
||||
cteReports (level, id, mid, name) AS
|
||||
(
|
||||
SELECT 1, id, mid, name FROM t1 WHERE mid IS NULL
|
||||
UNION ALL
|
||||
SELECT r.level + 1, e.id, e.mid + 1000000000000, e.name FROM t1 e
|
||||
INNER JOIN cteReports r ON e.mid = r.id
|
||||
)
|
||||
SELECT
|
||||
level, id, mid, name,
|
||||
(SELECT name FROM t1 WHERE id= cteReports.mid) AS mname
|
||||
FROM cteReports ORDER BY level, mid;;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'mid' at row 2
|
||||
Warning 1264 Out of range value for column 'mid' at row 3
|
||||
Warning 1264 Out of range value for column 'mid' at row 4
|
||||
Warning 1264 Out of range value for column 'mid' at row 5
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`level` int(1) DEFAULT NULL,
|
||||
`id` int(11) DEFAULT NULL,
|
||||
`mid` int(11) DEFAULT NULL,
|
||||
`name` text DEFAULT NULL,
|
||||
`mname` text DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
insert into t2 WITH RECURSIVE
|
||||
cteReports (level, id, mid, name) AS
|
||||
(
|
||||
SELECT 1, id, mid, name FROM t1 WHERE mid IS NULL
|
||||
UNION ALL
|
||||
SELECT r.level + 1, e.id, e.mid + 1000000000000, e.name FROM t1 e
|
||||
INNER JOIN cteReports r ON e.mid = r.id
|
||||
)
|
||||
SELECT
|
||||
level, id, mid, name,
|
||||
(SELECT name FROM t1 WHERE id= cteReports.mid) AS mname
|
||||
FROM cteReports ORDER BY level, mid;;
|
||||
ERROR 22003: Out of range value for column 'mid' at row 2
|
||||
insert ignore into t2 WITH RECURSIVE
|
||||
cteReports (level, id, mid, name) AS
|
||||
(
|
||||
SELECT 1, id, mid, name FROM t1 WHERE mid IS NULL
|
||||
UNION ALL
|
||||
SELECT r.level + 1, e.id, e.mid + 1000000000000, e.name FROM t1 e
|
||||
INNER JOIN cteReports r ON e.mid = r.id
|
||||
)
|
||||
SELECT
|
||||
level, id, mid, name,
|
||||
(SELECT name FROM t1 WHERE id= cteReports.mid) AS mname
|
||||
FROM cteReports ORDER BY level, mid;;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'mid' at row 2
|
||||
Warning 1264 Out of range value for column 'mid' at row 3
|
||||
Warning 1264 Out of range value for column 'mid' at row 4
|
||||
Warning 1264 Out of range value for column 'mid' at row 5
|
||||
drop table t2;
|
||||
set @@sql_mode="";
|
||||
WITH RECURSIVE
|
||||
cteReports (level, id, mid, name) AS
|
||||
(
|
||||
SELECT 1, id, mid, name FROM t1 WHERE mid IS NULL
|
||||
UNION ALL
|
||||
SELECT r.level + 1, e.id, e.mid + 1000000000000, e.name FROM t1 e
|
||||
INNER JOIN cteReports r ON e.mid = r.id
|
||||
)
|
||||
SELECT
|
||||
level, id, mid, name,
|
||||
(SELECT name FROM t1 WHERE id= cteReports.mid) AS mname
|
||||
FROM cteReports ORDER BY level, mid;
|
||||
level id mid name mname
|
||||
1 0 NULL Name NULL
|
||||
2 1 2147483647 Name1 NULL
|
||||
2 2 2147483647 Name2 NULL
|
||||
3 11 2147483647 Name11 NULL
|
||||
3 12 2147483647 Name12 NULL
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'mid' at row 2
|
||||
Warning 1264 Out of range value for column 'mid' at row 3
|
||||
Warning 1264 Out of range value for column 'mid' at row 4
|
||||
Warning 1264 Out of range value for column 'mid' at row 5
|
||||
create table t2 as WITH RECURSIVE
|
||||
cteReports (level, id, mid, name) AS
|
||||
(
|
||||
SELECT 1, id, mid, name FROM t1 WHERE mid IS NULL
|
||||
UNION ALL
|
||||
SELECT r.level + 1, e.id, e.mid + 1000000000000, e.name FROM t1 e
|
||||
INNER JOIN cteReports r ON e.mid = r.id
|
||||
)
|
||||
SELECT
|
||||
level, id, mid, name,
|
||||
(SELECT name FROM t1 WHERE id= cteReports.mid) AS mname
|
||||
FROM cteReports ORDER BY level, mid;;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'mid' at row 2
|
||||
Warning 1264 Out of range value for column 'mid' at row 3
|
||||
Warning 1264 Out of range value for column 'mid' at row 4
|
||||
Warning 1264 Out of range value for column 'mid' at row 5
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`level` int(1) DEFAULT NULL,
|
||||
`id` int(11) DEFAULT NULL,
|
||||
`mid` int(11) DEFAULT NULL,
|
||||
`name` text DEFAULT NULL,
|
||||
`mname` text DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
set @@sql_mode=default;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
#
|
||||
# MDEV-26108: Recursive CTE embedded into another CTE which is used twice
|
||||
#
|
||||
create table t1 (a int);
|
||||
|
Reference in New Issue
Block a user