diff options
Diffstat (limited to 'mysql-test/main/custom_aggregate_functions.result')
-rw-r--r-- | mysql-test/main/custom_aggregate_functions.result | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/mysql-test/main/custom_aggregate_functions.result b/mysql-test/main/custom_aggregate_functions.result index 67be44c43f7..4060d6665f6 100644 --- a/mysql-test/main/custom_aggregate_functions.result +++ b/mysql-test/main/custom_aggregate_functions.result @@ -947,3 +947,209 @@ select f1('2001-01-01'),cast(f1('2001-01-01') as time); f1('2001-01-01') cast(f1('2001-01-01') as time) 2001-01-01 00:00:00 drop function f1; +# +# MDEV-15957 Unexpected "Data too long" when doing CREATE..SELECT with stored functions +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2),(3); +CREATE AGGREGATE FUNCTION f1(x INT) RETURNS INT(3) +BEGIN +DECLARE res INT DEFAULT 0; +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN res-200; +LOOP +FETCH GROUP NEXT ROW; +SET res= res + x; +END LOOP; +RETURN res; +END; +$$ +CREATE TABLE t2 AS SELECT CONCAT(f1(a)) FROM t1; +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `CONCAT(f1(a))` varchar(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1,t2; +DROP FUNCTION f1; +CREATE AGGREGATE FUNCTION f1() RETURNS TINYTEXT CHARACTER SET latin1 +BEGIN +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN ''; +LOOP +FETCH GROUP NEXT ROW; +END LOOP; +RETURN ''; +END; +$$ +CREATE TABLE t1 AS SELECT f1() AS c1, COALESCE(f1()) AS c2, CONCAT(f1()) AS c3; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` tinytext DEFAULT NULL, + `c2` tinytext DEFAULT NULL, + `c3` varchar(255) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP FUNCTION f1; +CREATE AGGREGATE FUNCTION f1() RETURNS TEXT CHARACTER SET latin1 +BEGIN +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN ''; +LOOP +FETCH GROUP NEXT ROW; +END LOOP; +RETURN ''; +END; +$$ +CREATE TABLE t1 AS SELECT f1() AS c1, COALESCE(f1()) AS c2, CONCAT(f1()) AS c3; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` text DEFAULT NULL, + `c2` text DEFAULT NULL, + `c3` text DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP FUNCTION f1; +CREATE AGGREGATE FUNCTION f1() RETURNS MEDIUMTEXT CHARACTER SET latin1 +BEGIN +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN ''; +LOOP +FETCH GROUP NEXT ROW; +END LOOP; +RETURN ''; +END; +$$ +CREATE TABLE t1 AS SELECT f1() AS c1, COALESCE(f1()) AS c2, CONCAT(f1()) AS c3; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` mediumtext DEFAULT NULL, + `c2` mediumtext DEFAULT NULL, + `c3` mediumtext DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP FUNCTION f1; +CREATE AGGREGATE FUNCTION f1() RETURNS LONGTEXT CHARACTER SET latin1 +BEGIN +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN ''; +LOOP +FETCH GROUP NEXT ROW; +END LOOP; +RETURN ''; +END; +$$ +CREATE TABLE t1 AS SELECT f1() AS c1, COALESCE(f1()) AS c2, CONCAT(f1()) AS c3; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` longtext DEFAULT NULL, + `c2` longtext DEFAULT NULL, + `c3` longtext DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP FUNCTION f1; +CREATE AGGREGATE FUNCTION f1() RETURNS TINYTEXT CHARACTER SET utf8 +BEGIN +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN ''; +LOOP +FETCH GROUP NEXT ROW; +END LOOP; +RETURN ''; +END; +$$ +CREATE TABLE t1 AS SELECT f1() AS c1, COALESCE(f1()) AS c2, CONCAT(f1()) AS c3; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` tinytext CHARACTER SET utf8 DEFAULT NULL, + `c2` text CHARACTER SET utf8 DEFAULT NULL, + `c3` varchar(255) CHARACTER SET utf8 DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP FUNCTION f1; +CREATE AGGREGATE FUNCTION f1() RETURNS TEXT CHARACTER SET utf8 +BEGIN +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN ''; +LOOP +FETCH GROUP NEXT ROW; +END LOOP; +RETURN ''; +END; +$$ +CREATE TABLE t1 AS SELECT f1() AS c1, COALESCE(f1()) AS c2, CONCAT(f1()) AS c3; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` text CHARACTER SET utf8 DEFAULT NULL, + `c2` mediumtext CHARACTER SET utf8 DEFAULT NULL, + `c3` mediumtext CHARACTER SET utf8 DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP FUNCTION f1; +CREATE AGGREGATE FUNCTION f1() RETURNS MEDIUMTEXT CHARACTER SET utf8 +BEGIN +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN ''; +LOOP +FETCH GROUP NEXT ROW; +END LOOP; +RETURN ''; +END; +$$ +CREATE TABLE t1 AS SELECT f1() AS c1, COALESCE(f1()) AS c2, CONCAT(f1()) AS c3; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` mediumtext CHARACTER SET utf8 DEFAULT NULL, + `c2` longtext CHARACTER SET utf8 DEFAULT NULL, + `c3` longtext CHARACTER SET utf8 DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP FUNCTION f1; +CREATE AGGREGATE FUNCTION f1() RETURNS LONGTEXT CHARACTER SET utf8 +BEGIN +DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN ''; +LOOP +FETCH GROUP NEXT ROW; +END LOOP; +RETURN ''; +END; +$$ +CREATE TABLE t1 AS SELECT f1() AS c1, COALESCE(f1()) AS c2, CONCAT(f1()) AS c3; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` longtext CHARACTER SET utf8 DEFAULT NULL, + `c2` longtext CHARACTER SET utf8 DEFAULT NULL, + `c3` longtext CHARACTER SET utf8 DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP FUNCTION f1; +# +# MDEV-14520: Custom aggregate functions work incorrectly with WITH ROLLUP clause +# +create aggregate function agg_sum(x INT) returns INT +begin +declare z int default 0; +declare continue handler for not found return z; +loop +fetch group next row; +set z= z+x; +end loop; +end| +create table t1 (i int); +insert into t1 values (1),(2),(2),(3); +select i, agg_sum(i) from t1 group by i with rollup; +i agg_sum(i) +1 1 +2 4 +3 3 +NULL 8 +# +# Compare with +select i, sum(i) from t1 group by i with rollup; +i sum(i) +1 1 +2 4 +3 3 +NULL 8 +drop function agg_sum; +drop table t1; |