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:
@ -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;
|
||||
#
|
||||
|
Reference in New Issue
Block a user