Loading mysql-test/t/analyse.test +5 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,11 @@ select * from t2; insert into t2 select * from t1 procedure analyse(); select * from t2; drop table t1,t2; # # Bug#2813 - analyse does not quote string values in enums from string # create table t1 (v varchar(128)); insert into t1 values ('abc'),('abc\'def\\hij\"klm\0opq'),('\''),('\"'),('\\'),('a\0'),('b\''),('c\"'),('d\\'),('\'b'),('\"c'),('\\d'),('a\0\0\0b'),('a\'\'\'\'b'),('a\"\"\"\"b'),('a\\\\\\\\b'),('\'\0\\\"'),('\'\''),('\"\"'),('\\\\'),('The\ZEnd'); select * from t1 procedure analyse(); Loading sql/sql_analyse.cc +7 −8 Original line number Diff line number Diff line Loading @@ -1029,20 +1029,19 @@ uint check_ulonglong(const char *str, uint length) } /* check_ulonlong */ /* FUNCTION: append_escaped() Quote special characters in a string. SYNOPSIS append_escaped(to_str, from_str) to_str (in) A pointer to a String. from_str (to) A pointer to an allocated string DESCRIPTION append_escaped() takes a String type variable, where it appends escaped the second argument. Only characters that require escaping will be escaped. ARGUMENTS A pointer to a String variable, where results will be appended A pointer to a String variable, which is appended to the result String, escaping those characters that require it. RETURN VALUES 0 Success 1 Out of memory Loading sql/sql_parse.cc +1 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,7 @@ const char *command_name[]={ "Drop DB", "Refresh", "Shutdown", "Statistics", "Processlist", "Connect","Kill","Debug","Ping","Time","Delayed insert","Change user", "Binlog Dump","Table Dump", "Connect Out", "Register Slave", "Prepare", "Prepare Execute", "Long Data", "Close stmt", "Prepare", "Execute", "Long Data", "Close stmt", "Reset stmt", "Set option", "Fetch", "Error" // Last command number }; Loading sql/sql_prepare.cc +5 −1 Original line number Diff line number Diff line Loading @@ -1740,7 +1740,7 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length, DBUG_RETURN(TRUE); } mysql_log.write(thd, COM_PREPARE, "%s", packet); mysql_log.write(thd, COM_PREPARE, "[%lu] %s", stmt->id, packet); thd->current_arena= stmt; mysql_init_query(thd, (uchar *) thd->query, thd->query_length); Loading Loading @@ -1990,6 +1990,10 @@ void mysql_stmt_execute(THD *thd, char *packet, uint packet_length) goto err; } mysql_log.write(thd, COM_EXECUTE, "[%lu] %s", stmt->id, expanded_query.length() ? expanded_query.c_ptr() : stmt->query); thd->protocol= &thd->protocol_prep; // Switch to binary protocol if (!(specialflag & SPECIAL_NO_PRIOR)) my_pthread_setprio(pthread_self(),QUERY_PRIOR); Loading Loading
mysql-test/t/analyse.test +5 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,11 @@ select * from t2; insert into t2 select * from t1 procedure analyse(); select * from t2; drop table t1,t2; # # Bug#2813 - analyse does not quote string values in enums from string # create table t1 (v varchar(128)); insert into t1 values ('abc'),('abc\'def\\hij\"klm\0opq'),('\''),('\"'),('\\'),('a\0'),('b\''),('c\"'),('d\\'),('\'b'),('\"c'),('\\d'),('a\0\0\0b'),('a\'\'\'\'b'),('a\"\"\"\"b'),('a\\\\\\\\b'),('\'\0\\\"'),('\'\''),('\"\"'),('\\\\'),('The\ZEnd'); select * from t1 procedure analyse(); Loading
sql/sql_analyse.cc +7 −8 Original line number Diff line number Diff line Loading @@ -1029,20 +1029,19 @@ uint check_ulonglong(const char *str, uint length) } /* check_ulonlong */ /* FUNCTION: append_escaped() Quote special characters in a string. SYNOPSIS append_escaped(to_str, from_str) to_str (in) A pointer to a String. from_str (to) A pointer to an allocated string DESCRIPTION append_escaped() takes a String type variable, where it appends escaped the second argument. Only characters that require escaping will be escaped. ARGUMENTS A pointer to a String variable, where results will be appended A pointer to a String variable, which is appended to the result String, escaping those characters that require it. RETURN VALUES 0 Success 1 Out of memory Loading
sql/sql_parse.cc +1 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,7 @@ const char *command_name[]={ "Drop DB", "Refresh", "Shutdown", "Statistics", "Processlist", "Connect","Kill","Debug","Ping","Time","Delayed insert","Change user", "Binlog Dump","Table Dump", "Connect Out", "Register Slave", "Prepare", "Prepare Execute", "Long Data", "Close stmt", "Prepare", "Execute", "Long Data", "Close stmt", "Reset stmt", "Set option", "Fetch", "Error" // Last command number }; Loading
sql/sql_prepare.cc +5 −1 Original line number Diff line number Diff line Loading @@ -1740,7 +1740,7 @@ bool mysql_stmt_prepare(THD *thd, char *packet, uint packet_length, DBUG_RETURN(TRUE); } mysql_log.write(thd, COM_PREPARE, "%s", packet); mysql_log.write(thd, COM_PREPARE, "[%lu] %s", stmt->id, packet); thd->current_arena= stmt; mysql_init_query(thd, (uchar *) thd->query, thd->query_length); Loading Loading @@ -1990,6 +1990,10 @@ void mysql_stmt_execute(THD *thd, char *packet, uint packet_length) goto err; } mysql_log.write(thd, COM_EXECUTE, "[%lu] %s", stmt->id, expanded_query.length() ? expanded_query.c_ptr() : stmt->query); thd->protocol= &thd->protocol_prep; // Switch to binary protocol if (!(specialflag & SPECIAL_NO_PRIOR)) my_pthread_setprio(pthread_self(),QUERY_PRIOR); Loading