[MDEV-28216] Incorrect Join Execution When Controlling Outer Join Operations Created: 2022-04-02  Updated: 2023-04-27

Status: Confirmed
Project: MariaDB Server
Component/s: Optimizer
Affects Version/s: 10.8.2, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8
Fix Version/s: 10.4, 10.5, 10.6

Type: Bug Priority: Major
Reporter: Xiu Tang Assignee: Sergei Petrunia
Resolution: Unresolved Votes: 0
Labels: None


 Description   

CREATE TABLE `t1` (
`c0` char(100) DEFAULT NULL,
KEY `ic0` (`c0`)
);
INSERT INTO `t1` VALUES ('!n0-dZx*'),('1678835511'),('E'),('QZI');

CREATE TABLE `t2` (
`c0` varchar(100) DEFAULT NULL,
`c1` char(100) DEFAULT NULL,
UNIQUE KEY `c0` (`c0`)
);
INSERT INTO `t2` VALUES ('-145500836','\n'),('^U?N','');

CREATE TABLE `t3` (
`c0` char(100) NOT NULL,
`c1` varchar(100) DEFAULT NULL,
PRIMARY KEY (`c0`)
);
INSERT INTO `t3` VALUES ('','
1idpE'),('-323326722','');

mysql> SELECT t3.c0 FROM t1 CROSS JOIN t2 LEFT OUTER JOIN t3 ON t2.c1 = t3.c1 WHERE (t1.c0 IN ((t2.c0 REGEXP t2.c1), t2.c0));
------

c0

------

NULL
NULL
NULL

------
3 rows in set, 6 warnings (0.00 sec)

mysql> SET optimizer_switch='outer_join_with_cache=off';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT t3.c0 FROM t1 CROSS JOIN t2 LEFT OUTER JOIN t3 ON t2.c1 = t3.c1 WHERE (t1.c0 IN ((t2.c0 REGEXP t2.c1), t2.c0));
------------

c0

------------

NULL
-323326722
NULL
NULL

------------
4 rows in set, 6 warnings (0.01 sec)



 Comments   
Comment by Alice Sherepa [ 2022-04-07 ]

Thanks! I repeated as described on 10.2 ( 53b580a91c12e927) -10.8

Generated at Thu Feb 08 09:58:59 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.