From 0fdd650feca3e0715f1872e4945b565505ea4ba7 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Mar 2005 18:12:12 +0200 Subject: [PATCH] Fixed Bug#8922. Reverted Jim's patch. client/mysql.cc: Fixed Bug#8922, The deilimeter cannot be reset after it is set as word 'delimiter' include/my_sys.h: Reverted Jim's patch. mysys/mf_iocache.c: Reverted Jim's patch. sql/sql_class.h: Reverted Jim's patch. --- client/mysql.cc | 9 +++++++-- include/my_sys.h | 1 - mysys/mf_iocache.c | 16 ++++------------ sql/sql_class.h | 4 ++-- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index 1e85c320f55..babb6600ac4 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -44,7 +44,7 @@ #include #endif -const char *VER= "14.8"; +const char *VER= "14.9"; /* Don't try to make a nice table if the data is too big */ #define MAX_COLUMN_LENGTH 1024 @@ -1045,7 +1045,12 @@ static COMMANDS *find_command (char *name,char cmd_char) { while (my_isspace(charset_info,*name)) name++; - if (strstr(name, delimiter) || strstr(name, "\\g")) + /* + As special case we allow row that starts with word delimiter + to be able to change delimiter if someone has delimiter 'delimiter'. + */ + if (strstr(name, "\\g") || (strstr(name, delimiter) && + strncmp(name, "delimiter", 9))) return ((COMMANDS *) 0); if ((end=strcont(name," \t"))) { diff --git a/include/my_sys.h b/include/my_sys.h index ddac316b5c6..ce785b58da4 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -279,7 +279,6 @@ enum loglevel { enum cache_type { READ_CACHE,WRITE_CACHE, - APPEND_CACHE, /* Like WRITE_CACHE, but only append */ SEQ_READ_APPEND /* sequential read or append */, READ_FIFO, READ_NET,WRITE_NET}; diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index 6fa64aa2d47..b86e9daf92d 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -87,7 +87,7 @@ static void my_aiowait(my_aio_result *result); void setup_io_cache(IO_CACHE* info) { /* Ensure that my_b_tell() and my_b_bytes_in_cache works */ - if (info->type == WRITE_CACHE || info->type == APPEND_CACHE) + if (info->type == WRITE_CACHE) { info->current_pos= &info->write_pos; info->current_end= &info->write_end; @@ -247,7 +247,7 @@ int init_io_cache(IO_CACHE *info, File file, uint cachesize, } #endif - if (type == WRITE_CACHE || type == APPEND_CACHE) + if (type == WRITE_CACHE) info->write_end= info->buffer+info->buffer_length- (seek_offset & (IO_SIZE-1)); else @@ -318,7 +318,6 @@ my_bool reinit_io_cache(IO_CACHE *info, enum cache_type type, /* One can't do reinit with the following types */ DBUG_ASSERT(type != READ_NET && info->type != READ_NET && type != WRITE_NET && info->type != WRITE_NET && - type != APPEND_CACHE && info->type != APPEND_CACHE && type != SEQ_READ_APPEND && info->type != SEQ_READ_APPEND); /* If the whole file is in memory, avoid flushing to disk */ @@ -1124,8 +1123,7 @@ int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock) my_off_t pos_in_file; DBUG_ENTER("my_b_flush_io_cache"); - if (!(append_cache = (info->type == SEQ_READ_APPEND || - info->type == APPEND_CACHE))) + if (!(append_cache = (info->type == SEQ_READ_APPEND))) need_append_buffer_lock=0; if (info->type == WRITE_CACHE || append_cache) @@ -1172,13 +1170,7 @@ int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock) else { info->end_of_file+=(info->write_pos-info->append_read_pos); - /* - We only need to worry that info->end_of_file is really accurate - for SEQ_READ_APPEND. For APPEND_CACHE, it is possible that the - file is non-seekable, like a FIFO. - */ - DBUG_ASSERT(info->type != SEQ_READ_APPEND || - info->end_of_file == my_tell(info->file,MYF(0))); + DBUG_ASSERT(info->end_of_file == my_tell(info->file,MYF(0))); } info->append_read_pos=info->write_pos=info->write_buffer; diff --git a/sql/sql_class.h b/sql/sql_class.h index aaf617ec493..fa2bcc4d478 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -293,13 +293,13 @@ public: { char buf[FN_REFLEN]; return open(generate_name(log_name, ".log", 0, buf), - LOG_NORMAL, 0, APPEND_CACHE, 0, 0, 0); + LOG_NORMAL, 0, WRITE_CACHE, 0, 0, 0); } bool open_slow_log(const char *log_name) { char buf[FN_REFLEN]; return open(generate_name(log_name, "-slow.log", 0, buf), - LOG_NORMAL, 0, APPEND_CACHE, 0, 0, 0); + LOG_NORMAL, 0, WRITE_CACHE, 0, 0, 0); } bool open_index_file(const char *index_file_name_arg, const char *log_name);