diff options
Diffstat (limited to 'mysql-test/t/func_group.test')
-rw-r--r-- | mysql-test/t/func_group.test | 39 |
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; |