Bug #119687 Inconsistent behaviour between normal and prepared INSERT
Submitted: 15 Jan 10:23 Modified: 15 Jan 13:18
Reporter: chi zhang Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S1 (Critical)
Version:8.0.44 OS:Any
Assigned to: CPU Architecture:Any

[15 Jan 10:23] chi zhang
Description:
Hi,

There are two equivalent INSERT, one in normal form and another in prepared form. However, the normal one triggers an error but the prepared one inserts a wrong value.

```
CREATE TABLE IF NOT EXISTS t1(c0 SMALLINT(10)) ;
INSERT INTO t1(c0) VALUES("\n9");
-- ERROR 1366 (HY000) at line 5: Incorrect integer value: '
-- 9' for column 'c0' at row 1
```

```
CREATE TABLE IF NOT EXISTS t1(c0 SMALLINT(10)) ;
SET @a = "\n9";
PREPARE prepare_query FROM 'INSERT INTO t1(c0) VALUES(?)';
EXECUTE prepare_query USING @a;
DEALLOCATE PREPARE prepare_query;
SELECT * FROM t1; -- 9
```

How to repeat:
```
CREATE TABLE IF NOT EXISTS t1(c0 SMALLINT(10)) ;
INSERT INTO t1(c0) VALUES("\n9");
-- ERROR 1366 (HY000) at line 5: Incorrect integer value: '
-- 9' for column 'c0' at row 1
```

```
CREATE TABLE IF NOT EXISTS t1(c0 SMALLINT(10)) ;
SET @a = "\n9";
PREPARE prepare_query FROM 'INSERT INTO t1(c0) VALUES(?)';
EXECUTE prepare_query USING @a;
DEALLOCATE PREPARE prepare_query;
SELECT * FROM t1; -- 9
```
[15 Jan 13:18] Roy Lyseng
Thank you for the bug report.
Verified as described.