Commit 0a050cf4 authored by serg@serg.mysql.com's avatar serg@serg.mysql.com

SET OPTION SQL_QUOTE_SHOW_CREATE = 0 | 1

It makes SHOW CREATE TABLE to quote table and column names.
This is ON by default !
parent 68ec8e00
This diff is collapsed.
......@@ -1238,7 +1238,7 @@ AC_CHECK_FUNCS(alarm bmove \
cuserid fcntl fconvert \
getrusage getpwuid getcwd getrlimit getwd index stpcpy locking longjmp \
perror pread realpath rename \
socket strnlen madvise \
socket strnlen madvise mkstemp \
strtol strtoul strtoull snprintf tempnam thr_setconcurrency \
gethostbyaddr_r gethostbyname_r getpwnam \
bfill bzero bcmp strstr strpbrk strerror\
......
......@@ -275,6 +275,7 @@ static SYMBOL symbols[] = {
{ "SQL_LOG_UPDATE", SYM(SQL_LOG_UPDATE),0,0},
{ "SQL_LOW_PRIORITY_UPDATES", SYM(SQL_LOW_PRIORITY_UPDATES),0,0},
{ "SQL_MAX_JOIN_SIZE",SYM(SQL_MAX_JOIN_SIZE), 0, 0},
{ "SQL_QUOTE_SHOW_CREATE",SYM(SQL_QUOTE_SHOW_CREATE), 0, 0},
{ "SQL_SAFE_UPDATES", SYM(SQL_SAFE_UPDATES),0,0},
{ "SQL_SELECT_LIMIT", SYM(SQL_SELECT_LIMIT),0,0},
{ "SQL_SMALL_RESULT", SYM(SQL_SMALL_RESULT),0,0},
......
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
......@@ -57,7 +57,7 @@ void kill_one_thread(THD *thd, ulong id);
#endif
/***************************************************************************
Configuration parameters
Configuration parameters
****************************************************************************/
#define ACL_CACHE_SIZE 256
......@@ -83,7 +83,7 @@ void kill_one_thread(THD *thd, ulong id);
// Number of rows in a reference table when refereed through a not unique key.
// This value is only used when we don't know anything about the key
// distribution.
#define MATCHING_ROWS_IN_OTHER_TABLE 10
#define MATCHING_ROWS_IN_OTHER_TABLE 10
/* Don't pack string keys shorter than this (if PACK_KEYS=1 isn't used) */
#define KEY_DEFAULT_PACK_LENGTH 8
......@@ -158,6 +158,7 @@ void kill_one_thread(THD *thd, ulong id);
#define OPTION_AUTO_COMMIT OPTION_BIN_LOG*2
#define OPTION_BEGIN OPTION_AUTO_COMMIT*2
#define OPTION_QUICK OPTION_BEGIN*2
#define OPTION_QUOTE_SHOW_CREATE OPTION_QUICK*2
#define RAID_BLOCK_SIZE 1024
......
......@@ -188,7 +188,8 @@ uint test_flags, select_errors=0, dropping_tables=0,ha_open_options=0;
uint volatile thread_count=0, thread_running=0, kill_cached_threads=0,
wake_thread=0, global_read_lock=0;
ulong thd_startup_options=(OPTION_UPDATE_LOG | OPTION_AUTO_IS_NULL |
OPTION_BIN_LOG | OPTION_AUTO_COMMIT);
OPTION_BIN_LOG | OPTION_AUTO_COMMIT |
OPTION_QUOTE_SHOW_CREATE );
uint protocol_version=PROTOCOL_VERSION;
ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size,
max_join_size,join_buff_size,tmp_table_size,thread_stack,
......
......@@ -37,7 +37,10 @@ static int mysql_find_files(THD *thd,List<char> *files, const char *db,
const char *path, const char *wild, bool dir);
static int
store_create_info(THD *thd, TABLE *table, String* packet);
store_create_info(THD *thd, TABLE *table, String *packet);
static void
append_identifier(THD *thd, String *packet, const char *name);
/****************************************************************************
** Send list of databases
......@@ -668,8 +671,23 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd)
DBUG_RETURN(0);
}
static void
append_identifier(THD *thd, String *packet, const char *name)
{
if (thd->options & OPTION_QUOTE_SHOW_CREATE)
{
packet->append("`", 1);
packet->append(name);
packet->append("`", 1);
}
else
{
packet->append(name);
}
}
static int
store_create_info(THD *thd, TABLE *table, String* packet)
store_create_info(THD *thd, TABLE *table, String *packet)
{
DBUG_ENTER("store_create_info");
DBUG_PRINT("enter",("table: %s",table->real_name));
......@@ -680,7 +698,7 @@ store_create_info(THD *thd, TABLE *table, String* packet)
char tmp[MAX_FIELD_WIDTH];
String type(tmp, sizeof(tmp));
packet->append("CREATE TABLE ", 13);
packet->append(table->real_name);
append_identifier(thd,packet,table->real_name);
packet->append(" (\n", 3);
Field **ptr,*field;
......@@ -691,7 +709,7 @@ store_create_info(THD *thd, TABLE *table, String* packet)
uint flags = field->flags;
packet->append(" ", 2);
packet->append(field->field_name);
append_identifier(thd,packet,field->field_name);
packet->append(' ');
// check for surprises from the previous call to Field::sql_type()
if(type.ptr() != tmp)
......@@ -746,7 +764,7 @@ store_create_info(THD *thd, TABLE *table, String* packet)
packet->append("KEY ", 4);
if(i != primary_key)
packet->append(key_info->name);
append_identifier(thd,packet,key_info->name);
packet->append('(');
......@@ -756,7 +774,7 @@ store_create_info(THD *thd, TABLE *table, String* packet)
packet->append(',');
if (key_part->field)
packet->append(key_part->field->field_name);
append_identifier(thd,packet,key_part->field->field_name);
if (!key_part->field ||
(key_part->length !=
table->field[key_part->fieldnr-1]->key_length() &&
......
......@@ -407,6 +407,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token SQL_WARNINGS
%token SQL_AUTO_IS_NULL
%token SQL_SAFE_UPDATES
%token SQL_QUOTE_SHOW_CREATE
%left SET_VAR
%left OR_OR_CONCAT OR
......@@ -530,7 +531,7 @@ query:
verb_clause:
alter
| analyze
| backup
| backup
| begin
| change
| check
......@@ -549,7 +550,7 @@ verb_clause:
| rename
| repair
| replace
| restore
| restore
| revoke
| rollback
| select
......@@ -2096,7 +2097,7 @@ opt_low_priority:
/* Delete rows from a table */
delete:
DELETE_SYM
DELETE_SYM
{ Lex->sql_command= SQLCOM_DELETE; Lex->options=0;
Lex->lock_option= current_thd->update_lock_default; }
opt_delete_options FROM table
......@@ -2620,6 +2621,7 @@ set_option:
| SQL_AUTO_IS_NULL { $$= OPTION_AUTO_IS_NULL; }
| SQL_SAFE_UPDATES { $$= OPTION_SAFE_UPDATES; }
| SQL_BUFFER_RESULT { $$= OPTION_BUFFER_RESULT; }
| SQL_QUOTE_SHOW_CREATE { $$= OPTION_QUOTE_SHOW_CREATE; }
/* Lock function */
......
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