Even simpler test case without prepared statements:
SET SESSION optimizer_switch='semijoin=on,materialization=off,firstmatch=off,loosescan=off';
CREATE TABLE t1 ( f1 int) ;
CREATE TABLE t2 ( f1 int) ;
CREATE TABLE t3 ( f1 int) ;
SELECT * FROM ( SELECT t3.* FROM t2 STRAIGHT_JOIN t3 ON t3.f1 AND (t3.f1 ) IN ( SELECT t1.f1 FROM t1 ) ) AS alias1;
Even simpler test case without prepared statements:
SET SESSION optimizer_ switch= 'semijoin= on,materializat ion=off, firstmatch= off,loosescan= off';
CREATE TABLE t1 ( f1 int) ;
CREATE TABLE t2 ( f1 int) ;
CREATE TABLE t3 ( f1 int) ;
SELECT * FROM (
SELECT t1.f1
FROM t1
SELECT t3.*
FROM t2 STRAIGHT_JOIN t3
ON t3.f1
AND (t3.f1 ) IN (
)
) AS alias1;