mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Merge MySQL 5.1.46 into MariaDB.
Still two test failures to be solved: main.myisam and main.subselect.
This commit is contained in:
@@ -3610,4 +3610,104 @@ SELECT 1 FROM t1 WHERE a <> SOME
|
||||
);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #45989 take 2 : memory leak after explain encounters an
|
||||
--echo # error in the query
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a LONGTEXT);
|
||||
INSERT INTO t1 VALUES (repeat('a',@@global.max_allowed_packet));
|
||||
INSERT INTO t1 VALUES (repeat('b',@@global.max_allowed_packet));
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
|
||||
(SELECT DISTINCTROW a AS away FROM t1 GROUP BY a WITH ROLLUP) AS d1
|
||||
WHERE t1.a = d1.a;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.1 tests.
|
||||
|
||||
#
|
||||
# Bug #47904 Incorrect results w/ table subquery, derived SQs, and LEFT JOIN on index
|
||||
#
|
||||
|
||||
--echo Set up test tables.
|
||||
CREATE TABLE t1 (
|
||||
t1_id INT UNSIGNED,
|
||||
|
||||
PRIMARY KEY(t1_id)
|
||||
) Engine=MyISAM;
|
||||
|
||||
INSERT INTO t1 (t1_id) VALUES (1), (2), (3), (4), (5);
|
||||
|
||||
CREATE TABLE t2 SELECT * FROM t1;
|
||||
|
||||
CREATE TABLE t3 (
|
||||
t3_id INT UNSIGNED AUTO_INCREMENT,
|
||||
t1_id INT UNSIGNED,
|
||||
amount DECIMAL(16,2),
|
||||
|
||||
PRIMARY KEY(t3_id),
|
||||
KEY(t1_id)
|
||||
) Engine=MyISAM;
|
||||
|
||||
INSERT INTO t3 (t1_id, t3_id, amount)
|
||||
VALUES (1, 1, 100.00), (2, 2, 200.00), (4, 4, 400.00);
|
||||
|
||||
--echo This is the 'inner query' running by itself.
|
||||
--echo Produces correct results.
|
||||
SELECT
|
||||
t1.t1_id,
|
||||
IFNULL((SELECT SUM(amount) FROM t3 WHERE t3.t1_id=t1.t1_id), 0) AS total_amount
|
||||
FROM
|
||||
t1
|
||||
LEFT JOIN t2 ON t2.t1_id=t1.t1_id
|
||||
GROUP BY
|
||||
t1.t1_id
|
||||
;
|
||||
|
||||
--echo SELECT * FROM (the same inner query)
|
||||
--echo Produces correct results.
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
t1.t1_id,
|
||||
IFNULL((SELECT SUM(amount) FROM t3 WHERE t3.t1_id=t1.t1_id), 0) AS total_amount
|
||||
FROM
|
||||
t1
|
||||
LEFT JOIN t2 ON t2.t1_id=t1.t1_id
|
||||
GROUP BY
|
||||
t1.t1_id
|
||||
) AS t;
|
||||
|
||||
--echo Now make t2.t1_id part of a key.
|
||||
ALTER TABLE t2 ADD PRIMARY KEY(t1_id);
|
||||
|
||||
--echo Same inner query by itself.
|
||||
--echo Still correct results.
|
||||
SELECT
|
||||
t1.t1_id,
|
||||
IFNULL((SELECT SUM(amount) FROM t3 WHERE t3.t1_id=t1.t1_id), 0) AS total_amount
|
||||
FROM
|
||||
t1
|
||||
LEFT JOIN t2 ON t2.t1_id=t1.t1_id
|
||||
GROUP BY
|
||||
t1.t1_id;
|
||||
|
||||
--echo SELECT * FROM (the same inner query), now with indexes on the LEFT JOIN
|
||||
SELECT * FROM (
|
||||
SELECT
|
||||
t1.t1_id,
|
||||
IFNULL((SELECT SUM(amount) FROM t3 WHERE t3.t1_id=t1.t1_id), 0) AS total_amount
|
||||
FROM
|
||||
t1
|
||||
LEFT JOIN t2 ON t2.t1_id=t1.t1_id
|
||||
GROUP BY
|
||||
t1.t1_id
|
||||
) AS t;
|
||||
|
||||
|
||||
DROP TABLE t3;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
|
||||
Reference in New Issue
Block a user