Merge gleb.loc:/home/uchum/work/bk/5.0-opt-29095
into gleb.loc:/home/uchum/work/bk/5.0-opt
This commit is contained in:
commit
e5798d0466
@ -688,7 +688,16 @@ ERROR 42S22: Unknown column 't2.x' in 'field list'
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1 (a int PRIMARY KEY);
|
||||
INSERT INTO t1 values (1), (2);
|
||||
flush status;
|
||||
INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1;
|
||||
show status like 'Handler_read%';
|
||||
Variable_name Value
|
||||
Handler_read_first 1
|
||||
Handler_read_key 0
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (x int, y int);
|
||||
CREATE TABLE t2 (z int, y int);
|
||||
@ -773,3 +782,25 @@ d
|
||||
20
|
||||
20
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
prev_id INT,
|
||||
join_id INT DEFAULT 0);
|
||||
INSERT INTO t1 (prev_id) VALUES (NULL), (1), (2);
|
||||
SELECT * FROM t1;
|
||||
id prev_id join_id
|
||||
1 NULL 0
|
||||
2 1 0
|
||||
3 2 0
|
||||
CREATE TABLE t2 (join_id INT);
|
||||
INSERT INTO t2 (join_id) VALUES (0);
|
||||
INSERT INTO t1 (prev_id) SELECT id
|
||||
FROM t2 LEFT JOIN t1 ON t1.join_id = t2.join_id
|
||||
ORDER BY id DESC LIMIT 1;
|
||||
SELECT * FROM t1;
|
||||
id prev_id join_id
|
||||
1 NULL 0
|
||||
2 1 0
|
||||
3 2 0
|
||||
4 3 0
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -233,7 +233,9 @@ drop table t1,t2;
|
||||
CREATE TABLE t1 (a int PRIMARY KEY);
|
||||
INSERT INTO t1 values (1), (2);
|
||||
|
||||
flush status;
|
||||
INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1;
|
||||
show status like 'Handler_read%';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
@ -332,3 +334,26 @@ INSERT INTO t2 (d)
|
||||
|
||||
SELECT * FROM t2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# Bug #29095: incorrect pushing of LIMIT into the temporary
|
||||
# table ignoring ORDER BY clause
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
prev_id INT,
|
||||
join_id INT DEFAULT 0);
|
||||
|
||||
INSERT INTO t1 (prev_id) VALUES (NULL), (1), (2);
|
||||
SELECT * FROM t1;
|
||||
|
||||
CREATE TABLE t2 (join_id INT);
|
||||
INSERT INTO t2 (join_id) VALUES (0);
|
||||
|
||||
INSERT INTO t1 (prev_id) SELECT id
|
||||
FROM t2 LEFT JOIN t1 ON t1.join_id = t2.join_id
|
||||
ORDER BY id DESC LIMIT 1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -1347,8 +1347,7 @@ JOIN::optimize()
|
||||
there are aggregate functions, because in all these cases we need
|
||||
all result rows.
|
||||
*/
|
||||
ha_rows tmp_rows_limit= ((order == 0 || skip_sort_order ||
|
||||
test(select_options & OPTION_BUFFER_RESULT)) &&
|
||||
ha_rows tmp_rows_limit= ((order == 0 || skip_sort_order) &&
|
||||
!tmp_group &&
|
||||
!thd->lex->current_select->with_sum_func) ?
|
||||
select_limit : HA_POS_ERROR;
|
||||
|
Loading…
x
Reference in New Issue
Block a user