diff options
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/win.result | 45 | ||||
-rw-r--r-- | mysql-test/t/win.test | 31 |
2 files changed, 76 insertions, 0 deletions
diff --git a/mysql-test/r/win.result b/mysql-test/r/win.result index bb58184bee0..849da8668f1 100644 --- a/mysql-test/r/win.result +++ b/mysql-test/r/win.result @@ -3536,5 +3536,50 @@ AVG(0) OVER () MAX('2') 0.0000 NULL drop table t1; # +# MDEV-14791: Crash with order by expression containing window functions +# +CREATE TABLE t1 (b1 int, b2 int); +INSERT INTO t1 VALUES (1,1),(0,0); +explain +SELECT b1 from t1 order by row_number() over (ORDER BY b2) + 1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +SELECT b1 from t1 order by row_number() over (ORDER BY b2) + 1; +b1 +0 +1 +explain +SELECT b1 from t1 order by row_number() over (ORDER BY b2); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +SELECT b1 from t1 order by row_number() over (ORDER BY b2); +b1 +0 +1 +DROP TABLE t1; +CREATE TABLE t1 (a int, b int, c int); +INSERT INTO t1 VALUES (2,3,207), (1,21,909), (7,13,312), (8,64,248); +explain +SELECT * FROM t1 ORDER BY max(t1.a) over (partition by c); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using temporary; Using filesort +SELECT * FROM t1 ORDER BY max(t1.a) over (partition by c); +a b c +1 21 909 +2 3 207 +7 13 312 +8 64 248 +explain +SELECT max(t1.a) over (partition by c) as x, b, c from t1 order by max(t1.a) over (partition by c); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using temporary; Using filesort +SELECT max(t1.a) over (partition by c) as x, b, c from t1 order by max(t1.a) over (partition by c); +x b c +1 21 909 +2 3 207 +7 13 312 +8 64 248 +drop table t1; +# # End of 10.2 tests # diff --git a/mysql-test/t/win.test b/mysql-test/t/win.test index bc16eeb63dd..270af3833c9 100644 --- a/mysql-test/t/win.test +++ b/mysql-test/t/win.test @@ -2280,5 +2280,36 @@ UNION ALL drop table t1; --echo # +--echo # MDEV-14791: Crash with order by expression containing window functions +--echo # + +CREATE TABLE t1 (b1 int, b2 int); +INSERT INTO t1 VALUES (1,1),(0,0); + +explain +SELECT b1 from t1 order by row_number() over (ORDER BY b2) + 1; + +SELECT b1 from t1 order by row_number() over (ORDER BY b2) + 1; + +explain +SELECT b1 from t1 order by row_number() over (ORDER BY b2); + +SELECT b1 from t1 order by row_number() over (ORDER BY b2); +DROP TABLE t1; + +CREATE TABLE t1 (a int, b int, c int); +INSERT INTO t1 VALUES (2,3,207), (1,21,909), (7,13,312), (8,64,248); + +explain +SELECT * FROM t1 ORDER BY max(t1.a) over (partition by c); +SELECT * FROM t1 ORDER BY max(t1.a) over (partition by c); + +explain +SELECT max(t1.a) over (partition by c) as x, b, c from t1 order by max(t1.a) over (partition by c); +SELECT max(t1.a) over (partition by c) as x, b, c from t1 order by max(t1.a) over (partition by c); + +drop table t1; + +--echo # --echo # End of 10.2 tests --echo # |