summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2022-11-23 00:58:07 +0100
committerSergei Golubchik <serg@mariadb.org>2022-12-02 16:19:13 +0100
commitcfb47ddde2bbbdc3065ed2b959bd4719247fbd30 (patch)
tree98385bd47504b46ba85be8b94696d5440920543b /mysql-test
parentda3fc33e88c70bc526a7e03dfe9c3e701a1a1892 (diff)
downloadmariadb-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.result15
-rw-r--r--mysql-test/main/union.test9
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 #