summaryrefslogtreecommitdiff
path: root/mysql-test/main/custom_aggregate_functions.result
diff options
context:
space:
mode:
authorGalina Shalygina <galina.shalygina@mariadb.com>2018-06-01 21:57:10 +0200
committerGalina Shalygina <galina.shalygina@mariadb.com>2018-06-01 21:57:10 +0200
commit6db465d7ce455cf75ec224108cbe61ca8be63d3d (patch)
tree9648ff1fc677eebb60b278c2e2c13131934ed2a0 /mysql-test/main/custom_aggregate_functions.result
parentffe83e8e7bef32eb2a80aad2d382f0b023dd3a44 (diff)
parent4a49f7f88cfa82ae6eb8e7b5a528e91416b33b52 (diff)
downloadmariadb-git-shagalla-10.4.tar.gz
Merge 10.3.7 into 10.4shagalla-10.4
Diffstat (limited to 'mysql-test/main/custom_aggregate_functions.result')
-rw-r--r--mysql-test/main/custom_aggregate_functions.result206
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;