drop table if exists t0,t1;
create table t0(a int primary key);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1(
pk int,
a int,
key(pk)
);
insert into t1
select
A.a + B.a* 10 + C.a * 100, 1
from t0 A, t0 B, t0 C;
select
pk,
count(a) over (order by pk rows between 2 preceding and2 following) as exp
from t1
where pk between 1and30
order by pk desc
limit 4;
pk exp 303 294 285 275
drop table t0,t1;
#
# MDEV-30052: Crash with a query containing nested WINDOW clauses
#
CREATE TABLE t1 (c INT);
insert into t1 values (1),(2);
UPDATE t1 SET c=1
WHERE c=2
ORDER BY
(1 IN ((
SELECT *
FROM (SELECT * FROM t1) AS v1
GROUP BY c
WINDOW v2 AS (ORDER BY
(SELECT *
FROM t1
GROUP BY c
WINDOW v3 AS (PARTITION BY c)
)
)
))
);
drop table t1;
#
# MDEV-29359: Server crashed with heap-use-after-free in
# Field::is_null(long long) const (Just testcase)
#
CREATE TABLE t1 (id int);
INSERT INTO t1 VALUES (-1),(0),(84);
SELECT
id IN (SELECT id
FROM t1
WINDOW w AS (ORDER BY (SELECT 1
FROM t1
WHERE
EXISTS ( SELECT id
FROM t1
GROUP BY id
WINDOW w2 AS (ORDER BY id)
)
)
)
) as exp
FROM t1;
exp 1 1 1
DROP TABLE t1;
# End of 10.3 tests
#
# MDEV-32317 ref_ptrs exhaust on multiple ORDER by func from winfunc
#
select row_number() over () x;
x 1
select row_number() over (order by 1) x;
x 1
select row_number() over (order by 1, 1) x;
x 1
select row_number() over (partition by 1) x;
x 1
select row_number() over (partition by 1, 1) x;
x 1
select row_number() over (partition by 1 order by 1) x;
x 1
select row_number() over (partition by 1, 2) x;
x 1
select row_number() over (partition by 1, 2 order by 1, 1) x;
x 1
select row_number() over () x order by x;
x 1
select row_number() over () order by 1;
row_number() over () 1
select row_number() over (order by 1) order by 1;
row_number() over (order by 1) 1
select row_number() over (order by 1, 1) order by 1;
row_number() over (order by 1, 1) 1
select row_number() over (order by 1) order by 1, 1;
row_number() over (order by 1) 1
select row_number() over (order by 1, 1) order by 1, 1;
row_number() over (order by 1, 1) 1
select row_number() over (partition by 1, 2 order by 1, 1) order by 1;
row_number() over (partition by 1, 2 order by 1, 1) 1
select row_number() over (partition by 1, 2 order by 1, 1) order by 1, 1;
row_number() over (partition by 1, 2 order by 1, 1) 1
select nullif(1, 0) order by 1;
nullif(1, 0) 1
select nullif(1, 0) order by 1, 1;
nullif(1, 0) 1
select nullif(avg(1) over (), 0) order by 1;
nullif(avg(1) over (), 0) 1.0000
select nullif(avg(1) over (order by 1), 0) order by 1;
nullif(avg(1) over (order by 1), 0) 1.0000
select nullif(avg(1) over (order by 1, 1), 0) order by 1;
nullif(avg(1) over (order by 1, 1), 0) 1.0000
select nullif(avg(1) over (partition by 1), 0) order by 1;
nullif(avg(1) over (partition by 1), 0) 1.0000
select nullif(avg(1) over (partition by 1, 2), 0) order by 1;
nullif(avg(1) over (partition by 1, 2), 0) 1.0000
select nullif(avg(1) over (), 0) order by 1, 1;
nullif(avg(1) over (), 0) 1.0000
select nullif(avg(1) over (partition by 1, 2), 0) order by 1, 1;
nullif(avg(1) over (partition by 1, 2), 0) 1.0000
select nullif(avg(1) over (partition by 1, 2), 0) order by 1, 1, 1;
nullif(avg(1) over (partition by 1, 2), 0) 1.0000
select nullif(avg(1) over (partition by 1, 2), avg(1) over ()) order by 1, 1, 1;
nullif(avg(1) over (partition by 1, 2), avg(1) over ())
NULL
select avg ( '1' ) over ( ) x where ( 1 , 1 , ( 1 , null ) ) in ( ( 1 , 1 , ( 1 , 1 ) ) ) order by x between 25and ( ( x = x ) / x ) or x = x = avg ( null ) or x = 94;
x 1
select row_number() over () x order by x between 1and (( x = x ) / x) or x = x = 1;
x 1
select nullif(avg(1) over (order by 1), 0) order by 1, 1, 1;
nullif(avg(1) over (order by 1), 0) 1.0000
select nullif(avg(1) over (order by 1, 1, 1, 1, 1, 1, 1), avg(2) over (order by 1, 1, 1, 1, 1, 1, 1)) x order by 1, 1, 1, 1, 1, 1;
x 1.0000
select nullif(avg(1) over (partition by -1,1,0,2,3,4,5,6,7,8 order by 1, 1, 1, 1, 1, 1, 1), avg(2) over (partition by -1,1,0,2,3,4,5,6,7,8 order by 1, 1, 1, 1, 1, 1, 1)) x order by 1, 1, 1, 1, 1, 1;
x 1.0000
select nullif(avg(1) over (partition by -1,1,0,2,3,4,5,6,7,8 order by 1, 1, 1, 1, 1, 1, 1), avg(2) over (partition by -1,1,0,2,3,4,5,6,7,8 order by 1, 1, 1, 1, 1, 1, 1)) x order by 1, 1, 1, 1, 1, 1, x between 1and (( x = x ) / x) or x = x = 1;
x 1.0000
# End of 10.6 tests
#
# MDEV-28619 Server crash and UBSAN null-pointer-use in Window_funcs_sort::setup
#
create table t (c int);
select * from t order by c=row_number() over t; ERROR HY000: Window specification with name 't' is not defined
select * union select * from t; ERROR HY000: No tables used
explain update t set c=1 where exists (
select * from t order by c=row_number() over t); ERROR HY000: Window specification with name 't' is not defined
select * union select * from t order by c=row_number() over t; ERROR HY000: No tables used
explain update t set c=1 where exists (
select * union select * from t order by c=row_number() over t);
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t system NULL NULL NULL NULL 0 Const row not found 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
explain update t set c=1 where exists (
select * union select nullif(avg(1) over (order by 1), avg(1) over (order by 1)) x
from t order by x=row_number() over t);
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t system NULL NULL NULL NULL 0 Const row not found 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
explain update t set c=1 where exists (
select * union select nullif(avg(1) over (order by 1), avg(1) over (order by 1)) x
from t order by x=avg(row_number() over t));
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t system NULL NULL NULL NULL 0 Const row not found 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
explain update t set c=1 where exists (
select * union select nullif(avg(1) over (order by 1), avg(1) over (order by 1)) x
from t order by x=avg(row_number() over t) over (order by 1));
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t system NULL NULL NULL NULL 0 Const row not found 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
drop table t;
#
# End of 10.11 tests
#
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.