Description:
Hi,
In the following test case, the query executes successfully as a normal query, but triggers an error in prepared statement:
```
mysql> EXECUTE prepare_query;
+---------------------------+
| ((t1.c0)NOT REGEXP('\L')) |
+---------------------------+
| 1 |
+---------------------------+
1 row in set (0.00 sec)
mysql> SELECT '\'';
+---+
| ' |
+---+
| ' |
+---+
1 row in set (0.00 sec)
mysql> PREPARE prepare_query FROM "SELECT '\''";
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1
```
This sometimes can cause logic bugs, as shown in the following test case:
```
mysql> CREATE TABLE t0(c0 DOUBLE);
Query OK, 0 rows affected (0.01 sec)
mysql> REPLACE INTO t0 VALUES (0.5);
Query OK, 1 row affected (0.03 sec)
mysql> SELECT t0.c0 FROM t0 WHERE '1\'#' AND FALSE;
Empty set, 1 warning (0.00 sec)
mysql> PREPARE prepare_query FROM "SELECT t0.c0 FROM t0 WHERE '1\'#' AND FALSE";
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE prepare_query;
+------+
| c0 |
+------+
| 0.5 |
+------+
1 row in set (0.00 sec)
```
How to repeat:
```
SELECT '\'';
PREPARE prepare_query FROM "SELECT '\''";
```
```
CREATE TABLE t0(c0 DOUBLE);
REPLACE INTO t0 VALUES (0.5);
SELECT t0.c0 FROM t0 WHERE '1\'#' AND FALSE; -- empty result
PREPARE prepare_query FROM "SELECT t0.c0 FROM t0 WHERE '1\'#' AND FALSE"; -- 0.5
EXECUTE prepare_query;
```
Description: Hi, In the following test case, the query executes successfully as a normal query, but triggers an error in prepared statement: ``` mysql> EXECUTE prepare_query; +---------------------------+ | ((t1.c0)NOT REGEXP('\L')) | +---------------------------+ | 1 | +---------------------------+ 1 row in set (0.00 sec) mysql> SELECT '\''; +---+ | ' | +---+ | ' | +---+ 1 row in set (0.00 sec) mysql> PREPARE prepare_query FROM "SELECT '\''"; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1 ``` This sometimes can cause logic bugs, as shown in the following test case: ``` mysql> CREATE TABLE t0(c0 DOUBLE); Query OK, 0 rows affected (0.01 sec) mysql> REPLACE INTO t0 VALUES (0.5); Query OK, 1 row affected (0.03 sec) mysql> SELECT t0.c0 FROM t0 WHERE '1\'#' AND FALSE; Empty set, 1 warning (0.00 sec) mysql> PREPARE prepare_query FROM "SELECT t0.c0 FROM t0 WHERE '1\'#' AND FALSE"; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql> EXECUTE prepare_query; +------+ | c0 | +------+ | 0.5 | +------+ 1 row in set (0.00 sec) ``` How to repeat: ``` SELECT '\''; PREPARE prepare_query FROM "SELECT '\''"; ``` ``` CREATE TABLE t0(c0 DOUBLE); REPLACE INTO t0 VALUES (0.5); SELECT t0.c0 FROM t0 WHERE '1\'#' AND FALSE; -- empty result PREPARE prepare_query FROM "SELECT t0.c0 FROM t0 WHERE '1\'#' AND FALSE"; -- 0.5 EXECUTE prepare_query; ```