diff options
author | Sergei Golubchik <serg@mariadb.org> | 2022-11-23 00:58:07 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2022-12-02 16:19:13 +0100 |
commit | cfb47ddde2bbbdc3065ed2b959bd4719247fbd30 (patch) | |
tree | 98385bd47504b46ba85be8b94696d5440920543b /mysql-test | |
parent | da3fc33e88c70bc526a7e03dfe9c3e701a1a1892 (diff) | |
download | mariadb-git-cfb47ddde2bbbdc3065ed2b959bd4719247fbd30.tar.gz |
MDEV-30066 (limit + offset) union all (...) limit = incorrect result
select_union_direct::send_data() only sends a record when
the LIMIT ... OFFSET clause of the individual select won't skip it.
Thus, select_union_direct::send_data() should not do any actions
related to a sending a record if the offset of a select isn't
reached yet
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/main/union.result | 15 | ||||
-rw-r--r-- | mysql-test/main/union.test | 9 |
2 files changed, 24 insertions, 0 deletions
diff --git a/mysql-test/main/union.result b/mysql-test/main/union.result index bf65bbd44d1..8d9d9752e1d 100644 --- a/mysql-test/main/union.result +++ b/mysql-test/main/union.result @@ -2748,5 +2748,20 @@ a b c d 3 4 2 197 drop table t1,t2; # +# MDEV-30066 (limit + offset) union all (...) limit = incorrect result +# +create table t1(id int primary key auto_increment, c1 int); +insert into t1(c1) values(1),(2),(3); +(select * from t1 where c1>=1 order by c1 desc limit 2,1) union all (select * from t1 where c1>1 order by c1 desc); +id c1 +1 1 +2 2 +3 3 +(select * from t1 where c1>=1 order by c1 desc limit 2,1) union all (select * from t1 where c1>1 order by c1 desc) limit 2; +id c1 +1 1 +2 2 +drop table t1; +# # End of 10.3 tests # diff --git a/mysql-test/main/union.test b/mysql-test/main/union.test index eff3cfd260b..ba9ee278228 100644 --- a/mysql-test/main/union.test +++ b/mysql-test/main/union.test @@ -1983,5 +1983,14 @@ union (select 0 as a, 99 as b, drop table t1,t2; --echo # +--echo # MDEV-30066 (limit + offset) union all (...) limit = incorrect result +--echo # +create table t1(id int primary key auto_increment, c1 int); +insert into t1(c1) values(1),(2),(3); +(select * from t1 where c1>=1 order by c1 desc limit 2,1) union all (select * from t1 where c1>1 order by c1 desc); +(select * from t1 where c1>=1 order by c1 desc limit 2,1) union all (select * from t1 where c1>1 order by c1 desc) limit 2; +drop table t1; + +--echo # --echo # End of 10.3 tests --echo # |