summaryrefslogtreecommitdiff
path: root/mysql-test/t/func_group.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/t/func_group.test')
-rw-r--r--mysql-test/t/func_group.test39
1 files changed, 38 insertions, 1 deletions
diff --git a/mysql-test/t/func_group.test b/mysql-test/t/func_group.test
index 363f089e8d7..bd3ed4ad32d 100644
--- a/mysql-test/t/func_group.test
+++ b/mysql-test/t/func_group.test
@@ -3,7 +3,7 @@
#
--disable_warnings
-drop table if exists t1,t2;
+drop table if exists t1,t2,t3,t4,t5,t6;
--enable_warnings
set @sav_dpi= @@div_precision_increment;
@@ -1528,3 +1528,40 @@ insert into t1 (b) values (INET_ATON('192.168.200.200'));
explain select MIN(b) from t1 where b >= inet_aton('192.168.119.32');
DROP TABLE t1;
+--echo #
+--echo # MDEV-6743 crash in GROUP_CONCAT(IF () ORDER BY 1)
+--echo #
+
+CREATE TABLE t1 (pk INT, t2_id INT, t5_id INT, PRIMARY KEY (pk));
+INSERT INTO t1 VALUES (1,3,12),(2,3,15);
+
+CREATE TABLE t2 (pk INT, PRIMARY KEY (pk));
+INSERT INTO t2 VALUES (4),(5);
+
+CREATE TABLE t3 (t2_id INT, t4_id INT);
+INSERT INTO t3 VALUES (6,11),(7,12);
+
+CREATE TABLE t4 (id INT);
+INSERT INTO t4 VALUES (13),(14);
+
+CREATE TABLE t5 (pk INT, f VARCHAR(50), t6_id INT, PRIMARY KEY (pk));
+INSERT INTO t5 VALUES (9,'FOO',NULL);
+
+CREATE TABLE t6 (pk INT, f VARCHAR(120), b TINYINT(4), PRIMARY KEY (pk));
+
+PREPARE stmt FROM "
+ SELECT t1.t2_id, GROUP_CONCAT(IF (t6.b, t6.f, t5.f) ORDER BY 1)
+ FROM t1
+ JOIN t2 ON t1.t2_id = t2.pk
+ JOIN t3 ON t2.pk = t3.t2_id
+ JOIN t4 ON t4.id = t3.t4_id
+ JOIN t5 ON t1.t5_id = t5.pk
+ LEFT JOIN t6 ON t6.pk = t5.t6_id
+ GROUP BY t1.t2_id
+";
+
+EXECUTE stmt;
+EXECUTE stmt;
+EXECUTE stmt;
+
+DROP TABLE t1,t2,t3,t4,t5,t6;