mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Merge
client/mysqldump.c: Auto merged mysql-test/r/mysqldump.result: e
This commit is contained in:
commit
e711cc30a7
4 changed files with 47 additions and 13 deletions
|
@ -664,7 +664,7 @@ static char *quote_name(const char *name, char *buff, my_bool force)
|
|||
while (*name)
|
||||
{
|
||||
if (*name == QUOTE_CHAR)
|
||||
*to= QUOTE_CHAR;
|
||||
*to++= QUOTE_CHAR;
|
||||
*to++= *name++;
|
||||
}
|
||||
to[0]=QUOTE_CHAR;
|
||||
|
@ -1662,7 +1662,7 @@ static int dump_all_tables_in_db(char *database)
|
|||
if (opt_xml)
|
||||
fputs("</database>\n", md_result_file);
|
||||
if (lock_tables)
|
||||
mysql_query(sock,"UNLOCK_TABLES");
|
||||
mysql_query(sock,"UNLOCK TABLES");
|
||||
return 0;
|
||||
} /* dump_all_tables_in_db */
|
||||
|
||||
|
|
|
@ -179,3 +179,21 @@ UNLOCK TABLES;
|
|||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
|
||||
DROP TABLE t1;
|
||||
create table ```a` (i int);
|
||||
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);
|
|||
--exec $MYSQL_DUMP --skip-comments --compatible=mysql40 test t1
|
||||
--exec $MYSQL_DUMP --skip-comments --compatible=mysql323 test 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`;
|
||||
|
|
|
@ -667,13 +667,24 @@ int yylex(void *arg, void *yythd)
|
|||
|
||||
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 `
|
||||
#ifdef USE_MB
|
||||
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)
|
||||
{
|
||||
int l;
|
||||
|
@ -684,13 +695,10 @@ int yylex(void *arg, void *yythd)
|
|||
lex->ptr += l-1;
|
||||
}
|
||||
}
|
||||
yylval->lex_str=get_token(lex,yyLength());
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
uint double_quotes= 0;
|
||||
char quote_char= c;
|
||||
while ((c=yyGet()))
|
||||
{
|
||||
if (c == quote_char)
|
||||
|
@ -704,13 +712,13 @@ int yylex(void *arg, void *yythd)
|
|||
if (c == (uchar) NAMES_SEP_CHAR)
|
||||
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 `
|
||||
lex->next_state= MY_LEX_START;
|
||||
return(IDENT_QUOTED);
|
||||
|
|
Loading…
Reference in a new issue