Description:
Hi,
In the following test case, there are two equivalent queries. However, the normal SELECT returns 1 row, but the prepared SELECT returns an empty result. As the IN NULL expression should return NULL, I think the normal SELECT might unexpectedly return the wrong result.
```
CREATE TABLE IF NOT EXISTS t1(c0 SMALLINT PRIMARY KEY);
REPLACE INTO t1(c0) VALUES(1);
SELECT ALL c0 FROM t1 WHERE (((t1.c0) IN (NULL)) || ((t1.c0) IN (CAST(0.6807376207553701 AS DOUBLE)))); -- 1
SET @a = 0.6807376207553701;
PREPARE prepare_query FROM 'SELECT ALL c0 FROM t1 WHERE (((t1.c0) IN (NULL)) || ((t1.c0) IN (CAST(? AS DOUBLE))))';
EXECUTE prepare_query USING @a; -- empty result
```
How to repeat:
```
CREATE TABLE IF NOT EXISTS t1(c0 SMALLINT PRIMARY KEY);
REPLACE INTO t1(c0) VALUES(1);
SELECT ALL c0 FROM t1 WHERE (((t1.c0) IN (NULL)) || ((t1.c0) IN (CAST(0.6807376207553701 AS DOUBLE)))); -- 1
SET @a = 0.6807376207553701;
PREPARE prepare_query FROM 'SELECT ALL c0 FROM t1 WHERE (((t1.c0) IN (NULL)) || ((t1.c0) IN (CAST(? AS DOUBLE))))';
EXECUTE prepare_query USING @a; -- empty result
```