mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
1c858dd9e0
The number is irrelevant and may differ by architecture. We are only interested if it happened or not
111 lines
3.8 KiB
Text
111 lines
3.8 KiB
Text
create table t0 (a int);
|
|
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
|
create table t1(a int);
|
|
insert into t1 select A.a + B.a* 10 + C.a * 100 from t0 A, t0 B, t0 C;
|
|
create table t10 (a int, b int, c int);
|
|
insert into t10
|
|
select
|
|
A.a + 1000*B.a,
|
|
A.a + 1000*B.a,
|
|
A.a + 1000*B.a
|
|
from t1 A, t0 B
|
|
order by A.a+1000*B.a;
|
|
#################################################################
|
|
## Try a basic example
|
|
flush status;
|
|
create table t21 as
|
|
select
|
|
sum(b) over (order by a rows between 2 preceding and 2 following) as SUM_B
|
|
from
|
|
t10;
|
|
select variable_name,
|
|
case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
from information_schema.session_status
|
|
where variable_name like 'Sort_merge_passes';
|
|
variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
SORT_MERGE_PASSES NO PASSES
|
|
set sort_buffer_size=1024;
|
|
flush status;
|
|
create table t22 as
|
|
select
|
|
sum(b) over (order by a rows between 2 preceding and 2 following) as SUM_B
|
|
from
|
|
t10;
|
|
select variable_name,
|
|
case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
from information_schema.session_status
|
|
where variable_name like 'Sort_merge_passes';
|
|
variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
SORT_MERGE_PASSES WITH PASSES
|
|
include/diff_tables.inc [t21, t22]
|
|
drop table t21, t22;
|
|
#################################################################
|
|
# Try many cursors
|
|
set sort_buffer_size=default;
|
|
flush status;
|
|
create table t21 as
|
|
select
|
|
sum(b) over (order by a rows between 2 preceding and 2 following) as SUM_B1,
|
|
sum(b) over (order by a rows between 5 preceding and 5 following) as SUM_B2,
|
|
sum(b) over (order by a rows between 20 preceding and 20 following) as SUM_B3
|
|
from
|
|
t10;
|
|
select variable_name,
|
|
case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
from information_schema.session_status
|
|
where variable_name like 'Sort_merge_passes';
|
|
variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
SORT_MERGE_PASSES NO PASSES
|
|
set sort_buffer_size=1024;
|
|
flush status;
|
|
create table t22 as
|
|
select
|
|
sum(b) over (order by a rows between 2 preceding and 2 following) as SUM_B1,
|
|
sum(b) over (order by a rows between 5 preceding and 5 following) as SUM_B2,
|
|
sum(b) over (order by a rows between 20 preceding and 20 following) as SUM_B3
|
|
from
|
|
t10;
|
|
select variable_name,
|
|
case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
from information_schema.session_status
|
|
where variable_name like 'Sort_merge_passes';
|
|
variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
SORT_MERGE_PASSES WITH PASSES
|
|
include/diff_tables.inc [t21, t22]
|
|
drop table t21, t22;
|
|
#################################################################
|
|
# Try having cursors pointing at different IO_CACHE pages
|
|
# in the IO_CACHE
|
|
set sort_buffer_size=default;
|
|
flush status;
|
|
create table t21 as
|
|
select
|
|
a,
|
|
sum(b) over (order by a range between 5000 preceding and 5000 following) as SUM_B1
|
|
from
|
|
t10;
|
|
select variable_name,
|
|
case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
from information_schema.session_status
|
|
where variable_name like 'Sort_merge_passes';
|
|
variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
SORT_MERGE_PASSES NO PASSES
|
|
set sort_buffer_size=1024;
|
|
flush status;
|
|
create table t22 as
|
|
select
|
|
a,
|
|
sum(b) over (order by a range between 5000 preceding and 5000 following) as SUM_B1
|
|
from
|
|
t10;
|
|
select variable_name,
|
|
case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
from information_schema.session_status
|
|
where variable_name like 'Sort_merge_passes';
|
|
variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end
|
|
SORT_MERGE_PASSES WITH PASSES
|
|
include/diff_tables.inc [t21, t22]
|
|
drop table t21, t22;
|
|
#################################################################
|
|
drop table t10;
|
|
drop table t0,t1;
|