mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
SET OPTION SQL_QUOTE_SHOW_CREATE = 0 | 1
It makes SHOW CREATE TABLE to quote table and column names. This is ON by default ! configure.in: REAL fix for mkstemp() sql/lex.h: SET OPTION SQL_QUOTE_SHOW_CREATE = 0 | 1 sql/sql_yacc.yy: SET OPTION SQL_QUOTE_SHOW_CREATE = 0 | 1 sql/mysql_priv.h: SET OPTION SQL_QUOTE_SHOW_CREATE = 0 | 1 sql/mysqld.cc: SET OPTION SQL_QUOTE_SHOW_CREATE = 0 | 1 sql/sql_show.cc: SET OPTION SQL_QUOTE_SHOW_CREATE = 0 | 1 Docs/manual.texi: SET OPTION SQL_QUOTE_SHOW_CREATE = 0 | 1
This commit is contained in:
@@ -20006,6 +20006,10 @@ Create Table: CREATE TABLE t (
|
||||
|
||||
@end example
|
||||
|
||||
@code{SHOW CREATE TABLE} will quote table and column names according to
|
||||
@code{SQL_QUOTE_SHOW_CREATE} option.
|
||||
@ref{SET OPTION, , @code{SET OPTION SQL_QUOTE_SHOW_CREATE}}.
|
||||
|
||||
@findex EXPLAIN
|
||||
@findex SELECT, optimizing
|
||||
@node EXPLAIN, DESCRIBE, SHOW, Reference
|
||||
@@ -20549,7 +20553,7 @@ for a table with an auto_increment row with the following construct:
|
||||
@code{WHERE auto_increment_column IS NULL}. This is used by some
|
||||
ODBC programs like Access.
|
||||
|
||||
@item SET AUTOCOMMIT= 0 | 1
|
||||
@item AUTOCOMMIT= 0 | 1
|
||||
If set to @code{1} all changes to a table will be done at once. To start
|
||||
an multi command transaction you have to use the @code{BEGIN}
|
||||
statement. @xref{COMMIT}. If set to @code{0} you have to use @code{COMMIT} /
|
||||
@@ -20618,6 +20622,12 @@ If set to @code{0}, no logging will be done to the update log for the client,
|
||||
if the client has the @strong{process} privilege. This does not affect the
|
||||
standard log!
|
||||
|
||||
@item SQL_QUOTE_SHOW_CREATE = 0 | 1
|
||||
If set to @code{1}, @code{SHOW CREATE TABLE} will quote
|
||||
table and column names. This is @strong{on} by default,
|
||||
for replication of tables with fancy column names to work.
|
||||
@ref{SHOW CREATE TABLE, , @code{SHOW CREATE TABLE}}.
|
||||
|
||||
@item TIMESTAMP = timestamp_value | DEFAULT
|
||||
Set the time for this client. This is used to get the original timestamp if
|
||||
you use the update log to restore rows.
|
||||
|
@@ -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},
|
||||
|
@@ -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,
|
||||
|
@@ -39,6 +39,9 @@ static int mysql_find_files(THD *thd,List<char> *files, const char *db,
|
||||
static int
|
||||
store_create_info(THD *thd, TABLE *table, String *packet);
|
||||
|
||||
static void
|
||||
append_identifier(THD *thd, String *packet, const char *name);
|
||||
|
||||
/****************************************************************************
|
||||
** Send list of databases
|
||||
** A database is a directory in the mysql_data_home directory
|
||||
@@ -668,6 +671,21 @@ 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)
|
||||
{
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
|
||||
|
Reference in New Issue
Block a user