Commit 0a1ceb66 authored by bar@bar.intranet.mysql.r18.ru's avatar bar@bar.intranet.mysql.r18.ru

Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-4.1

into bar.intranet.mysql.r18.ru:/usr/home/bar/mysql-4.1
parents 5219fc26 da8f78a0
...@@ -54,6 +54,7 @@ jani@janikt.pp.saunalahti.fi ...@@ -54,6 +54,7 @@ jani@janikt.pp.saunalahti.fi
jani@rhols221.adsl.netsonic.fi jani@rhols221.adsl.netsonic.fi
jani@rhols221.arenanet.fi jani@rhols221.arenanet.fi
jani@ua126d19.elisa.omakaista.fi jani@ua126d19.elisa.omakaista.fi
jani@ua141d10.elisa.omakaista.fi
jani@ua167d18.elisa.omakaista.fi jani@ua167d18.elisa.omakaista.fi
jcole@abel.spaceapes.com jcole@abel.spaceapes.com
jcole@main.burghcom.com jcole@main.burghcom.com
......
...@@ -664,7 +664,7 @@ static char *quote_name(const char *name, char *buff, my_bool force) ...@@ -664,7 +664,7 @@ static char *quote_name(const char *name, char *buff, my_bool force)
while (*name) while (*name)
{ {
if (*name == QUOTE_CHAR) if (*name == QUOTE_CHAR)
*to= QUOTE_CHAR; *to++= QUOTE_CHAR;
*to++= *name++; *to++= *name++;
} }
to[0]=QUOTE_CHAR; to[0]=QUOTE_CHAR;
...@@ -1662,7 +1662,7 @@ static int dump_all_tables_in_db(char *database) ...@@ -1662,7 +1662,7 @@ static int dump_all_tables_in_db(char *database)
if (opt_xml) if (opt_xml)
fputs("</database>\n", md_result_file); fputs("</database>\n", md_result_file);
if (lock_tables) if (lock_tables)
mysql_query(sock,"UNLOCK_TABLES"); mysql_query(sock,"UNLOCK TABLES");
return 0; return 0;
} /* dump_all_tables_in_db */ } /* dump_all_tables_in_db */
......
...@@ -179,3 +179,26 @@ UNLOCK TABLES; ...@@ -179,3 +179,26 @@ UNLOCK TABLES;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
DROP TABLE t1; DROP TABLE t1;
create table ```a` (i int);
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT, CHARACTER_SET_CLIENT=utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=NO_AUTO_VALUE_ON_ZERO */;
DROP TABLE IF EXISTS ```a`;
CREATE TABLE ``a` (
`i` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40000 ALTER TABLE ```a` DISABLE KEYS */;
LOCK TABLES ```a` WRITE;
UNLOCK TABLES;
/*!40000 ALTER TABLE ```a` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
drop table ```a`;
...@@ -63,3 +63,11 @@ INSERT INTO t1 VALUES (1), (2); ...@@ -63,3 +63,11 @@ INSERT INTO t1 VALUES (1), (2);
--exec $MYSQL_DUMP --skip-comments --compatible=mysql40 test t1 --exec $MYSQL_DUMP --skip-comments --compatible=mysql40 test t1
--exec $MYSQL_DUMP --skip-comments --compatible=mysql323 test t1 --exec $MYSQL_DUMP --skip-comments --compatible=mysql323 test t1
DROP TABLE t1; DROP TABLE t1;
#
# Bug #2592 'mysqldum doesn't quote "tricky" names correctly'
#
create table ```a` (i int);
--exec $MYSQL_DUMP --skip-comments test
drop table ```a`;
...@@ -1552,7 +1552,7 @@ udf_handler::fix_fields(THD *thd, TABLE_LIST *tables, Item_result_field *func, ...@@ -1552,7 +1552,7 @@ udf_handler::fix_fields(THD *thd, TABLE_LIST *tables, Item_result_field *func,
if ((error=(uchar) init(&initid, &f_args, thd->net.last_error))) if ((error=(uchar) init(&initid, &f_args, thd->net.last_error)))
{ {
my_printf_error(ER_CANT_INITIALIZE_UDF,ER(ER_CANT_INITIALIZE_UDF),MYF(0), my_printf_error(ER_CANT_INITIALIZE_UDF,ER(ER_CANT_INITIALIZE_UDF),MYF(0),
u_d->name,thd->net.last_error); u_d->name.str, thd->net.last_error);
free_udf(u_d); free_udf(u_d);
DBUG_RETURN(1); DBUG_RETURN(1);
} }
...@@ -1565,7 +1565,7 @@ udf_handler::fix_fields(THD *thd, TABLE_LIST *tables, Item_result_field *func, ...@@ -1565,7 +1565,7 @@ udf_handler::fix_fields(THD *thd, TABLE_LIST *tables, Item_result_field *func,
if (error) if (error)
{ {
my_printf_error(ER_CANT_INITIALIZE_UDF,ER(ER_CANT_INITIALIZE_UDF),MYF(0), my_printf_error(ER_CANT_INITIALIZE_UDF,ER(ER_CANT_INITIALIZE_UDF),MYF(0),
u_d->name, ER(ER_UNKNOWN_ERROR)); u_d->name.str, ER(ER_UNKNOWN_ERROR));
DBUG_RETURN(1); DBUG_RETURN(1);
} }
DBUG_RETURN(0); DBUG_RETURN(0);
......
...@@ -667,13 +667,24 @@ int yylex(void *arg, void *yythd) ...@@ -667,13 +667,24 @@ int yylex(void *arg, void *yythd)
case MY_LEX_USER_VARIABLE_DELIMITER: case MY_LEX_USER_VARIABLE_DELIMITER:
{ {
char delim= c; // Used char uint double_quotes= 0;
char quote_char= c; // Used char
lex->tok_start=lex->ptr; // Skip first ` lex->tok_start=lex->ptr; // Skip first `
#ifdef USE_MB #ifdef USE_MB
if (use_mb(cs)) if (use_mb(cs))
{ {
while ((c=yyGet()) && c != delim && c != (uchar) NAMES_SEP_CHAR) while ((c= yyGet()))
{ {
if (c == quote_char)
{
if (yyPeek() != quote_char)
break;
c= yyGet();
double_quotes++;
continue;
}
if (c == (uchar) NAMES_SEP_CHAR)
break;
if (my_mbcharlen(cs, c) > 1) if (my_mbcharlen(cs, c) > 1)
{ {
int l; int l;
...@@ -684,13 +695,10 @@ int yylex(void *arg, void *yythd) ...@@ -684,13 +695,10 @@ int yylex(void *arg, void *yythd)
lex->ptr += l-1; lex->ptr += l-1;
} }
} }
yylval->lex_str=get_token(lex,yyLength());
} }
else else
#endif #endif
{ {
uint double_quotes= 0;
char quote_char= c;
while ((c=yyGet())) while ((c=yyGet()))
{ {
if (c == quote_char) if (c == quote_char)
...@@ -704,13 +712,13 @@ int yylex(void *arg, void *yythd) ...@@ -704,13 +712,13 @@ int yylex(void *arg, void *yythd)
if (c == (uchar) NAMES_SEP_CHAR) if (c == (uchar) NAMES_SEP_CHAR)
break; break;
} }
if (double_quotes)
yylval->lex_str=get_quoted_token(lex,yyLength() - double_quotes,
quote_char);
else
yylval->lex_str=get_token(lex,yyLength());
} }
if (c == delim) if (double_quotes)
yylval->lex_str=get_quoted_token(lex,yyLength() - double_quotes,
quote_char);
else
yylval->lex_str=get_token(lex,yyLength());
if (c == quote_char)
yySkip(); // Skip end ` yySkip(); // Skip end `
lex->next_state= MY_LEX_START; lex->next_state= MY_LEX_START;
return(IDENT_QUOTED); return(IDENT_QUOTED);
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <my_sys.h> #include <my_sys.h>
#include <m_string.h> #include <m_string.h>
#include <m_ctype.h> #include <m_ctype.h>
#include <assert.h>
#ifdef HAVE_FCONVERT #ifdef HAVE_FCONVERT
#include <floatingpoint.h> #include <floatingpoint.h>
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment