1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

Merge pull request #2506 from mariadb-corporation/MCOL-5092-addendum

MCOL-5092 addendum modify moda() mtr tests with order by
This commit is contained in:
Roman Nozdrin
2022-08-18 20:49:01 +03:00
committed by GitHub
3 changed files with 41 additions and 36 deletions

View File

@ -54,28 +54,28 @@ dbl double,
v char(4), v char(4),
vc varchar(10) vc varchar(10)
) engine=columnstore; ) engine=columnstore;
INSERT INTO t2 VALUES(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO t2 VALUES(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
INSERT INTO t2 VALUES(10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816, (10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816,
2223372036854775816, 22.34, 22.34, 70000000605040302018.124312000091, 2223372036854775816, 22.34, 22.34, 70000000605040302018.124312000091,
70000000605040302019.124312000091, 2344.32, 12345678.91011, 'five', 'five123456'); 70000000605040302019.124312000091, 2344.32, 12345678.91011, 'five', 'five123456'),
INSERT INTO t2 VALUES(-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460, (-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460,
-2223372036854775816, 2223372036854775816, -22.34, 22.34, -2223372036854775816, 2223372036854775816, -22.34, 22.34,
-70000000605040302019.124312000091, 70000000605040302029.124312000091, -70000000605040302019.124312000091, 70000000605040302029.124312000091,
-2344.32, -123456789.1011, 'four', 'five654321'); -2344.32, -123456789.1011, 'four', 'five654321'),
INSERT INTO t2 VALUES(1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807, (1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807,
2223372036854775807, 13.34, 13.34, 70000000605040302019.124312000091, 2223372036854775807, 13.34, 13.34, 70000000605040302019.124312000091,
70000000605040302029.124312000091, 234.432, 12345678.91011, 'five', 'five123456'); 70000000605040302029.124312000091, 234.432, 12345678.91011, 'five', 'five123456'),
INSERT INTO t2 VALUES(-1, 1, -201, 201, -1234867, 1234867, -7483646, 7483646, -2223372036854775807, (-1, 1, -201, 201, -1234867, 1234867, -7483646, 7483646, -2223372036854775807,
2223372036854775807, -13.34, 13.34, -70000000605040302019.124312000091, 2223372036854775807, -13.34, 13.34, -70000000605040302019.124312000091,
70000000605040302019.124312000091, -234.432, -1234567.891011, 'four', 'four123456'); 70000000605040302019.124312000091, -234.432, -1234567.891011, 'four', 'four123456'),
INSERT INTO t2 VALUES(10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816, (10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816,
2223372036854775816, 22.34, 22.34, 70000000605040302019.124312000091, 2223372036854775816, 22.34, 22.34, 70000000605040302019.124312000091,
70000000605040302019.124312000091, 2344.32, 1234567.891011, 'five', 'five123456'); 70000000605040302019.124312000091, 2344.32, 1234567.891011, 'five', 'five123456'),
INSERT INTO t2 VALUES(-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460, (-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460,
-2223372036854775816, 2223372036854775816, -22.34, 22.34, -2223372036854775816, 2223372036854775816, -22.34, 22.34,
-70000000605040302019.124312000091, 70000000605040302029.124312000091, -70000000605040302019.124312000091, 70000000605040302029.124312000091,
-2344.32, -12345678.91011, 'four', 'five654321'); -2344.32, -12345678.91011, 'four', 'five654321'),
INSERT INTO t2 VALUES(1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807, (1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807,
2223372036854775807, 13.34, 13.34, 70000000605040302018.124312000091, 2223372036854775807, 13.34, 13.34, 70000000605040302018.124312000091,
70000000605040302029.124312000091, 234.432, 12345678.91011, 'six', 'six1234567'); 70000000605040302029.124312000091, 234.432, 12345678.91011, 'six', 'six1234567');
SELECT moda(t) FROM t2; SELECT moda(t) FROM t2;
@ -128,22 +128,22 @@ moda(dbl)
12345678.91011 12345678.91011
SELECT moda(v) FROM t2; SELECT moda(v) FROM t2;
moda(v) moda(v)
four five
SELECT moda(vc) FROM t2; SELECT moda(vc) FROM t2;
moda(vc) moda(vc)
five123456 five123456
SELECT i FROM t2 WHERE i >= (SELECT moda(i) FROM t2); SELECT i FROM t2 WHERE i >= (SELECT moda(i) FROM t2) order by i;
i i
74836460 7483646
7483646 7483646
74836460 74836460
7483646 74836460
SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2); SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2);
d2 d2
SELECT tu, moda(i) FROM t2 GROUP BY tu; SELECT tu, moda(i) FROM t2 GROUP BY tu;
tu moda(i) tu moda(i)
10 -74836460
1 7483646 1 7483646
10 -74836460
NULL 0 NULL 0
SELECT floor(moda(rl)) FROM t2; SELECT floor(moda(rl)) FROM t2;
floor(moda(rl)) floor(moda(rl))
@ -156,6 +156,6 @@ moda(floor(rl))
234 234
SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5; SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5;
t q1 t q1
10 10
-10 10 -10 10
10 10
DROP DATABASE mcs98_db; DROP DATABASE mcs98_db;

