@@ -1036,6 +1036,71 @@ set statement optimizer_switch='split_materialized=off' for $query;
10361036a b name total_amt
103710371 NULL A 10
10381038DROP TABLE t1,t2;
1039+ #
1040+ # MDEV-37407 Wrong result with ORDER BY LIMIT
1041+ # Both, with and without split_materialized should
1042+ # produce the same results
1043+ #
1044+ SET @save_optimizer_switch= @@optimizer_switch;
1045+ CREATE TABLE t1
1046+ (a varchar(35), b varchar(4), KEY (a))
1047+ ENGINE=InnoDB;
1048+ INSERT INTO t1 VALUES
1049+ ('Albania','AXA'), ('Australia','AUS'), ('Myanmar','MMR'),
1050+ ('Bahamas','BS'), ('Brazil','BRA'), ('Barbados','BRB');
1051+ CREATE TABLE t2
1052+ (a varchar(4), b varchar(50), PRIMARY KEY (b,a), KEY (a))
1053+ ENGINE=InnoDB;
1054+ INSERT INTO t2 VALUES
1055+ ('AUS','Anglican'), ('MMR','Baptist'), ('BS','Anglican'),
1056+ ('BS','Baptist'), ('BS','Methodist'), ('BRB','Methodist'),
1057+ ('BRA','Baptist'), ('USA','Baptist');
1058+ ANALYZE TABLE t1 PERSISTENT FOR ALL;
1059+ Table Op Msg_type Msg_text
1060+ test.t1 analyze status Engine-independent statistics collected
1061+ test.t1 analyze status OK
1062+ ANALYZE TABLE t2 PERSISTENT FOR ALL;
1063+ Table Op Msg_type Msg_text
1064+ test.t2 analyze status Engine-independent statistics collected
1065+ test.t2 analyze status OK
1066+ set optimizer_switch='split_materialized=off';
1067+ SELECT t1.a
1068+ FROM (SELECT a FROM t2 GROUP BY a ORDER BY a, COUNT(DISTINCT b) LIMIT 1) dt
1069+ JOIN t1 ON
1070+ dt.a=t1.b
1071+ WHERE t1.a LIKE 'B%';
1072+ a
1073+ set optimizer_switch='split_materialized=on';
1074+ SELECT t1.a
1075+ FROM (SELECT a FROM t2 GROUP BY a ORDER BY a, COUNT(DISTINCT b) LIMIT 1) dt
1076+ JOIN t1 ON
1077+ dt.a=t1.b
1078+ WHERE t1.a LIKE 'B%';
1079+ a
1080+ DROP TABLE t1,t2;
1081+ SET optimizer_switch= @save_optimizer_switch;
1082+ #
1083+ # MDEV-29638 Crash when considering Split-Materialized plan
1084+ #
1085+ set @save_optimizer_switch= @@optimizer_switch;
1086+ set optimizer_switch='condition_pushdown_for_derived=off,split_materialized=on';
1087+ CREATE TABLE t1 (id int PRIMARY KEY)engine=innodb;
1088+ CREATE TABLE t2 (id int PRIMARY KEY, c int) engine=innodb;
1089+ CREATE TABLE t3 (id int PRIMARY KEY, a int , b int, KEY (a))engine=innodb;
1090+ SELECT * FROM
1091+ (
1092+ SELECT DISTINCT t1.id
1093+ FROM t1 JOIN
1094+ (
1095+ SELECT t2.id FROM t2 JOIN t3
1096+ ON t3.id = t2.c
1097+ WHERE (t3.a > 2 AND t3.b = 2)
1098+ GROUP BY t2.id
1099+ ) m2 ON m2.id = t1.id
1100+ ) dt;
1101+ id
1102+ drop table t1, t2, t3;
1103+ SET optimizer_switch= @save_optimizer_switch;
10391104# End of 10.11 tests
10401105#
10411106# MDEV-37057 Wrong result with LATERAL DERIVED
0 commit comments