diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index 05dab9e2874..d4effc8448d 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -1738,4 +1738,19 @@ i 6 DROP VIEW v1; DROP TABLE t1; +# +# mdev-5382: UNION with ORDER BY in subselect +# +CREATE TABLE t1 (a int DEFAULT NULL); +INSERT INTO t1 VALUES (2), (4); +CREATE TABLE t2 (b int DEFAULT NULL); +INSERT INTO t2 VALUES (1), (3); +SELECT c1 FROM (SELECT (SELECT a FROM t1 WHERE t1.a <= t2.b +UNION ALL +SELECT a FROM t1 WHERE t1.a+3<= t2.b +ORDER BY a DESC) AS c1 FROM t2) t3; +c1 +NULL +2 +DROP TABLE t1,t2; End of 5.3 tests diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test index bb0e5610a26..bc995aac0a0 100644 --- a/mysql-test/t/union.test +++ b/mysql-test/t/union.test @@ -1227,5 +1227,21 @@ deallocate prepare stmt1; DROP VIEW v1; DROP TABLE t1; +--echo # +--echo # mdev-5382: UNION with ORDER BY in subselect +--echo # + + CREATE TABLE t1 (a int DEFAULT NULL); + INSERT INTO t1 VALUES (2), (4); + CREATE TABLE t2 (b int DEFAULT NULL); + INSERT INTO t2 VALUES (1), (3); + + SELECT c1 FROM (SELECT (SELECT a FROM t1 WHERE t1.a <= t2.b + UNION ALL + SELECT a FROM t1 WHERE t1.a+3<= t2.b + ORDER BY a DESC) AS c1 FROM t2) t3; + + DROP TABLE t1,t2; + --echo End of 5.3 tests diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 130763de76a..3eeb8afef6b 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -6429,9 +6429,9 @@ find_field_in_table_ref(THD *thd, TABLE_LIST *table_list, else { if (thd->mark_used_columns == MARK_COLUMNS_READ) - it->walk(&Item::register_field_in_read_map, 1, (uchar *) 0); + it->walk(&Item::register_field_in_read_map, 0, (uchar *) 0); else - it->walk(&Item::register_field_in_write_map, 1, (uchar *) 0); + it->walk(&Item::register_field_in_write_map, 0, (uchar *) 0); } } else