summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/t/analyse.test5
-rw-r--r--sql/sql_analyse.cc15
-rw-r--r--sql/sql_parse.cc2
-rw-r--r--sql/sql_prepare.cc6
4 files changed, 18 insertions, 10 deletions
diff --git a/mysql-test/t/analyse.test b/mysql-test/t/analyse.test
index 34343c2b7bf..52e367769a2 100644
--- a/mysql-test/t/analyse.test
+++ b/mysql-test/t/analyse.test
@@ -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();
diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc
index a8c0d689794..6a9a9e51231 100644
--- a/sql/sql_analyse.cc
+++ b/sql/sql_analyse.cc
@@ -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
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 6082b943b7f..b7a75a0bdd6 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -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
};
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index 6364d5ae039..9e4f6c1334c 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -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);
@@ -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);