Below is the list of changes that have just been committed into a local
5.1 repository of marcsql. When marcsql does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-05-29 14:52:17-06:00, malff@weblab.(none) +5 -0
Manual merge
sql/sp_head.cc@stripped, 2007-05-29 14:52:15-06:00, malff@weblab.(none) +1 -1
Manual merge, bug#27876
sql/sql_lex.cc@stripped, 2007-05-29 14:52:15-06:00, malff@weblab.(none) +6 -3
Manual merge, bug#27876
sql/sql_lex.h@stripped, 2007-05-29 14:52:15-06:00, malff@weblab.(none) +2 -1
Manual merge, bug#27876
sql/sql_view.cc@stripped, 2007-05-29 14:52:15-06:00, malff@weblab.(none) +1 -1
Manual merge, bug#27876
tests/mysql_client_test.c@stripped, 2007-05-29 14:52:15-06:00, malff@weblab.(none) +65 -0
Manual merge, bug#27876
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: malff
# Host: weblab.(none)
# Root: /home/marcsql/TREE/mysql-5.1-rt-merge
--- 1.245/sql/sql_lex.cc 2007-05-29 14:52:24 -06:00
+++ 1.246/sql/sql_lex.cc 2007-05-29 14:52:24 -06:00
@@ -1151,6 +1151,7 @@ Alter_info::Alter_info(const Alter_info
SYNOPSIS
skip_rear_comments()
+ cs character set
begin pointer to the beginning of statement
end pointer to the end of statement
@@ -1161,10 +1162,12 @@ Alter_info::Alter_info(const Alter_info
Pointer to the last non-comment symbol of the statement.
*/
-const char *skip_rear_comments(const char *begin, const char *end)
+const char *skip_rear_comments(CHARSET_INFO *cs, const char *begin,
+ const char *end)
{
- while (begin < end && (end[-1] <= ' ' || end[-1] == '*' ||
- end[-1] == '/' || end[-1] == ';'))
+ while (begin < end && (end[-1] == '*' ||
+ end[-1] == '/' || end[-1] == ';' ||
+ my_isspace(cs, end[-1])))
end-= 1;
return end;
}
--- 1.279/sql/sql_lex.h 2007-05-29 14:52:24 -06:00
+++ 1.280/sql/sql_lex.h 2007-05-29 14:52:24 -06:00
@@ -1417,7 +1417,8 @@ extern void lex_free(void);
extern void lex_start(THD *thd);
extern void lex_end(LEX *lex);
extern int MYSQLlex(void *arg, void *yythd);
-extern const char *skip_rear_comments(const char *ubegin, const char *uend);
+extern const char *skip_rear_comments(CHARSET_INFO *cs, const char *ubegin,
+ const char *uend);
extern bool is_lex_native_function(const LEX_STRING *name);
--- 1.134/sql/sql_view.cc 2007-05-29 14:52:24 -06:00
+++ 1.135/sql/sql_view.cc 2007-05-29 14:52:24 -06:00
@@ -775,7 +775,7 @@ static int mysql_register_view(THD *thd,
view->query.length= str.length()-1; // we do not need last \0
view->source.str= thd->query + thd->lex->create_view_select_start;
endp= view->source.str;
- endp= skip_rear_comments(endp, thd->query + thd->query_length);
+ endp= skip_rear_comments(thd->charset(), endp, thd->query +
thd->query_length);
view->source.length= endp - view->source.str;
view->file_version= 1;
view->calc_md5(md5);
--- 1.272/sql/sp_head.cc 2007-05-29 14:52:24 -06:00
+++ 1.273/sql/sp_head.cc 2007-05-29 14:52:24 -06:00
@@ -571,7 +571,7 @@ sp_head::init_strings(THD *thd, LEX *lex
Trim "garbage" at the end. This is sometimes needed with the
"/ * ! VERSION... * /" wrapper in dump files.
*/
- endp= skip_rear_comments(m_body_begin, endp);
+ endp= skip_rear_comments(thd->charset(), m_body_begin, endp);
m_body.length= endp - m_body_begin;
m_body.str= strmake_root(root, m_body_begin, m_body.length);
--- 1.242/tests/mysql_client_test.c 2007-05-29 14:52:24 -06:00
+++ 1.243/tests/mysql_client_test.c 2007-05-29 14:52:24 -06:00
@@ -16097,6 +16097,70 @@ static void test_bug28075()
}
#endif
+
+/*
+ Bug#27876 (SF with cyrillic variable name fails during execution (regression))
+*/
+static void test_bug27876()
+{
+ int rc;
+ MYSQL_RES *result;
+
+ char utf8_func[] =
+ {
+ 0xd1, 0x84, 0xd1, 0x83, 0xd0, 0xbd, 0xd0, 0xba,
+ 0xd1, 0x86, 0xd0, 0xb8, 0xd0, 0xb9, 0xd0, 0xba,
+ 0xd0, 0xb0,
+ 0x00
+ };
+
+ char utf8_param[] =
+ {
+ 0xd0, 0xbf, 0xd0, 0xb0, 0xd1, 0x80, 0xd0, 0xb0,
+ 0xd0, 0xbc, 0xd0, 0xb5, 0xd1, 0x82, 0xd1, 0x8a,
+ 0xd1, 0x80, 0x5f, 0xd0, 0xb2, 0xd0, 0xb5, 0xd1,
+ 0x80, 0xd1, 0x81, 0xd0, 0xb8, 0xd1, 0x8f,
+ 0x00
+ };
+
+ char query[500];
+
+ DBUG_ENTER("test_bug27876");
+ myheader("test_bug27876");
+
+ rc= mysql_query(mysql, "set names utf8");
+ myquery(rc);
+
+ rc= mysql_query(mysql, "select version()");
+ myquery(rc);
+ result= mysql_store_result(mysql);
+ mytest(result);
+
+ sprintf(query, "DROP FUNCTION IF EXISTS %s", utf8_func);
+ rc= mysql_query(mysql, query);
+ myquery(rc);
+
+ sprintf(query,
+ "CREATE FUNCTION %s( %s VARCHAR(25))"
+ " RETURNS VARCHAR(25) DETERMINISTIC RETURN %s",
+ utf8_func, utf8_param, utf8_param);
+ rc= mysql_query(mysql, query);
+ myquery(rc);
+ sprintf(query, "SELECT %s(VERSION())", utf8_func);
+ rc= mysql_query(mysql, query);
+ myquery(rc);
+ result= mysql_store_result(mysql);
+ mytest(result);
+
+ sprintf(query, "DROP FUNCTION %s", utf8_func);
+ rc= mysql_query(mysql, query);
+ myquery(rc);
+
+ rc= mysql_query(mysql, "set names default");
+ myquery(rc);
+}
+
+
/*
Read and parse arguments and MySQL options from my.cnf
*/
@@ -16384,6 +16448,7 @@ static struct my_tests_st my_tests[]= {
#ifdef fix_bug_in_pb_first
{ "test_bug28075", test_bug28075 },
#endif
+ { "test_bug27876", test_bug27876 },
{ 0, 0 }
};
| Thread |
|---|
| • bk commit into 5.1 tree (malff:1.2525) | marc.alff | 31 May |