View File

@ -15,6 +15,7 @@ INSERT INTO t1 VALUES(NULL, NULL, 1234, -1000012898, 700000012898, 34.21, 900000
(12, 345, 1234, -1000012898, 700000012899, 34.22, 90000000000000000009.124312000092, 14.02, 3900000000000001.24), (12, 345, 1234, -1000012898, 700000012899, 34.22, 90000000000000000009.124312000092, 14.02, 3900000000000001.24),
(13, 346, 1235, NULL, NULL, NULL, NULL, NULL, NULL), (13, 346, 1235, NULL, NULL, NULL, NULL, NULL, NULL),
(28, 1345, 11234, -2000012898, 1700000012899, 134.22, 190000000000000000009.124312000092, 114.02, 13900000000000001.24); (28, 1345, 11234, -2000012898, 1700000012899, 134.22, 190000000000000000009.124312000092, 114.02, 13900000000000001.24);
SELECT moda(t) FROM t1; SELECT moda(t) FROM t1;
SELECT moda(s) FROM t1; SELECT moda(s) FROM t1;
SELECT moda(m) FROM t1; SELECT moda(m) FROM t1;
@ -44,28 +45,28 @@ CREATE TABLE t2 (
v char(4), v char(4),
vc varchar(10) vc varchar(10)
) engine=columnstore; ) engine=columnstore;
INSERT INTO t2 VALUES(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO t2 VALUES(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
INSERT INTO t2 VALUES(10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816, (10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816,
2223372036854775816, 22.34, 22.34, 70000000605040302018.124312000091, 2223372036854775816, 22.34, 22.34, 70000000605040302018.124312000091,
70000000605040302019.124312000091, 2344.32, 12345678.91011, 'five', 'five123456'); 70000000605040302019.124312000091, 2344.32, 12345678.91011, 'five', 'five123456'),
INSERT INTO t2 VALUES(-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460, (-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460,
-2223372036854775816, 2223372036854775816, -22.34, 22.34, -2223372036854775816, 2223372036854775816, -22.34, 22.34,
-70000000605040302019.124312000091, 70000000605040302029.124312000091, -70000000605040302019.124312000091, 70000000605040302029.124312000091,
-2344.32, -123456789.1011, 'four', 'five654321'); -2344.32, -123456789.1011, 'four', 'five654321'),
INSERT INTO t2 VALUES(1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807, (1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807,
2223372036854775807, 13.34, 13.34, 70000000605040302019.124312000091, 2223372036854775807, 13.34, 13.34, 70000000605040302019.124312000091,
70000000605040302029.124312000091, 234.432, 12345678.91011, 'five', 'five123456'); 70000000605040302029.124312000091, 234.432, 12345678.91011, 'five', 'five123456'),
INSERT INTO t2 VALUES(-1, 1, -201, 201, -1234867, 1234867, -7483646, 7483646, -2223372036854775807, (-1, 1, -201, 201, -1234867, 1234867, -7483646, 7483646, -2223372036854775807,
2223372036854775807, -13.34, 13.34, -70000000605040302019.124312000091, 2223372036854775807, -13.34, 13.34, -70000000605040302019.124312000091,
70000000605040302019.124312000091, -234.432, -1234567.891011, 'four', 'four123456'); 70000000605040302019.124312000091, -234.432, -1234567.891011, 'four', 'four123456'),
INSERT INTO t2 VALUES(10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816, (10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816,
2223372036854775816, 22.34, 22.34, 70000000605040302019.124312000091, 2223372036854775816, 22.34, 22.34, 70000000605040302019.124312000091,
70000000605040302019.124312000091, 2344.32, 1234567.891011, 'five', 'five123456'); 70000000605040302019.124312000091, 2344.32, 1234567.891011, 'five', 'five123456'),
INSERT INTO t2 VALUES(-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460, (-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460,
-2223372036854775816, 2223372036854775816, -22.34, 22.34, -2223372036854775816, 2223372036854775816, -22.34, 22.34,
-70000000605040302019.124312000091, 70000000605040302029.124312000091, -70000000605040302019.124312000091, 70000000605040302029.124312000091,
-2344.32, -12345678.91011, 'four', 'five654321'); -2344.32, -12345678.91011, 'four', 'five654321'),
INSERT INTO t2 VALUES(1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807, (1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807,
2223372036854775807, 13.34, 13.34, 70000000605040302018.124312000091, 2223372036854775807, 13.34, 13.34, 70000000605040302018.124312000091,
70000000605040302029.124312000091, 234.432, 12345678.91011, 'six', 'six1234567'); 70000000605040302029.124312000091, 234.432, 12345678.91011, 'six', 'six1234567');
SELECT moda(t) FROM t2; SELECT moda(t) FROM t2;
@ -86,12 +87,16 @@ SELECT moda(rl) FROM t2;
SELECT moda(dbl) FROM t2; SELECT moda(dbl) FROM t2;
SELECT moda(v) FROM t2; SELECT moda(v) FROM t2;
SELECT moda(vc) FROM t2; SELECT moda(vc) FROM t2;
SELECT i FROM t2 WHERE i >= (SELECT moda(i) FROM t2); --sorted_result
SELECT i FROM t2 WHERE i >= (SELECT moda(i) FROM t2) order by i;
--sorted_result
SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2); SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2);
--sorted_result
SELECT tu, moda(i) FROM t2 GROUP BY tu; SELECT tu, moda(i) FROM t2 GROUP BY tu;
SELECT floor(moda(rl)) FROM t2; SELECT floor(moda(rl)) FROM t2;
SELECT ceiling(moda(dbl)) FROM t2; SELECT ceiling(moda(dbl)) FROM t2;
SELECT moda(floor(rl)) FROM t2; SELECT moda(floor(rl)) FROM t2;
--sorted_result
SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5; SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5;
# Clean UP # Clean UP
DROP DATABASE mcs98_db; DROP DATABASE mcs98_db;

View File

@ -589,7 +589,7 @@ mcsv1_UDAF::ReturnCode Moda_impl_T<string>::evaluate(mcsv1Context* context, stat
else if (iter->second == maxCnt) else if (iter->second == maxCnt)
{ {
// Tie breaker: choose smallest according to collation // Tie breaker: choose smallest according to collation
if (cs.strnncollsp(val, lastVal) < 0) if (cs.strnncollsp(iter->first, lastVal) < 0)
{ {
val = iter->first; val = iter->first;
} }