List:Commits« Previous MessageNext Message »
From:marc.alff Date:May 29 2007 10:52pm
Subject:bk commit into 5.1 tree (malff:1.2525)
View as plain text  
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.alff31 May