Description:
```sql
CREATE TABLE t0 (id INT PRIMARY KEY, c0 INT, c1 DECIMAL(20,4), c2 VARCHAR(50));
CREATE TABLE t1 (id INT PRIMARY KEY, c0 INT, c1 DECIMAL(20,4), c2 VARCHAR(50));
CREATE TABLE t2 (id INT PRIMARY KEY, c0 INT, c1 DECIMAL(20,4), c2 VARCHAR(50));
INSERT INTO t0 VALUES (1,NULL,'0.0000',' 1'),(2,0,'0.0001',' 1'),(3,1,'0.0000','100'),(4,-1,NULL,'1e10'),(5,0,'0.0000','0'),(6,2147483647,'0.0000','100'),(7,-2147483648,'0.0001','abc'),(8,0,'0.0000','0');
INSERT INTO t1 VALUES (1,NULL,'9999999999999999.9999',' 1'),(2,0,'0.0000','1e10'),(3,1,'0.0000','0'),(4,-1,'-0.0001','-1.5'),(5,-2147483648,NULL,'abc'),(6,0,'-9999999999999999.9999',NULL),(7,0,'0.0001','1e10'),(8,1,NULL,'1e10');
INSERT INTO t2 VALUES (1,NULL,NULL,' 1'),(2,0,'0.0001',NULL),(3,1,'0.0000',' 1'),(4,-1,'0.0000','-0'),(5,2147483647,'0.0000',''),(6,0,'-9999999999999999.9999','abc'),(7,0,'0.0000','100'),(8,2147483647,'9999999999999999.9999',' 1');
SET SESSION optimizer_switch = 'subquery_to_derived=off';
SELECT t0.id, t0.c1, AVG(t1.c1) OVER (PARTITION BY t0.c0 ORDER BY t0.id
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS avg_c1
FROM t0 LEFT JOIN t1 ON t0.c0 = t1.c0
WHERE t0.c1 <=> (SELECT c1 FROM t2 WHERE t2.c0 = t0.c0 LIMIT 1)
ORDER BY t0.id;
-- 6 rows
SET SESSION optimizer_switch = 'subquery_to_derived=on';
SELECT t0.id, t0.c1, AVG(t1.c1) OVER (PARTITION BY t0.c0 ORDER BY t0.id
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS avg_c1
FROM t0 LEFT JOIN t1 ON t0.c0 = t1.c0
WHERE t0.c1 <=> (SELECT c1 FROM t2 WHERE t2.c0 = t0.c0 LIMIT 1)
ORDER BY t0.id;
-- 3 rows
```
Changing subquery_to_derived affects the result row count (6 vs 3).
How to repeat:
Tested on MySQL 8.4.10 and 9.7.1 (Homebrew, macOS arm64). The bug is
reproducible on both versions. Execute the above test case; the first
SELECT returns 6 rows, the second returns 3 rows.