You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
Mcol 5092 MODA uses wrong column width for some types (#2450)
* MCOL-5092 Ensure column width is correct for datatype Change MODA return type to STRING Modify MODA to handle every numeric type * MCOL-5162 MODA to support char and varchar with collation support Fixes to the aggregate bit functions When we fixed the storage sign issue for MCOL-5092, it uncovered a problem in the bit aggregates (bit_and, bit_or and bit_xor). These aggregates should always return UBIGINT, but they relied on the type of the argument column, which gave bad results.
This commit is contained in:
161
mysql-test/columnstore/basic/r/mcs98_moda_function.result
Normal file
161
mysql-test/columnstore/basic/r/mcs98_moda_function.result
Normal file
@ -0,0 +1,161 @@
|
||||
DROP DATABASE IF EXISTS mcs98_db;
|
||||
CREATE DATABASE mcs98_db;
|
||||
USE mcs98_db;
|
||||
CREATE TABLE t1 (t TINYINT, s SMALLINT, m MEDIUMINT, i INT, bi BIGINT, d1 DECIMAL(5,2), d2 DECIMAL(36,12), rl FLOAT, dbl DOUBLE)ENGINE=Columnstore;
|
||||
INSERT INTO t1 VALUES(NULL, NULL, 1234, -1000012898, 700000012898, 34.21, 90000000000000000009.124312000091, 14.01, 3900000000000001.23),
|
||||
(12, 345, 1234, -1000012899, 70000001289, 34.21, 90000000000000000009.124312000091, 14.01, 3900000000000001.23),
|
||||
(12, 345, 1234, -1000012898, 700000012899, 34.22, 90000000000000000009.124312000092, 14.02, 3900000000000001.24),
|
||||
(13, 346, 1235, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(28, 1345, 11234, -2000012898, 1700000012899, 134.22, 190000000000000000009.124312000092, 114.02, 13900000000000001.24);
|
||||
SELECT moda(t) FROM t1;
|
||||
moda(t)
|
||||
12
|
||||
SELECT moda(s) FROM t1;
|
||||
moda(s)
|
||||
345
|
||||
SELECT moda(m) FROM t1;
|
||||
moda(m)
|
||||
1234
|
||||
SELECT moda(i) FROM t1;
|
||||
moda(i)
|
||||
-1000012898
|
||||
SELECT moda(bi) FROM t1;
|
||||
moda(bi)
|
||||
700000012899
|
||||
SELECT moda(d1) FROM t1;
|
||||
moda(d1)
|
||||
34.21
|
||||
SELECT moda(d2) FROM t1;
|
||||
moda(d2)
|
||||
90000000000000000009.124312000091
|
||||
SELECT moda(rl) FROM t1;
|
||||
moda(rl)
|
||||
14.010000228881836
|
||||
SELECT moda(dbl) FROM t1;
|
||||
moda(dbl)
|
||||
3.900000000000001e15
|
||||
CREATE TABLE t2 (
|
||||
t tinyint,
|
||||
tu tinyint unsigned,
|
||||
s smallint,
|
||||
su smallint unsigned,
|
||||
m mediumint,
|
||||
mu mediumint unsigned,
|
||||
i int,
|
||||
iu int unsigned,
|
||||
b bigint,
|
||||
bu bigint unsigned,
|
||||
d1 decimal(5,2),
|
||||
du1 decimal(5,2) unsigned,
|
||||
d2 decimal(36,12),
|
||||
du2 decimal(36,12) unsigned,
|
||||
rl float,
|
||||
dbl double,
|
||||
v char(4),
|
||||
vc varchar(10)
|
||||
) 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(10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816,
|
||||
2223372036854775816, 22.34, 22.34, 70000000605040302018.124312000091,
|
||||
70000000605040302019.124312000091, 2344.32, 12345678.91011, 'five', 'five123456');
|
||||
INSERT INTO t2 VALUES(-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460,
|
||||
-2223372036854775816, 2223372036854775816, -22.34, 22.34,
|
||||
-70000000605040302019.124312000091, 70000000605040302029.124312000091,
|
||||
-2344.32, -123456789.1011, 'four', 'five654321');
|
||||
INSERT INTO t2 VALUES(1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807,
|
||||
2223372036854775807, 13.34, 13.34, 70000000605040302019.124312000091,
|
||||
70000000605040302029.124312000091, 234.432, 12345678.91011, 'five', 'five123456');
|
||||
INSERT INTO t2 VALUES(-1, 1, -201, 201, -1234867, 1234867, -7483646, 7483646, -2223372036854775807,
|
||||
2223372036854775807, -13.34, 13.34, -70000000605040302019.124312000091,
|
||||
70000000605040302019.124312000091, -234.432, -1234567.891011, 'four', 'four123456');
|
||||
INSERT INTO t2 VALUES(10, 10, 2010, 2010, 1237567, 1237567, 74836460, 74836460, 2223372036854775816,
|
||||
2223372036854775816, 22.34, 22.34, 70000000605040302019.124312000091,
|
||||
70000000605040302019.124312000091, 2344.32, 1234567.891011, 'five', 'five123456');
|
||||
INSERT INTO t2 VALUES(-10, 10, -2010, 2010, -1237567, 1237567, -74836460, 74836460,
|
||||
-2223372036854775816, 2223372036854775816, -22.34, 22.34,
|
||||
-70000000605040302019.124312000091, 70000000605040302029.124312000091,
|
||||
-2344.32, -12345678.91011, 'four', 'five654321');
|
||||
INSERT INTO t2 VALUES(1, 1, 201, 201, 1234867, 1234867, 7483646, 7483646, 2223372036854775807,
|
||||
2223372036854775807, 13.34, 13.34, 70000000605040302018.124312000091,
|
||||
70000000605040302029.124312000091, 234.432, 12345678.91011, 'six', 'six1234567');
|
||||
SELECT moda(t) FROM t2;
|
||||
moda(t)
|
||||
1
|
||||
SELECT moda(tu) FROM t2;
|
||||
moda(tu)
|
||||
10
|
||||
SELECT moda(s) FROM t2;
|
||||
moda(s)
|
||||
201
|
||||
SELECT moda(su) FROM t2;
|
||||
moda(su)
|
||||
2010
|
||||
SELECT moda(m) FROM t2;
|
||||
moda(m)
|
||||
1234867
|
||||
SELECT moda(mu) FROM t2;
|
||||
moda(mu)
|
||||
1237567
|
||||
SELECT moda(i) FROM t2;
|
||||
moda(i)
|
||||
7483646
|
||||
SELECT moda(iu) FROM t2;
|
||||
moda(iu)
|
||||
74836460
|
||||
SELECT moda(b) FROM t2;
|
||||
moda(b)
|
||||
2223372036854775807
|
||||
SELECT moda(bu) FROM t2;
|
||||
moda(bu)
|
||||
2223372036854775816
|
||||
SELECT moda(d1) FROM t2;
|
||||
moda(d1)
|
||||
13.34
|
||||
SELECT moda(du1) FROM t2;
|
||||
moda(du1)
|
||||
22.34
|
||||
SELECT moda(d2) FROM t2;
|
||||
moda(d2)
|
||||
-70000000605040302019.124312000091
|
||||
SELECT moda(du2) FROM t2;
|
||||
moda(du2)
|
||||
70000000605040302029.124312000091
|
||||
SELECT moda(rl) FROM t2;
|
||||
moda(rl)
|
||||
234.4320068359375
|
||||
SELECT moda(dbl) FROM t2;
|
||||
moda(dbl)
|
||||
12345678.91011
|
||||
SELECT moda(v) FROM t2;
|
||||
moda(v)
|
||||
four
|
||||
SELECT moda(vc) FROM t2;
|
||||
moda(vc)
|
||||
five123456
|
||||
SELECT i FROM t2 WHERE i >= (SELECT moda(i) FROM t2);
|
||||
i
|
||||
74836460
|
||||
7483646
|
||||
74836460
|
||||
7483646
|
||||
SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2);
|
||||
d2
|
||||
SELECT tu, moda(i) FROM t2 GROUP BY tu;
|
||||
tu moda(i)
|
||||
10 -74836460
|
||||
1 7483646
|
||||
NULL 0
|
||||
SELECT floor(moda(rl)) FROM t2;
|
||||
floor(moda(rl))
|
||||
234
|
||||
SELECT ceiling(moda(dbl)) FROM t2;
|
||||
ceiling(moda(dbl))
|
||||
12345679
|
||||
SELECT moda(floor(rl)) FROM t2;
|
||||
moda(floor(rl))
|
||||
234
|
||||
SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5;
|
||||
t q1
|
||||
10 10
|
||||
-10 10
|
||||
DROP DATABASE mcs98_db;
|
Reference in New Issue
Block a user