1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Merge branch '10.6' into 10.11

This commit is contained in:
Oleksandr Byelkin
2024-07-04 11:52:07 +02:00
187 changed files with 4678 additions and 4362 deletions

View File

@ -1099,11 +1099,9 @@ select
a,
count(col1) over (order by a
range between 0.1 preceding
and 0.1 following)
and 0.1 following) as count
from t1;
a count(col1) over (order by a
range between 0.1 preceding
and 0.1 following)
a count
0.450 3
0.500 3
0.550 3
@ -1249,33 +1247,33 @@ insert into t1 values (1,1,'foo');
insert into t1 values (2,2,'bar');
select
count(*) over (order by a,b
range between unbounded preceding and current row)
range between unbounded preceding and current row) as count
from t1;
ERROR HY000: RANGE-type frame requires ORDER BY clause with single sort key
select
count(*) over (order by c
range between unbounded preceding and current row)
range between unbounded preceding and current row) as count
from t1;
ERROR HY000: Numeric datatype is required for RANGE-type frame
select
count(*) over (order by a
range between 'abcd' preceding and current row)
range between 'abcd' preceding and current row) as count
from t1;
ERROR HY000: Numeric datatype is required for RANGE-type frame
select
count(*) over (order by a
range between current row and 'foo' following)
range between current row and 'foo' following) as count
from t1;
ERROR HY000: Numeric datatype is required for RANGE-type frame
# Try range frame with invalid bounds
select
count(*) over (order by a
rows between 0.5 preceding and current row)
rows between 0.5 preceding and current row) as count
from t1;
ERROR HY000: Integer is required for ROWS-type frame
select
count(*) over (order by a
rows between current row and 3.14 following)
rows between current row and 3.14 following) as count
from t1;
ERROR HY000: Integer is required for ROWS-type frame
#
@ -1284,29 +1282,27 @@ ERROR HY000: Integer is required for ROWS-type frame
select
count(*) over (order by a
rows between 1 preceding and 1 following
exclude current row)
exclude current row) as count
from t1;
ERROR HY000: Frame exclusion is not supported yet
select
count(*) over (order by a
range between 1 preceding and 1 following
exclude ties)
exclude ties) as count
from t1;
ERROR HY000: Frame exclusion is not supported yet
select
count(*) over (order by a
range between 1 preceding and 1 following
exclude group)
exclude group) as count
from t1;
ERROR HY000: Frame exclusion is not supported yet
select
count(*) over (order by a
rows between 1 preceding and 1 following
exclude no others)
exclude no others) as count
from t1;
count(*) over (order by a
rows between 1 preceding and 1 following
exclude no others)
count
2
2
drop table t1;
@ -1626,10 +1622,10 @@ insert into t1 values
# Check using counters
flush status;
select
rank() over (partition by c order by a),
rank() over (partition by c order by b)
rank() over (partition by c order by a) as rank_a,
rank() over (partition by c order by b) as rank_b
from t1;
rank() over (partition by c order by a) rank() over (partition by c order by b)
rank_a rank_b
1 3
2 2
3 1
@ -1642,10 +1638,10 @@ Sort_rows 6
Sort_scan 2
flush status;
select
rank() over (partition by c order by a),
rank() over (partition by c order by a)
rank() over (partition by c order by a) as rank_a,
rank() over (partition by c order by a) as rank_b
from t1;
rank() over (partition by c order by a) rank() over (partition by c order by a)
rank_a rank_b
1 1
2 2
3 3
@ -1658,8 +1654,8 @@ Sort_rows 3
Sort_scan 1
explain format=json
select
rank() over (partition by c order by a),
rank() over (partition by c order by a)
rank() over (partition by c order by a) as rank_a,
rank() over (partition by c order by a) as rank_b
from t1;
EXPLAIN
{
@ -1722,8 +1718,8 @@ EXPLAIN
}
explain format=json
select
rank() over (partition by c order by a),
count(*) over (partition by c)
rank() over (partition by c order by a) as rank_a,
count(*) over (partition by c) as count_c
from t1;
EXPLAIN
{
@ -1754,8 +1750,8 @@ EXPLAIN
}
explain format=json
select
count(*) over (partition by c),
rank() over (partition by c order by a)
count(*) over (partition by c) as count_c,
rank() over (partition by c order by a) as rank_a
from t1;
EXPLAIN
{
@ -1896,18 +1892,18 @@ insert into t1 values (1, 3, 4);
insert into t1 values (1, 4, 8);
select
pk, a,
sum(a) over (order by pk rows between 0 preceding and current row)
sum(a) over (order by pk rows between 0 preceding and current row) as sum
from t1;
pk a sum(a) over (order by pk rows between 0 preceding and current row)
pk a sum
1 1 1
2 2 2
3 4 4
4 8 8
select
pk, a,
sum(a) over (order by pk rows between 1 preceding and 0 preceding)
sum(a) over (order by pk rows between 1 preceding and 0 preceding) as sum
from t1;
pk a sum(a) over (order by pk rows between 1 preceding and 0 preceding)
pk a sum
1 1 1
2 2 3
3 4 6
@ -1918,9 +1914,9 @@ insert into t1 values (200, 3, 4);
insert into t1 values (200, 4, 8);
select
part_id, pk, a,
sum(a) over (partition by part_id order by pk rows between 0 preceding and current row)
sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) as sum
from t1;
part_id pk a sum(a) over (partition by part_id order by pk rows between 0 preceding and current row)
part_id pk a sum
1 1 1 1
1 2 2 2
1 3 4 4
@ -1931,9 +1927,9 @@ part_id pk a sum(a) over (partition by part_id order by pk rows between 0 preced
200 4 8 8
select
part_id, pk, a,
sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding)
sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) as sum
from t1;
part_id pk a sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding)
part_id pk a sum
1 1 1 1
1 2 2 3
1 3 4 6
@ -1958,8 +1954,8 @@ insert into t1 values
(2000, 3),
(2000, 3),
(2000, 3);
select rank() over (partition by part_id order by a) from t1;
rank() over (partition by part_id order by a)
select rank() over (partition by part_id order by a) as rank from t1;
rank
1
2
2
@ -1969,14 +1965,14 @@ rank() over (partition by part_id order by a)
3
3
3
select distinct rank() over (partition by part_id order by a) from t1;
rank() over (partition by part_id order by a)
select distinct rank() over (partition by part_id order by a) as rank from t1;
rank
1
2
4
3
explain format=json
select distinct rank() over (partition by part_id order by a) from t1;
select distinct rank() over (partition by part_id order by a) as rank from t1;
EXPLAIN
{
"query_block": {
@ -2062,11 +2058,8 @@ INSERT INTO `orders` VALUES (59940,238);
SELECT o_custkey, avg(o_custkey) OVER (PARTITION BY abs(o_custkey)
ORDER BY o_custkey
RANGE BETWEEN 15 FOLLOWING
AND 15 FOLLOWING) from orders;
o_custkey avg(o_custkey) OVER (PARTITION BY abs(o_custkey)
ORDER BY o_custkey
RANGE BETWEEN 15 FOLLOWING
AND 15 FOLLOWING)
AND 15 FOLLOWING) as avg from orders;
o_custkey avg
238 NULL
242 NULL
DROP table orders;
@ -2290,15 +2283,15 @@ a
NULL
NULL
NULL
SELECT ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) from t;
ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0)
SELECT ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) as result from t;
result
0.00000000000000
0.00000000000000
0.00000000000000
SELECT sum(t.a) over (partition by t.b order by a),
sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0))
sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) as sum
from t;
sum(t.a) over (partition by t.b order by a) sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0))
sum(t.a) over (partition by t.b order by a) sum
0.0000000000 0
1.0000000000 1
3.0000000000 1.7320508075688772
@ -2473,9 +2466,9 @@ INSERT INTO t1 VALUES
(1,1000), (2,1100), (3,1800), (4,1500), (5,1700), (6,1200),
(7,2000), (8,2100), (9,1600);
SELECT id, sum(a) OVER (PARTITION BY id
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as sum
FROM t1;
id sum(a) OVER (PARTITION BY id
id sum
1 1000
2 1100
3 1800
@ -2485,10 +2478,9 @@ id sum(a) OVER (PARTITION BY id
7 2000
8 2100
9 1600
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
SELECT id, sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
SELECT id, sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as sum
FROM t1;
id sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
id sum
1 14000
2 13000
3 5900
@ -3223,8 +3215,8 @@ DROP TABLE t1;
#
CREATE TABLE t1 (c CHAR(8)) ENGINE=MyISAM;
INSERT IGNORE INTO t1 VALUES ('foo');
SELECT ('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1);
('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1)
SELECT ('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1) as result;
result
0
DROP TABLE t1;
#
@ -3257,8 +3249,8 @@ DROP TABLE t1;
#
CREATE TABLE t1 (dt DATETIME);
INSERT INTO t1 VALUES ('2017-05-17');
SELECT MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) FROM t1;
MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING)
SELECT MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) as result FROM t1;
result
NULL
DROP TABLE t1;
#