[MDEV-32186] Unexpected Results by join_cache_bka Created: 2023-09-16  Updated: 2023-11-28

Status: Confirmed
Project: MariaDB Server
Component/s: Optimizer
Affects Version/s: 10.4, 10.5, 10.6, 10.9, 10.10, 10.11, 11.0, 11.1.2
Fix Version/s: 10.4, 10.5, 10.6, 10.11, 11.0

Type: Bug Priority: Major
Reporter: Jinsheng Ba Assignee: Sergei Petrunia
Resolution: Unresolved Votes: 0
Labels: None

Attachments: File test.sql    
Issue Links:
Relates
relates to MDEV-32143 Unexpected Results by mrr Confirmed

 Description   

Two queries return different results.

 
CREATE TABLE t0(c0 CHAR(100));
CREATE TABLE t1(c0 CHAR(100) UNIQUE);
SET SESSION join_cache_level = 7;
REPAIR TABLE t1, t0 QUICK EXTENDED;
INSERT INTO t0 VALUES ('%S');
INSERT INTO t1 VALUES ('');
INSERT INTO t1 VALUES ('*');
INSERT INTO t0 VALUES ('');
INSERT INTO t1 VALUES ('\r');
 
SELECT t0.c0 FROM t0 NATURAL JOIN t1 WHERE TRUE RLIKE t1.c0; -- {}
SET STATEMENT optimizer_switch = 'join_cache_bka=off' FOR SELECT t0.c0 FROM t0 NATURAL JOIN t1 WHERE TRUE RLIKE t1.c0; -- empty



 Comments   
Comment by Alice Sherepa [ 2023-09-18 ]

Thanks!
I repeated as described on 10.4-11.1:

MariaDB [test]> CREATE TABLE t0(c0 CHAR(100));
Query OK, 0 rows affected (0,030 sec)
 
MariaDB [test]> CREATE TABLE t1(c0 CHAR(100) UNIQUE);
Query OK, 0 rows affected (0,032 sec)
 
MariaDB [test]> INSERT INTO t0 VALUES ('%S'),('');
Query OK, 2 rows affected (0,003 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
MariaDB [test]> INSERT INTO t1 VALUES (''),('*'),('\r');
Query OK, 3 rows affected (0,003 sec)
Records: 3  Duplicates: 0  Warnings: 0
 
MariaDB [test]> SET SESSION join_cache_level = 7;
Query OK, 0 rows affected (0,000 sec)
 
MariaDB [test]> SELECT t0.c0 FROM t0 NATURAL JOIN t1 WHERE TRUE RLIKE t1.c0; 
+------+
| c0   |
+------+
|      |
+------+
1 row in set (0,001 sec)
 
MariaDB [test]> SET STATEMENT optimizer_switch = 'join_cache_bka=off' FOR SELECT t0.c0 FROM t0 NATURAL JOIN t1 WHERE TRUE RLIKE t1.c0; 
Empty set (0,001 sec)
 
MariaDB [test]> SET SESSION join_cache_level = 4;
Query OK, 0 rows affected (0,000 sec)
 
MariaDB [test]> SELECT t0.c0 FROM t0 NATURAL JOIN t1 WHERE TRUE RLIKE t1.c0; 
Empty set (0,001 sec)
 
MariaDB [test]> SET STATEMENT optimizer_switch = 'join_cache_bka=off' FOR SELECT t0.c0 FROM t0 NATURAL JOIN t1 WHERE TRUE RLIKE t1.c0; 
Empty set (0,001 sec)
 
MariaDB [test]> SET SESSION join_cache_level = 2;
Query OK, 0 rows affected (0,000 sec)
 
MariaDB [test]> SELECT t0.c0 FROM t0 NATURAL JOIN t1 WHERE TRUE RLIKE t1.c0; 
+------+
| c0   |
+------+
|      |
+------+
1 row in set (0,000 sec)
 
MariaDB [test]> SET STATEMENT optimizer_switch = 'join_cache_bka=off' FOR SELECT t0.c0 FROM t0 NATURAL JOIN t1 WHERE TRUE RLIKE t1.c0; 
+------+
| c0   |
+------+
|      |
+------+
1 row in set (0,001 sec)

Generated at Thu Feb 08 10:29:29 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.