From 05bdddf3a988fe80801a1a5d0f0dc9e94fe95d46 Mon Sep 17 00:00:00 2001 From: "david.hall" Date: Mon, 15 Aug 2022 15:50:15 -0500 Subject: [PATCH 1/3] MCOL-5092 addendum modify moda() mtr tests with order by fix an issue in moda() evaluate for string types --- .../basic/r/mcs98_moda_function.result | 18 +++++++++--------- .../basic/t/mcs98_moda_function.test | 8 ++++---- utils/regr/moda.cpp | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/mysql-test/columnstore/basic/r/mcs98_moda_function.result b/mysql-test/columnstore/basic/r/mcs98_moda_function.result index 45899a4af..271f256df 100644 --- a/mysql-test/columnstore/basic/r/mcs98_moda_function.result +++ b/mysql-test/columnstore/basic/r/mcs98_moda_function.result @@ -132,19 +132,19 @@ four SELECT moda(vc) FROM t2; moda(vc) 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 -74836460 +7483646 7483646 74836460 -7483646 -SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2); +74836460 +SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2) order by d2; d2 -SELECT tu, moda(i) FROM t2 GROUP BY tu; +SELECT tu, moda(i) FROM t2 GROUP BY tu order by tu; tu moda(i) -10 -74836460 -1 7483646 NULL 0 +1 7483646 +10 -74836460 SELECT floor(moda(rl)) FROM t2; floor(moda(rl)) 234 @@ -154,8 +154,8 @@ ceiling(moda(dbl)) SELECT moda(floor(rl)) FROM t2; moda(floor(rl)) 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 order by t; t q1 -10 10 -10 10 +10 10 DROP DATABASE mcs98_db; diff --git a/mysql-test/columnstore/basic/t/mcs98_moda_function.test b/mysql-test/columnstore/basic/t/mcs98_moda_function.test index 807894eb9..4b7274289 100644 --- a/mysql-test/columnstore/basic/t/mcs98_moda_function.test +++ b/mysql-test/columnstore/basic/t/mcs98_moda_function.test @@ -86,13 +86,13 @@ SELECT moda(rl) FROM t2; SELECT moda(dbl) FROM t2; SELECT moda(v) FROM t2; SELECT moda(vc) FROM t2; -SELECT i FROM t2 WHERE i >= (SELECT moda(i) FROM t2); -SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2); -SELECT tu, moda(i) FROM t2 GROUP BY tu; +SELECT i FROM t2 WHERE i >= (SELECT moda(i) FROM t2) order by i; +SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2) order by d2; +SELECT tu, moda(i) FROM t2 GROUP BY tu order by tu; SELECT floor(moda(rl)) FROM t2; SELECT ceiling(moda(dbl)) FROM t2; SELECT moda(floor(rl)) FROM t2; -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 order by t; # Clean UP DROP DATABASE mcs98_db; diff --git a/utils/regr/moda.cpp b/utils/regr/moda.cpp index aae9584ac..ce4c9a5d2 100644 --- a/utils/regr/moda.cpp +++ b/utils/regr/moda.cpp @@ -589,7 +589,7 @@ mcsv1_UDAF::ReturnCode Moda_impl_T::evaluate(mcsv1Context* context, stat else if (iter->second == maxCnt) { // Tie breaker: choose smallest according to collation - if (cs.strnncollsp(val, lastVal) < 0) + if (cs.strnncollsp(iter->first, lastVal) < 0) { val = iter->first; } From 509913364270d91d57f47d9e013d88dd1631c5a9 Mon Sep 17 00:00:00 2001 From: "david.hall" Date: Tue, 16 Aug 2022 09:14:16 -0500 Subject: [PATCH 2/3] MCOL-5092 correct mtr result --- mysql-test/columnstore/basic/r/mcs98_moda_function.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/columnstore/basic/r/mcs98_moda_function.result b/mysql-test/columnstore/basic/r/mcs98_moda_function.result index 271f256df..19ec4dbd3 100644 --- a/mysql-test/columnstore/basic/r/mcs98_moda_function.result +++ b/mysql-test/columnstore/basic/r/mcs98_moda_function.result @@ -128,7 +128,7 @@ moda(dbl) 12345678.91011 SELECT moda(v) FROM t2; moda(v) -four +five SELECT moda(vc) FROM t2; moda(vc) five123456 From 5c62d96b712081b7bdea251390f2f426d362a10c Mon Sep 17 00:00:00 2001 From: "david.hall" Date: Wed, 17 Aug 2022 09:07:47 -0500 Subject: [PATCH 3/3] MCOL-5092 Use sorted_result to get consistent results in mtr --- .../basic/r/mcs98_moda_function.result | 36 ++++++++--------- .../basic/t/mcs98_moda_function.test | 39 +++++++++++-------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/mysql-test/columnstore/basic/r/mcs98_moda_function.result b/mysql-test/columnstore/basic/r/mcs98_moda_function.result index 19ec4dbd3..59b57a722 100644 --- a/mysql-test/columnstore/basic/r/mcs98_moda_function.result +++ b/mysql-test/columnstore/basic/r/mcs98_moda_function.result @@ -54,28 +54,28 @@ 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, +INSERT INTO t2 VALUES(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(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, +70000000605040302019.124312000091, 2344.32, 12345678.91011, 'five', 'five123456'), +(-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, +-2344.32, -123456789.1011, 'four', 'five654321'), +(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, +70000000605040302029.124312000091, 234.432, 12345678.91011, 'five', 'five123456'), +(-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, +70000000605040302019.124312000091, -234.432, -1234567.891011, 'four', 'four123456'), +(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, +70000000605040302019.124312000091, 2344.32, 1234567.891011, 'five', 'five123456'), +(-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, +-2344.32, -12345678.91011, 'four', 'five654321'), +(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; @@ -138,13 +138,13 @@ i 7483646 74836460 74836460 -SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2) order by d2; +SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2); d2 -SELECT tu, moda(i) FROM t2 GROUP BY tu order by tu; +SELECT tu, moda(i) FROM t2 GROUP BY tu; tu moda(i) -NULL 0 1 7483646 10 -74836460 +NULL 0 SELECT floor(moda(rl)) FROM t2; floor(moda(rl)) 234 @@ -154,7 +154,7 @@ ceiling(moda(dbl)) SELECT moda(floor(rl)) FROM t2; moda(floor(rl)) 234 -SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5 order by t; +SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5; t q1 -10 10 10 10 diff --git a/mysql-test/columnstore/basic/t/mcs98_moda_function.test b/mysql-test/columnstore/basic/t/mcs98_moda_function.test index 4b7274289..5d70bf61a 100644 --- a/mysql-test/columnstore/basic/t/mcs98_moda_function.test +++ b/mysql-test/columnstore/basic/t/mcs98_moda_function.test @@ -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), (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; SELECT moda(s) FROM t1; SELECT moda(m) FROM t1; @@ -44,28 +45,28 @@ CREATE TABLE t2 ( 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, +INSERT INTO t2 VALUES(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + (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, + 70000000605040302019.124312000091, 2344.32, 12345678.91011, 'five', 'five123456'), + (-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, + -2344.32, -123456789.1011, 'four', 'five654321'), + (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, + 70000000605040302029.124312000091, 234.432, 12345678.91011, 'five', 'five123456'), + (-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, + 70000000605040302019.124312000091, -234.432, -1234567.891011, 'four', 'four123456'), + (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, + 70000000605040302019.124312000091, 2344.32, 1234567.891011, 'five', 'five123456'), + (-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, + -2344.32, -12345678.91011, 'four', 'five654321'), + (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; @@ -86,13 +87,17 @@ SELECT moda(rl) FROM t2; SELECT moda(dbl) FROM t2; SELECT moda(v) FROM t2; SELECT moda(vc) FROM t2; +--sorted_result SELECT i FROM t2 WHERE i >= (SELECT moda(i) FROM t2) order by i; -SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2) order by d2; -SELECT tu, moda(i) FROM t2 GROUP BY tu order by tu; +--sorted_result +SELECT d2 FROM t2 WHERE d2 < (SELECT moda(d2) FROM t2); +--sorted_result +SELECT tu, moda(i) FROM t2 GROUP BY tu; SELECT floor(moda(rl)) FROM t2; SELECT ceiling(moda(dbl)) FROM t2; SELECT moda(floor(rl)) FROM t2; -SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5 order by t; +--sorted_result +SELECT t, moda(tu) 'q1' FROM t2 GROUP BY t HAVING moda(tu) > 5; # Clean UP DROP DATABASE mcs98_db;