mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +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
|
@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 EXPLAIN
|
||||||
@findex SELECT, optimizing
|
@findex SELECT, optimizing
|
||||||
@node EXPLAIN, DESCRIBE, SHOW, Reference
|
@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
|
@code{WHERE auto_increment_column IS NULL}. This is used by some
|
||||||
ODBC programs like Access.
|
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
|
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}
|
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} /
|
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
|
if the client has the @strong{process} privilege. This does not affect the
|
||||||
standard log!
|
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
|
@item TIMESTAMP = timestamp_value | DEFAULT
|
||||||
Set the time for this client. This is used to get the original timestamp if
|
Set the time for this client. This is used to get the original timestamp if
|
||||||
you use the update log to restore rows.
|
you use the update log to restore rows.
|
||||||
|
@@ -1238,7 +1238,7 @@ AC_CHECK_FUNCS(alarm bmove \
|
|||||||
cuserid fcntl fconvert \
|
cuserid fcntl fconvert \
|
||||||
getrusage getpwuid getcwd getrlimit getwd index stpcpy locking longjmp \
|
getrusage getpwuid getcwd getrlimit getwd index stpcpy locking longjmp \
|
||||||
perror pread realpath rename \
|
perror pread realpath rename \
|
||||||
socket strnlen madvise \
|
socket strnlen madvise mkstemp \
|
||||||
strtol strtoul strtoull snprintf tempnam thr_setconcurrency \
|
strtol strtoul strtoull snprintf tempnam thr_setconcurrency \
|
||||||
gethostbyaddr_r gethostbyname_r getpwnam \
|
gethostbyaddr_r gethostbyname_r getpwnam \
|
||||||
bfill bzero bcmp strstr strpbrk strerror\
|
bfill bzero bcmp strstr strpbrk strerror\
|
||||||
|
@@ -275,6 +275,7 @@ static SYMBOL symbols[] = {
|
|||||||
{ "SQL_LOG_UPDATE", SYM(SQL_LOG_UPDATE),0,0},
|
{ "SQL_LOG_UPDATE", SYM(SQL_LOG_UPDATE),0,0},
|
||||||
{ "SQL_LOW_PRIORITY_UPDATES", SYM(SQL_LOW_PRIORITY_UPDATES),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_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_SAFE_UPDATES", SYM(SQL_SAFE_UPDATES),0,0},
|
||||||
{ "SQL_SELECT_LIMIT", SYM(SQL_SELECT_LIMIT),0,0},
|
{ "SQL_SELECT_LIMIT", SYM(SQL_SELECT_LIMIT),0,0},
|
||||||
{ "SQL_SMALL_RESULT", SYM(SQL_SMALL_RESULT),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_AUTO_COMMIT OPTION_BIN_LOG*2
|
||||||
#define OPTION_BEGIN OPTION_AUTO_COMMIT*2
|
#define OPTION_BEGIN OPTION_AUTO_COMMIT*2
|
||||||
#define OPTION_QUICK OPTION_BEGIN*2
|
#define OPTION_QUICK OPTION_BEGIN*2
|
||||||
|
#define OPTION_QUOTE_SHOW_CREATE OPTION_QUICK*2
|
||||||
|
|
||||||
#define RAID_BLOCK_SIZE 1024
|
#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,
|
uint volatile thread_count=0, thread_running=0, kill_cached_threads=0,
|
||||||
wake_thread=0, global_read_lock=0;
|
wake_thread=0, global_read_lock=0;
|
||||||
ulong thd_startup_options=(OPTION_UPDATE_LOG | OPTION_AUTO_IS_NULL |
|
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;
|
uint protocol_version=PROTOCOL_VERSION;
|
||||||
ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size,
|
ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size,
|
||||||
max_join_size,join_buff_size,tmp_table_size,thread_stack,
|
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
|
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
|
** Send list of databases
|
||||||
** A database is a directory in the mysql_data_home directory
|
** 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);
|
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
|
static int
|
||||||
store_create_info(THD *thd, TABLE *table, String *packet)
|
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];
|
char tmp[MAX_FIELD_WIDTH];
|
||||||
String type(tmp, sizeof(tmp));
|
String type(tmp, sizeof(tmp));
|
||||||
packet->append("CREATE TABLE ", 13);
|
packet->append("CREATE TABLE ", 13);
|
||||||
packet->append(table->real_name);
|
append_identifier(thd,packet,table->real_name);
|
||||||
packet->append(" (\n", 3);
|
packet->append(" (\n", 3);
|
||||||
|
|
||||||
Field **ptr,*field;
|
Field **ptr,*field;
|
||||||
@@ -691,7 +709,7 @@ store_create_info(THD *thd, TABLE *table, String* packet)
|
|||||||
|
|
||||||
uint flags = field->flags;
|
uint flags = field->flags;
|
||||||
packet->append(" ", 2);
|
packet->append(" ", 2);
|
||||||
packet->append(field->field_name);
|
append_identifier(thd,packet,field->field_name);
|
||||||
packet->append(' ');
|
packet->append(' ');
|
||||||
// check for surprises from the previous call to Field::sql_type()
|
// check for surprises from the previous call to Field::sql_type()
|
||||||
if(type.ptr() != tmp)
|
if(type.ptr() != tmp)
|
||||||
@@ -746,7 +764,7 @@ store_create_info(THD *thd, TABLE *table, String* packet)
|
|||||||
packet->append("KEY ", 4);
|
packet->append("KEY ", 4);
|
||||||
|
|
||||||
if(i != primary_key)
|
if(i != primary_key)
|
||||||
packet->append(key_info->name);
|
append_identifier(thd,packet,key_info->name);
|
||||||
|
|
||||||
packet->append('(');
|
packet->append('(');
|
||||||
|
|
||||||
@@ -756,7 +774,7 @@ store_create_info(THD *thd, TABLE *table, String* packet)
|
|||||||
packet->append(',');
|
packet->append(',');
|
||||||
|
|
||||||
if (key_part->field)
|
if (key_part->field)
|
||||||
packet->append(key_part->field->field_name);
|
append_identifier(thd,packet,key_part->field->field_name);
|
||||||
if (!key_part->field ||
|
if (!key_part->field ||
|
||||||
(key_part->length !=
|
(key_part->length !=
|
||||||
table->field[key_part->fieldnr-1]->key_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_WARNINGS
|
||||||
%token SQL_AUTO_IS_NULL
|
%token SQL_AUTO_IS_NULL
|
||||||
%token SQL_SAFE_UPDATES
|
%token SQL_SAFE_UPDATES
|
||||||
|
%token SQL_QUOTE_SHOW_CREATE
|
||||||
|
|
||||||
%left SET_VAR
|
%left SET_VAR
|
||||||
%left OR_OR_CONCAT OR
|
%left OR_OR_CONCAT OR
|
||||||
@@ -2620,6 +2621,7 @@ set_option:
|
|||||||
| SQL_AUTO_IS_NULL { $$= OPTION_AUTO_IS_NULL; }
|
| SQL_AUTO_IS_NULL { $$= OPTION_AUTO_IS_NULL; }
|
||||||
| SQL_SAFE_UPDATES { $$= OPTION_SAFE_UPDATES; }
|
| SQL_SAFE_UPDATES { $$= OPTION_SAFE_UPDATES; }
|
||||||
| SQL_BUFFER_RESULT { $$= OPTION_BUFFER_RESULT; }
|
| SQL_BUFFER_RESULT { $$= OPTION_BUFFER_RESULT; }
|
||||||
|
| SQL_QUOTE_SHOW_CREATE { $$= OPTION_QUOTE_SHOW_CREATE; }
|
||||||
|
|
||||||
/* Lock function */
|
/* Lock function */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user