Wrong result with join_cache_level=3, BNLH join in maria-5.3-mwl128
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
Fix Released
|
Critical
|
Igor Babaev |
Bug Description
After the most recent push to maria-5.3-mwl128, the following query:
SELECT t1.f2 FROM t2 JOIN t1 ON t2.f1 = t1.f1;
returns rows that do not match the ON condition.
Explain:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 index f1 f1 13 NULL 1 Using where; Using index
1 SIMPLE t1 hash f1 f1 13 test.t2.f1 4 Using join buffer (flat, BNLH join)
test case:
SET SESSION SQL_MODE=
CREATE TABLE t1 ( f1 varchar(10) , f2 int(11) , KEY (f1)) ENGINE=PBXT;
INSERT INTO t1 VALUES ('hgtofubnib'
CREATE TABLE t2 ( f1 varchar(10) , f2 int(11) , KEY (f1)) ENGINE=PBXT;
INSERT INTO t2 VALUES ('r',1);
SET SESSION join_cache_level=3;
SELECT t1.f2 FROM t2 JOIN t1 ON t2.f1 = t1.f1;
This particular test case is for PBXT, but the issue has been observed with other storage engines as well.
Related branches
Changed in maria: | |
milestone: | none → 5.3 |
assignee: | nobody → Igor Babaev (igorb-seattle) |
Changed in maria: | |
status: | New → Confirmed |
importance: | Undecided → Critical |
Changed in maria: | |
status: | Confirmed → In Progress |
Changed in maria: | |
status: | In Progress → Fix Committed |
Changed in maria: | |
status: | Fix Committed → Fix Released |
The bug is reproducible without the latest push into maria-5.3-mwl128 as well.
With the current 5.3 tree we have:
MariaDB [test]> SET SESSION SQL_MODE= 'NO_ENGINE_ SUBSTITUTION' ;
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> CREATE TABLE t1 ( f1 varchar(10) , f2 int(11) , KEY (f1)) ENGINE=PBXT;
Query OK, 0 rows affected (0.28 sec)
MariaDB [test]> INSERT INTO t1 VALUES ('hgtofubnib' ,1),('GDOXZ' ,1492123648) ,('n',2) ,('fggxgalhgt' ,-2024407040) ;
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
MariaDB [test]> CREATE TABLE t2 ( f1 varchar(10) , f2 int(11) , KEY (f1)) ENGINE=PBXT;
Query OK, 0 rows affected (0.02 sec)
MariaDB [test]> INSERT INTO t2 VALUES ('r',1);
Query OK, 1 row affected (0.01 sec)
MariaDB [test]> SET SESSION join_cache_level=3;
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]>
MariaDB [test]> SELECT t1.f2 FROM t2 JOIN t1 ON t2.f1 = t1.f1;
+------+
| f2 |
+------+
| 2 |
+------+
1 row in set (0.00 sec)