1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

bugs #2280, #2281 - show create table should always return a valid sql statement

This commit is contained in:
serg@serg.mylan
2004-01-14 11:52:25 +01:00
parent 2efb415121
commit fd352c2284

View File

@@ -997,6 +997,19 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd)
DBUG_RETURN(0); DBUG_RETURN(0);
} }
/* possible TODO: call find_keyword() from sql_lex.cc here */
static bool require_quotes(const char *name, uint length)
{
uint i, d, c;
for (i=0; i<length; i+=d)
{
c=((uchar *)name)[i];
d=my_mbcharlen(system_charset_info, c);
if (d==1 && !system_charset_info->ident_map[c])
return 1;
}
return 0;
}
void void
append_identifier(THD *thd, String *packet, const char *name, uint length) append_identifier(THD *thd, String *packet, const char *name, uint length)
@@ -1007,7 +1020,8 @@ append_identifier(THD *thd, String *packet, const char *name, uint length)
else else
qtype= '`'; qtype= '`';
if (thd->options & OPTION_QUOTE_SHOW_CREATE) if ((thd->options & OPTION_QUOTE_SHOW_CREATE) ||
require_quotes(name, length))
{ {
packet->append(&qtype, 1); packet->append(&qtype, 1);
packet->append(name, length, system_charset_info); packet->append(name, length, system_charset_info);