From 1176c175533dd23ec39f9c162976fcb2be881dfd Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 26 Aug 2004 19:57:32 +0200 Subject: [PATCH 01/16] - fixed brain fart in Bootrap - it never actually caught failures when pulling BK trees before. Build-tools/Bootstrap: - thinko fix: we need to run the "bk pull" command on its own, if we want to get its return value... --- Build-tools/Bootstrap | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Build-tools/Bootstrap b/Build-tools/Bootstrap index c1063363bdf..8cad093bc5f 100755 --- a/Build-tools/Bootstrap +++ b/Build-tools/Bootstrap @@ -123,14 +123,16 @@ if (($opt_directory ne $PWD) && (!-d $opt_directory && !$opt_dry_run)) if ($opt_pull) { &logger("Updating BK tree $REPO to latest ChangeSet first"); - $command= "cd $REPO; bk pull; cd .."; - &run_command($command, "Could not update $REPO!"); + chdir ($REPO) or &abort("Could not chdir to $REPO!"); + &run_command("bk pull", "Could not update $REPO!"); + chdir ($PWD) or &abort("Could not chdir to $PWD!"); unless ($opt_skip_manual) { &logger("Updating manual tree in $opt_docdir"); - $command= "cd $opt_docdir; bk pull; cd .."; - &run_command($command, "Could not update $opt_docdir!"); + chdir ($opt_docdir) or &abort("Could not chdir to $opt_docdir!"); + &run_command("bk pull", "Could not update $opt_docdir!"); + chdir ($PWD) or &abort("Could not chdir to $PWD!"); } } From 0b10b8cba6f62575624a1b8b4cfd9b99637c21a7 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Aug 2004 01:08:57 +0200 Subject: [PATCH 02/16] Adding a file that was missed during the first push This file was part of the patch for Bug #4466 Nothing in .err when mysql service ends because of malformed my.ini options message.mc: new file --- VC++Files/sql/message.mc | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 VC++Files/sql/message.mc diff --git a/VC++Files/sql/message.mc b/VC++Files/sql/message.mc new file mode 100644 index 00000000000..a1a7c8cff7e --- /dev/null +++ b/VC++Files/sql/message.mc @@ -0,0 +1,8 @@ +MessageId = 100 +Severity = Error +Facility = Application +SymbolicName = MSG_DEFAULT +Language = English +%1For more information, see Help and Support Center at http://www.mysql.com. + + From dd714c9a1b6f7e98e4e9b3397a4b84144fb4e181 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Aug 2004 10:54:57 +0500 Subject: [PATCH 03/16] win1251.conf: Wrong UPPER/LOWER translation for Cyrillic letter tse was fixed. bug#5110 sql/share/charsets/win1251.conf: Wrong UPPER/LOWER translation for Cyrillic letter tse was fixed. bug#5110 BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- BitKeeper/etc/logging_ok | 1 + sql/share/charsets/win1251.conf | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 8183cf5040d..698f7655b6e 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -16,6 +16,7 @@ arjen@george.bitbike.com bar@bar.intranet.mysql.r18.ru bar@bar.mysql.r18.ru bar@bar.udmsearch.izhnet.ru +bar@mysql.com bell@laptop.sanja.is.com.ua bell@sanja.is.com.ua bk@admin.bk diff --git a/sql/share/charsets/win1251.conf b/sql/share/charsets/win1251.conf index a5ccc3190ad..e05568323b4 100644 --- a/sql/share/charsets/win1251.conf +++ b/sql/share/charsets/win1251.conf @@ -41,7 +41,7 @@ A0 A1 A2 A3 A4 A5 A6 A7 B8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - F0 F1 F2 F3 F4 F5 F5 F7 F8 F9 FA FB FC FD FE FF + F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF @@ -59,7 +59,7 @@ A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 A8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF - D0 D1 D2 D3 D4 D5 D5 D7 D8 D9 DA DB DC DD DE DF + D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF From 14f96b2f6059471cb2f1addb94ecfdcdb09bf071 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Aug 2004 12:09:28 +0500 Subject: [PATCH 04/16] table.cc: Bug #4558 Escape handling error for ENUM values in SJIS encoding sql/table.cc: Bug #4558 Escape handling error for ENUM values in SJIS encoding --- sql/table.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/sql/table.cc b/sql/table.cc index 7e6338a3f3f..898ed4bca3d 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -993,8 +993,26 @@ ulong next_io_size(register ulong pos) void append_unescaped(String *res,const char *pos) { - for (; *pos ; pos++) +#ifdef USE_MB + const char *end= pos + strlen(pos); +#endif + + for (; *pos ; ) { +#ifdef USE_MB + /* + Note, there is no needs to propagate this code into 4.1. + */ + uint mblen; + if (use_mb(default_charset_info) && + (mblen= my_ismbchar(default_charset_info, pos, end))) + { + res->append(pos, mblen); + pos+= mblen; + continue; + } +#endif + switch (*pos) { case 0: /* Must be escaped for 'mysql' */ res->append('\\'); @@ -1020,6 +1038,7 @@ void append_unescaped(String *res,const char *pos) res->append(*pos); break; } + pos++; } } From 434d385ac17f2bfb553c112b5e19491d0bb0f876 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Aug 2004 21:17:29 +0500 Subject: [PATCH 05/16] Compile all charset conversion tables if --with-extra-charsets=all or --with-extra-charsets=complex is given. --- acconfig.h | 3 +++ configure.in | 2 ++ sql/convert.cc | 3 +++ 3 files changed, 8 insertions(+) diff --git a/acconfig.h b/acconfig.h index 825842d256a..71dea4825f6 100644 --- a/acconfig.h +++ b/acconfig.h @@ -281,6 +281,9 @@ /* READLINE: */ #undef VOID_SIGHANDLER +/* Define this if you want extra character set conversion table*/ +#undef DEFINE_ALL_CHARACTER_SETS + /* Leave that blank line there!! Autoheader needs it. If you're adding to this file, keep in mind: diff --git a/configure.in b/configure.in index 2adf2208332..7853b615ae0 100644 --- a/configure.in +++ b/configure.in @@ -2262,9 +2262,11 @@ elif test "$extra_charsets" = complex; then CHARSETS=`/bin/ls -1 $srcdir/strings/ctype-*.c | \ sed -e 's;^.*/ctype-;;' -e 's;.c$;;'` CHARSETS=`echo $CHARSETS` # get rid of line breaks + AC_DEFINE([DEFINE_ALL_CHARACTER_SETS]) else if test "$extra_charsets" = all; then CHARSETS="$CHARSETS_AVAILABLE $CHARSETS_DEPRECATED" + AC_DEFINE([DEFINE_ALL_CHARACTER_SETS]) else CHARSETS=`echo $extra_charsets | sed -e 's/,/ /g'` fi diff --git a/sql/convert.cc b/sql/convert.cc index e4ae13d1e07..f84c80a6121 100644 --- a/sql/convert.cc +++ b/sql/convert.cc @@ -20,6 +20,9 @@ ** Some of the tables are hidden behind IFDEF to reduce some space. ** One can enable them by removing the // characters from the next comment ** One must also give a name to each mapping that one wants to use... +** +** All tables are activated if --with-extra-charsets=all or +** --with-extra-charsets=complex was given to configure. */ /* #define DEFINE_ALL_CHARACTER_SETS */ From db15b91915bb57914e11f226c0130467dd4dcfdd Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 28 Aug 2004 00:49:54 +0300 Subject: [PATCH 06/16] Code style fixes. Initialize LOG_error_log before get_options to not use an uninitalized mutex in case of an error from handle_options() mysql-test/r/lowercase_table.result: Changed foo database -> mysqltest More test cases mysql-test/t/lowercase_table.test: Changed foo database -> mysqltest More test cases mysys/my_getopt.c: Fix new code to use MySQL indentation style sql/log.cc: Change to use MySQL indentation style and naming conventions Remove usage of strlen() and strcat() sql/mysqld.cc: Initialize LOG_error_log before get_options to not use an uninitalized mutex in case of an error from handle_options() sql/sql_base.cc: Added comment sql/table.cc: Added #if MYSQL_VERSION_ID < 40100 to ensure code is merged correctly --- mysql-test/r/lowercase_table.result | 21 +++- mysql-test/t/lowercase_table.test | 17 ++- mysys/my_getopt.c | 87 +++++++------- sql/log.cc | 171 +++++++++++++++------------- sql/mysqld.cc | 20 ++-- sql/sql_base.cc | 13 ++- sql/table.cc | 5 +- 7 files changed, 187 insertions(+), 147 deletions(-) diff --git a/mysql-test/r/lowercase_table.result b/mysql-test/r/lowercase_table.result index 5acab254511..43d24b1ab17 100644 --- a/mysql-test/r/lowercase_table.result +++ b/mysql-test/r/lowercase_table.result @@ -1,4 +1,5 @@ drop table if exists t1,t2,t3,t4,T1; +drop database if exists mysqltest; create table T1 (id int primary key, Word varchar(40) not null, Index(Word)); create table t4 (id int primary key, Word varchar(40) not null); INSERT INTO T1 VALUES (1, 'a'), (2, 'b'), (3, 'c'); @@ -39,12 +40,22 @@ Unknown table 'T1' in field list select count(bags.a) from t1 as Bags; Unknown table 'bags' in field list drop table t1; -create database foo; -use foo; +create database mysqltest; +use MYSQLTEST; create table t1 (a int); -select FOO.t1.* from FOO.t1; +select T1.a from MYSQLTEST.T1; +a +select t1.a from MYSQLTEST.T1; +Unknown table 't1' in field list +select mysqltest.t1.* from MYSQLTEST.t1; +a +select MYSQLTEST.t1.* from MYSQLTEST.t1; +a +select MYSQLTEST.T1.* from MYSQLTEST.T1; +a +select MYSQLTEST.T1.* from T1; a alter table t1 rename to T1; -select FOO.t1.* from FOO.t1; +select MYSQLTEST.t1.* from MYSQLTEST.t1; a -drop database FOO; +drop database mysqltest; diff --git a/mysql-test/t/lowercase_table.test b/mysql-test/t/lowercase_table.test index d52c60baea7..1b431a9d920 100644 --- a/mysql-test/t/lowercase_table.test +++ b/mysql-test/t/lowercase_table.test @@ -3,6 +3,7 @@ # drop table if exists t1,t2,t3,t4,T1; +drop database if exists mysqltest; create table T1 (id int primary key, Word varchar(40) not null, Index(Word)); create table t4 (id int primary key, Word varchar(40) not null); INSERT INTO T1 VALUES (1, 'a'), (2, 'b'), (3, 'c'); @@ -34,10 +35,16 @@ drop table t1; # # Test all caps database name # -create database foo; -use foo; +create database mysqltest; +use MYSQLTEST; create table t1 (a int); -select FOO.t1.* from FOO.t1; +select T1.a from MYSQLTEST.T1; +--error 1109 +select t1.a from MYSQLTEST.T1; +select mysqltest.t1.* from MYSQLTEST.t1; +select MYSQLTEST.t1.* from MYSQLTEST.t1; +select MYSQLTEST.T1.* from MYSQLTEST.T1; +select MYSQLTEST.T1.* from T1; alter table t1 rename to T1; -select FOO.t1.* from FOO.t1; -drop database FOO; +select MYSQLTEST.t1.* from MYSQLTEST.t1; +drop database mysqltest; diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index c471a30eb35..f9df4afb55d 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -56,12 +56,12 @@ char *disabled_my_option= (char*) "0"; my_bool my_getopt_print_errors= 1; -void default_reporter( enum loglevel level, const char *format, ... ) +void default_reporter(enum loglevel level, const char *format, ...) { va_list args; - va_start( args, format ); - vfprintf( stderr, format, args ); - va_end( args ); + va_start(args, format); + vfprintf(stderr, format, args); + va_end(args); } /* @@ -75,8 +75,9 @@ void default_reporter( enum loglevel level, const char *format, ... ) */ int handle_options(int *argc, char ***argv, - const struct my_option *longopts, my_get_one_option get_one_option, - my_error_reporter reporter ) + const struct my_option *longopts, + my_get_one_option get_one_option, + my_error_reporter reporter) { uint opt_found, argvpos= 0, length, i; my_bool end_of_options= 0, must_be_var, set_maximum_value, special_used, @@ -90,7 +91,8 @@ int handle_options(int *argc, char ***argv, (*argv)++; /* --- || ---- */ init_variables(longopts); - if (! reporter) reporter = &default_reporter; + if (! reporter) + reporter= &default_reporter; for (pos= *argv, pos_end=pos+ *argc; pos != pos_end ; pos++) { @@ -116,7 +118,8 @@ int handle_options(int *argc, char ***argv, if (!*++pos) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, "%s: Option '-O' requires an argument\n", progname ); + reporter(ERROR_LEVEL, + "%s: Option '-O' requires an argument\n", progname); return EXIT_ARGUMENT_REQUIRED; } cur_arg= *pos; @@ -132,7 +135,9 @@ int handle_options(int *argc, char ***argv, if (!*cur_arg) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, "%s: Option '--set-variable' requires an argument\n", progname ); + reporter(ERROR_LEVEL, + "%s: Option '--set-variable' requires an argument\n", + progname); return EXIT_ARGUMENT_REQUIRED; } } @@ -144,7 +149,9 @@ int handle_options(int *argc, char ***argv, if (!*++pos) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, "%s: Option '--set-variable' requires an argument\n", progname ); + reporter(ERROR_LEVEL, + "%s: Option '--set-variable' requires an argument\n", + progname); return EXIT_ARGUMENT_REQUIRED; } cur_arg= *pos; @@ -203,10 +210,10 @@ int handle_options(int *argc, char ***argv, if (opt_found > 1) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, - "%s: ambiguous option '--%s-%s' (--%s-%s)\n", - progname, special_opt_prefix[i], cur_arg, - special_opt_prefix[i], prev_found); + reporter(ERROR_LEVEL, + "%s: ambiguous option '--%s-%s' (--%s-%s)\n", + progname, special_opt_prefix[i], cur_arg, + special_opt_prefix[i], prev_found); return EXIT_AMBIGUOUS_OPTION; } switch (i) { @@ -238,16 +245,16 @@ int handle_options(int *argc, char ***argv, if (must_be_var) { if (my_getopt_print_errors) - reporter( option_is_loose ? WARNING_LEVEL : ERROR_LEVEL, - "%s: unknown variable '%s'\n", progname, cur_arg ); + reporter(option_is_loose ? WARNING_LEVEL : ERROR_LEVEL, + "%s: unknown variable '%s'\n", progname, cur_arg); if (!option_is_loose) return EXIT_UNKNOWN_VARIABLE; } else { if (my_getopt_print_errors) - reporter( option_is_loose ? WARNING_LEVEL : ERROR_LEVEL, - "%s: unknown option '--%s'\n", progname, cur_arg ); + reporter(option_is_loose ? WARNING_LEVEL : ERROR_LEVEL, + "%s: unknown option '--%s'\n", progname, cur_arg); if (!option_is_loose) return EXIT_UNKNOWN_OPTION; } @@ -263,23 +270,23 @@ int handle_options(int *argc, char ***argv, if (must_be_var) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, "%s: variable prefix '%s' is not unique\n", - progname, cur_arg); + reporter(ERROR_LEVEL, "%s: variable prefix '%s' is not unique\n", + progname, cur_arg); return EXIT_VAR_PREFIX_NOT_UNIQUE; } else { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, "%s: ambiguous option '--%s' (%s, %s)\n", - progname, cur_arg, prev_found, optp->name); + reporter(ERROR_LEVEL, "%s: ambiguous option '--%s' (%s, %s)\n", + progname, cur_arg, prev_found, optp->name); return EXIT_AMBIGUOUS_OPTION; } } if (must_be_var && optp->var_type == GET_NO_ARG) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, "%s: option '%s' cannot take an argument\n", - progname, optp->name); + reporter(ERROR_LEVEL, "%s: option '%s' cannot take an argument\n", + progname, optp->name); return EXIT_NO_ARGUMENT_ALLOWED; } if (optp->arg_type == NO_ARG) @@ -287,8 +294,9 @@ int handle_options(int *argc, char ***argv, if (optend && optp->var_type != GET_BOOL) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, "%s: option '--%s' cannot take an argument\n", - progname, optp->name); + reporter(ERROR_LEVEL, + "%s: option '--%s' cannot take an argument\n", + progname, optp->name); return EXIT_NO_ARGUMENT_ALLOWED; } if (optp->var_type == GET_BOOL) @@ -325,8 +333,9 @@ int handle_options(int *argc, char ***argv, if (!*++pos) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, "%s: option '--%s' requires an argument\n", - progname, optp->name); + reporter(ERROR_LEVEL, + "%s: option '--%s' requires an argument\n", + progname, optp->name); return EXIT_ARGUMENT_REQUIRED; } argument= *pos; @@ -375,9 +384,9 @@ int handle_options(int *argc, char ***argv, if (!pos[1]) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, - "%s: option '-%c' requires an argument\n", - progname, optp->id); + reporter(ERROR_LEVEL, + "%s: option '-%c' requires an argument\n", + progname, optp->id); return EXIT_ARGUMENT_REQUIRED; } argument= *++pos; @@ -387,9 +396,9 @@ int handle_options(int *argc, char ***argv, } if ((error= setval(optp, argument, set_maximum_value))) { - reporter( ERROR_LEVEL, - "%s: Error while setting value '%s' to '%s'\n", - progname, argument, optp->name); + reporter(ERROR_LEVEL, + "%s: Error while setting value '%s' to '%s'\n", + progname, argument, optp->name); return error; } get_one_option(optp->id, optp, argument); @@ -399,8 +408,8 @@ int handle_options(int *argc, char ***argv, if (!opt_found) { if (my_getopt_print_errors) - reporter( ERROR_LEVEL, - "%s: unknown option '-%c'\n", progname, *optend); + reporter(ERROR_LEVEL, + "%s: unknown option '-%c'\n", progname, *optend); return EXIT_UNKNOWN_OPTION; } } @@ -409,9 +418,9 @@ int handle_options(int *argc, char ***argv, } if ((error= setval(optp, argument, set_maximum_value))) { - reporter( ERROR_LEVEL, - "%s: Error while setting value '%s' to '%s'\n", - progname, argument, optp->name); + reporter(ERROR_LEVEL, + "%s: Error while setting value '%s' to '%s'\n", + progname, argument, optp->name); return error; } get_one_option(optp->id, optp, argument); diff --git a/sql/log.cc b/sql/log.cc index db7b80eb4f7..e9dd2e4a69b 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -43,37 +43,41 @@ static bool test_if_number(const char *str, #ifdef __NT__ static int eventSource = 0; -void setupWindowsEventSource() + +void setup_windows_event_source() { - if (eventSource) return; - - eventSource = 1; - HKEY hRegKey = NULL; - DWORD dwError = 0; - TCHAR szPath[ MAX_PATH ]; + HKEY hRegKey= NULL; + DWORD dwError= 0; + TCHAR szPath[MAX_PATH]; + DWORD dwTypes; - // Create the event source registry key - dwError = RegCreateKey( HKEY_LOCAL_MACHINE, - "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\MySQL", - &hRegKey ); + if (eventSource) // Ensure that we are only called once + return; + eventSource= 1; - // Name of the PE module that contains the message resource - GetModuleFileName( NULL, szPath, MAX_PATH ); + // Create the event source registry key + dwError= RegCreateKey(HKEY_LOCAL_MACHINE, + "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\MySQL", + &hRegKey); - // Register EventMessageFile - dwError = RegSetValueEx( hRegKey, "EventMessageFile", 0, REG_EXPAND_SZ, - (PBYTE) szPath, strlen(szPath)+1 ); + /* Name of the PE module that contains the message resource */ + GetModuleFileName(NULL, szPath, MAX_PATH); + + / Register EventMessageFile */ + dwError = RegSetValueEx(hRegKey, "EventMessageFile", 0, REG_EXPAND_SZ, + (PBYTE) szPath, strlen(szPath)+1); - // Register supported event types - DWORD dwTypes = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE; - dwError = RegSetValueEx( hRegKey, "TypesSupported", 0, REG_DWORD, - (LPBYTE) &dwTypes, sizeof dwTypes ); + /* Register supported event types */ + dwTypes= (EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | + EVENTLOG_INFORMATION_TYPE); + dwError= RegSetValueEx(hRegKey, "TypesSupported", 0, REG_DWORD, + (LPBYTE) &dwTypes, sizeof dwTypes); - RegCloseKey( hRegKey ); + RegCloseKey(hRegKey); } -#endif +#endif /* __NT__ */ /**************************************************************************** @@ -1732,33 +1736,33 @@ static bool test_if_number(register const char *str, } /* test_if_number */ -void print_buffer_to_file( enum loglevel level, const char *buffer ) +void print_buffer_to_file(enum loglevel level, const char *buffer) { time_t skr; struct tm tm_tmp; struct tm *start; - - DBUG_ENTER("print_buffer_to_log"); + DBUG_ENTER("print_buffer_to_file"); + DBUG_PRINT("enter",("buffer: %s", buffer)); VOID(pthread_mutex_lock(&LOCK_error_log)); skr=time(NULL); localtime_r(&skr, &tm_tmp); start=&tm_tmp; - fprintf( stderr, "%02d%02d%02d %2d:%02d:%02d [%s] %s\n", + fprintf(stderr, "%02d%02d%02d %2d:%02d:%02d [%s] %s\n", start->tm_year % 100, start->tm_mon+1, start->tm_mday, start->tm_hour, start->tm_min, start->tm_sec, - level == ERROR_LEVEL ? "ERROR" : level == WARNING_LEVEL ? "WARNING" : "INFORMATION", - buffer ); + (level == ERROR_LEVEL ? "ERROR" : level == WARNING_LEVEL ? + "WARNING" : "INFORMATION"), + buffer); fflush(stderr); VOID(pthread_mutex_unlock(&LOCK_error_log)); - DBUG_VOID_RETURN; } @@ -1772,6 +1776,7 @@ void sql_perror(const char *message) #endif } + bool flush_error_log() { bool result=0; @@ -1820,122 +1825,124 @@ bool flush_error_log() #ifdef __NT__ -void print_buffer_to_nt_eventlog( enum loglevel level, char *buff, int buffLen ) +void print_buffer_to_nt_eventlog(enum loglevel level, char *buff, + uint length, int buffLen) { HANDLE event; char *buffptr; LPCSTR *buffmsgptr; + DBUG_ENTER("print_buffer_to_nt_eventlog"); - DBUG_ENTER( "print_buffer_to_nt_eventlog" ); - - buffptr = buff; - if (strlen(buff) > (uint)(buffLen-4)) + buffptr= buff; + if (length > (uint)(buffLen-4)) { - char *newBuff = new char[ strlen(buff) + 4 ]; - strcpy( newBuff, buff ); - buffptr = newBuff; + char *newBuff= new char[length + 4]; + strcpy(newBuff, buff); + buffptr= newBuff; } - strcat( buffptr, "\r\n\r\n" ); - buffmsgptr = (LPCSTR*)&buffptr; + strmov(buffptr+length, "\r\n\r\n"); + buffmsgptr= (LPCSTR*) &buffptr; // Keep windows happy - setupWindowsEventSource(); - if (event = RegisterEventSource(NULL,"MySQL")) + setup_windows_event_source(); + if ((event= RegisterEventSource(NULL,"MySQL"))) { - switch (level){ + switch (level) { case ERROR_LEVEL: - ReportEvent(event, EVENTLOG_ERROR_TYPE, 0, MSG_DEFAULT, NULL, 1, 0, buffmsgptr, NULL); + ReportEvent(event, EVENTLOG_ERROR_TYPE, 0, MSG_DEFAULT, NULL, 1, 0, + buffmsgptr, NULL); break; case WARNING_LEVEL: - ReportEvent(event, EVENTLOG_WARNING_TYPE, 0, MSG_DEFAULT, NULL, 1, 0, buffmsgptr, NULL); + ReportEvent(event, EVENTLOG_WARNING_TYPE, 0, MSG_DEFAULT, NULL, 1, 0, + buffmsgptr, NULL); break; case INFORMATION_LEVEL: - ReportEvent(event, EVENTLOG_INFORMATION_TYPE, 0, MSG_DEFAULT, NULL, 1, 0, buffmsgptr, NULL); + ReportEvent(event, EVENTLOG_INFORMATION_TYPE, 0, MSG_DEFAULT, NULL, 1, + 0, buffmsgptr, NULL); break; } DeregisterEventSource(event); } - // if we created a string buffer, then delete it - if ( buffptr != buff ) + /* if we created a string buffer, then delete it */ + if (buffptr != buff) delete[] buffptr; - DBUG_VOID_RETURN; } -#endif +#endif /* __NT__ */ + /* - Prints a printf style message to the error log and, under NT, to the Windows event log. + Prints a printf style message to the error log and, under NT, to the + Windows event log. SYNOPSIS vprint_msg_to_log() - event_type Type of event to write (Error, Warning, or Info) - format Printf style format of message - args va_list list of arguments for the message + event_type Type of event to write (Error, Warning, or Info) + format Printf style format of message + args va_list list of arguments for the message NOTE IMPLEMENTATION - This function prints the message into a buffer and then sends that buffer to other - functions to write that message to other logging sources. + This function prints the message into a buffer and then sends that buffer + to other functions to write that message to other logging sources. RETURN VALUES void */ + void vprint_msg_to_log(enum loglevel level, const char *format, va_list args) { char buff[1024]; - + uint length; DBUG_ENTER("vprint_msg_to_log"); - my_vsnprintf( buff, sizeof(buff)-5, format, args ); - - print_buffer_to_file( level, buff ); - -#ifndef DBUG_OFF - DBUG_PRINT("error",("%s",buff)); -#endif + length= my_vsnprintf(buff, sizeof(buff)-5, format, args); + print_buffer_to_file(level, buff); #ifdef __NT__ - print_buffer_to_nt_eventlog( level, buff, sizeof(buff) ); + print_buffer_to_nt_eventlog(level, buff, length, sizeof(buff)); #endif DBUG_VOID_RETURN; } -void sql_print_error( const char *format, ... ) +void sql_print_error(const char *format, ...) { - DBUG_ENTER( "sql_print_error" ); - va_list args; - va_start( args, format ); - vprint_msg_to_log( ERROR_LEVEL, format, args ); - va_end( args ); + DBUG_ENTER("sql_print_error"); + + va_start(args, format); + vprint_msg_to_log(ERROR_LEVEL, format, args); + va_end(args); DBUG_VOID_RETURN; } -void sql_print_warning( const char *format, ... ) -{ - DBUG_ENTER( "sql_print_warning" ); +void sql_print_warning(const char *format, ...) +{ va_list args; - va_start( args, format ); - vprint_msg_to_log( WARNING_LEVEL, format, args ); - va_end( args ); + DBUG_ENTER("sql_print_warning"); + + va_start(args, format); + vprint_msg_to_log(WARNING_LEVEL, format, args); + va_end(args); DBUG_VOID_RETURN; } -void sql_print_information( const char *format, ... ) -{ - DBUG_ENTER( "sql_print_information" ); +void sql_print_information(const char *format, ...) +{ va_list args; - va_start( args, format ); - vprint_msg_to_log( INFORMATION_LEVEL, format, args ); - va_end( args ); + DBUG_ENTER("sql_print_information"); + + va_start(args, format); + vprint_msg_to_log(INFORMATION_LEVEL, format, args); + va_end(args); DBUG_VOID_RETURN; } diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 8b10627b323..1068c5ec9a1 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2247,6 +2247,10 @@ int main(int argc, char **argv) if (!opt_mysql_tmpdir || !opt_mysql_tmpdir[0]) opt_mysql_tmpdir=(char*) P_tmpdir; /* purecov: inspected */ + /* needed by get_options */ + + (void) pthread_mutex_init(&LOCK_error_log,MY_MUTEX_INIT_FAST); + set_options(); get_options(argc,argv); set_server_version(); @@ -2263,7 +2267,6 @@ int main(int argc, char **argv) (void) pthread_mutex_init(&LOCK_thread_count,MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_mapped_file,MY_MUTEX_INIT_SLOW); (void) pthread_mutex_init(&LOCK_status,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_error_log,MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_delayed_insert,MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_delayed_status,MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_delayed_create,MY_MUTEX_INIT_SLOW); @@ -5100,21 +5103,24 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), } return 0; } - /* Initiates DEBUG - but no debugging here ! */ -void option_error_reporter( enum loglevel level, const char *format, ... ) + +void option_error_reporter(enum loglevel level, const char *format, ...) { va_list args; - va_start( args, format ); - vprint_msg_to_log( level, format, args ); - va_end( args ); + va_start(args, format); + vprint_msg_to_log(level, format, args); + va_end(args); } + /* Initiates DEBUG - but no debugging here ! */ + static void get_options(int argc,char **argv) { int ho_error; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, option_error_reporter ))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, + option_error_reporter))) exit(ho_error); #if defined(HAVE_BROKEN_REALPATH) diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 26ce394ec37..8fd7273fd78 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -2066,13 +2066,16 @@ insert_fields(THD *thd,TABLE_LIST *tables, const char *db_name, uint found; DBUG_ENTER("insert_fields"); - if (db_name && lower_case_table_names) { - /* convert database to lower case for comparison */ - strmake( name_buff, db_name, sizeof(name_buff)-1 ); - casedn_str( name_buff ); - db_name = name_buff; + /* + convert database to lower case for comparison + We can't do this in Item_field as this would change the + 'name' of the item which may be used in the select list + */ + strmake(name_buff, db_name, sizeof(name_buff)-1); + casedn_str(name_buff); + db_name= name_buff; } diff --git a/sql/table.cc b/sql/table.cc index 898ed4bca3d..573fa11a4c4 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -999,10 +999,7 @@ void append_unescaped(String *res,const char *pos) for (; *pos ; ) { -#ifdef USE_MB - /* - Note, there is no needs to propagate this code into 4.1. - */ +#if defined(USE_MB) && MYSQL_VERSION_ID < 40100 uint mblen; if (use_mb(default_charset_info) && (mblen= my_ismbchar(default_charset_info, pos, end))) From a90c14b6f4f3a88b191d93b6c7de68403e2dffc9 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 28 Aug 2004 09:31:15 +0200 Subject: [PATCH 07/16] - fixed typo so make dist does not fail --- support-files/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/Makefile.am b/support-files/Makefile.am index ddad52fbb2a..1f38b4c30c2 100644 --- a/support-files/Makefile.am +++ b/support-files/Makefile.am @@ -22,7 +22,7 @@ EXTRA_DIST = mysql.spec.sh \ my-medium.cnf.sh \ my-large.cnf.sh \ my-huge.cnf.sh \ - my-innodb-heavy-4G \ + my-innodb-heavy-4G.cnf.sh \ mysql-log-rotate.sh \ mysql.server.sh \ binary-configure.sh \ From 4014c093e2ababc8436f83ef2b3f4c946a13795d Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 29 Aug 2004 14:13:51 +0200 Subject: [PATCH 08/16] Fix for BUG#4500 "set character set replicates incorrectly" We must not reset the charset in slave after each statement, otherwise the SET CHARACTER SET is cancelled immediately. Instead, we write a SET CHARACTER SET DEFAULT to the master's binlog when needed (like we already do for SET FOREIGN_KEY_CHECKS); such writing is not necessary in 4.1 (in 4.1 the bug does not exist, as the SET ONE_SHOT syntax is used). I have written a test and it works, but I'm not pushing the test as it requires building with all charsets. I have noticed differences between what is inserted in the master's table in 4.0 and 4.1, and alerted Bar. sql/log.cc: When SET CHARACTER SET has been used, we must reset the charset after the writing the statement, in the binlog. In 4.1, this resetting is already achieved by the SET ONE_SHOT syntax. sql/log_event.cc: In slave, we must not simply reset the charset after each statement: if we do this, the charset gets immediately after executing the SET CHARACTER SET! (BUG#4500). --- sql/log.cc | 22 +++++++++++++++++----- sql/log_event.cc | 2 -- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index db7b80eb4f7..9927bfe8d17 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1208,12 +1208,24 @@ bool MYSQL_LOG::write(Log_event* event_info) /* Write log events to reset the 'run environment' of the SQL command */ - if (thd && thd->options & OPTION_NO_FOREIGN_KEY_CHECKS) + if (thd) { - Query_log_event e(thd, "SET FOREIGN_KEY_CHECKS=1", 24, 0); - e.set_log_pos(this); - if (e.write(file)) - goto err; + if (thd->options & OPTION_NO_FOREIGN_KEY_CHECKS) + { + Query_log_event e(thd, "SET FOREIGN_KEY_CHECKS=1", 24, 0); + e.set_log_pos(this); + if (e.write(file)) + goto err; + } +#if MYSQL_VERSION_ID < 40100 + if (thd->variables.convert_set) + { + Query_log_event e(thd, "SET CHARACTER SET DEFAULT", 25, 0); + e.set_log_pos(this); + if (e.write(file)) + goto err; + } +#endif } /* diff --git a/sql/log_event.cc b/sql/log_event.cc index 3e1544adf14..5526795c9d1 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -1932,8 +1932,6 @@ end: thd->query= 0; // just to be sure thd->query_length= 0; VOID(pthread_mutex_unlock(&LOCK_thread_count)); - // assume no convert for next query unless set explictly - thd->variables.convert_set = 0; close_thread_tables(thd); free_root(&thd->mem_root,MYF(MY_KEEP_PREALLOC)); return (thd->query_error ? thd->query_error : Log_event::exec_event(rli)); From 877503f5af17808a36c44a84566f6fe9ab55bce3 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 30 Aug 2004 00:50:39 +0200 Subject: [PATCH 09/16] log.cc: Fixed missing * in comment in setup_windows_event_source sql/log.cc: Fixed missing * in comment in setup_windows_event_source --- sql/log.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/log.cc b/sql/log.cc index aa45e2f77ee..55ef2e72960 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -63,7 +63,7 @@ void setup_windows_event_source() /* Name of the PE module that contains the message resource */ GetModuleFileName(NULL, szPath, MAX_PATH); - / Register EventMessageFile */ + /* Register EventMessageFile */ dwError = RegSetValueEx(hRegKey, "EventMessageFile", 0, REG_EXPAND_SZ, (PBYTE) szPath, strlen(szPath)+1); From 0c549e366cf2a45d9c1bab88b450319c3ae204e3 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 30 Aug 2004 09:20:52 +0200 Subject: [PATCH 10/16] - removed mysql-test/t/flush_block_commit-master.opt as it collided with the sleep value we use for the test suite run during the release builds BitKeeper/deleted/.del-flush_block_commit-master.opt~3bcd295d5bf68796: Delete: mysql-test/t/flush_block_commit-master.opt --- mysql-test/t/flush_block_commit-master.opt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 mysql-test/t/flush_block_commit-master.opt diff --git a/mysql-test/t/flush_block_commit-master.opt b/mysql-test/t/flush_block_commit-master.opt deleted file mode 100644 index d1f6d58e9f7..00000000000 --- a/mysql-test/t/flush_block_commit-master.opt +++ /dev/null @@ -1 +0,0 @@ ---innodb_lock_wait_timeout=5 From 4e2f80b4572f808017ef1dab276841b2a6384613 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 30 Aug 2004 10:13:13 +0200 Subject: [PATCH 11/16] typo fixed --- sql/field.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/field.cc b/sql/field.cc index 71ec7545efc..394d53238c2 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2341,7 +2341,7 @@ String *Field_double::val_str(String *val_buffer, else { #ifdef HAVE_FCONVERT - char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE], + char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE]; char *pos= buff; int decpt,sign,tmp_dec=dec; From fb724e532c60cdcb7a2260d347444f421dda90a5 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 30 Aug 2004 17:41:41 +0200 Subject: [PATCH 12/16] If the system has 64 bit "long", then "long long" does not add new functionality. The existing code takes advantage of this when "typedef"ing 'longlong' in 'my_global.h'. This holds for Alpha CPUs. If the compiler then has prototypes for C99 functions 'strtoll()' and 'strtoull()' but no implementation, the existing code in 'strtoull.c' collides with that prototype. These collisions are avoided now. (backport from 4.1) include/m_string.h: Extend the "fake" approach from 'strtoull()' onto 'strtoll()' (backport from 4.1). strings/strto.c: Ensure that calling file has included necessary headers, as these are needed at the upper level already (backport from 4.1). strings/strtol.c: Cleanup/alignment with the "long long" functions. strings/strtoll.c: When "long" is 64 bit already, system function 'strtol()' can be used. Header files 'my_global.h' and 'm_string.h' will manage that, if they are included early enough (backport from 4.1). strings/strtoul.c: Cleanup/alignment with the "long long" functions. strings/strtoull.c: When "long" is 64 bit already, system function 'strtoul()' can be used. Header files 'my_global.h' and 'm_string.h' will manage that, if they are included early enough (backport from 4.1). --- include/m_string.h | 3 +++ strings/strto.c | 8 ++++++-- strings/strtol.c | 9 ++++++++- strings/strtoll.c | 13 +++++++++++-- strings/strtoul.c | 9 ++++++++- strings/strtoull.c | 13 ++++++++++++- 6 files changed, 48 insertions(+), 7 deletions(-) diff --git a/include/m_string.h b/include/m_string.h index eb2758ec506..419e70d93bf 100644 --- a/include/m_string.h +++ b/include/m_string.h @@ -238,6 +238,9 @@ extern char *str2int(const char *src,int radix,long lower,long upper, #ifndef HAVE_STRTOULL #define HAVE_STRTOULL #endif +#ifndef HAVE_STRTOLL +#define HAVE_STRTOLL +#endif #else #ifdef HAVE_LONG_LONG extern char *longlong2str(longlong val,char *dst,int radix); diff --git a/strings/strto.c b/strings/strto.c index c98b19a7e67..9ad4502faaf 100644 --- a/strings/strto.c +++ b/strings/strto.c @@ -35,8 +35,12 @@ it can be compiled with the UNSIGNED and/or LONGLONG flag set */ -#include -#include "m_string.h" + +#if !defined(_global_h) || !defined(_m_string_h) +# error Calling file must include 'my_global.h' and 'm_string.h' + /* see 'strtoll.c' and 'strtoull.c' for the reasons */ +#endif + #include "m_ctype.h" #include "my_sys.h" /* defines errno */ #include diff --git a/strings/strtol.c b/strings/strtol.c index 10d7f8f9da6..ed4ca86c846 100644 --- a/strings/strtol.c +++ b/strings/strtol.c @@ -14,9 +14,16 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* This defines strtol() if neaded */ +/* This implements strtol() if needed */ +/* + These includes are mandatory because they check for type sizes and + functions, especially they handle tricks for Tru64 where 'long' is + 64 bit already and our 'longlong' is just a 'long'. + */ #include +#include + #if !defined(MSDOS) && !defined(HAVE_STRTOL) && !defined(__WIN__) #include "strto.c" #endif diff --git a/strings/strtoll.c b/strings/strtoll.c index b0b4ef328fc..45352ffd360 100644 --- a/strings/strtoll.c +++ b/strings/strtoll.c @@ -14,11 +14,20 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* This is defines strtoll() if neaded */ +/* This implements strtoll() if needed */ -#define strtoll glob_strtoll /* Fix for True64 */ +/* + These includes are mandatory because they check for type sizes and + functions, especially they handle tricks for Tru64 where 'long' is + 64 bit already and our 'longlong' is just a 'long'. + This solves a problem on Tru64 where the C99 compiler has a prototype + for 'strtoll()' but no implementation, see "6.1 New C99 library functions" + in file '/usr/share/doclib/cc.dtk/release_notes.txt'. + */ #include +#include + #if !defined(HAVE_STRTOLL) && defined(HAVE_LONG_LONG) #define USE_LONGLONG #include "strto.c" diff --git a/strings/strtoul.c b/strings/strtoul.c index 00e1f820942..77bc267d218 100644 --- a/strings/strtoul.c +++ b/strings/strtoul.c @@ -14,9 +14,16 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* This is defines strtoul() if neaded */ +/* This implements strtoul() if needed */ +/* + These includes are mandatory because they check for type sizes and + functions, especially they handle tricks for Tru64 where 'long' is + 64 bit already and our 'longlong' is just a 'long'. + */ #include +#include + #if !defined(MSDOS) && !defined(HAVE_STRTOUL) #define USE_UNSIGNED #include "strto.c" diff --git a/strings/strtoull.c b/strings/strtoull.c index f4f3ce19bf7..0c2788bc188 100644 --- a/strings/strtoull.c +++ b/strings/strtoull.c @@ -14,9 +14,20 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* This is defines strtoull() */ +/* This implements strtoull() if needed */ + +/* + These includes are mandatory because they check for type sizes and + functions, especially they handle tricks for Tru64 where 'long' is + 64 bit already and our 'longlong' is just a 'long'. + This solves a problem on Tru64 where the C99 compiler has a prototype + for 'strtoull()' but no implementation, see "6.1 New C99 library functions" + in file '/usr/share/doclib/cc.dtk/release_notes.txt'. + */ #include +#include + #if !defined(HAVE_STRTOULL) && defined(HAVE_LONG_LONG) #define USE_UNSIGNED #define USE_LONGLONG From 07f5a44bc0a525c99394536a436cc85fb00fc337 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 31 Aug 2004 14:35:04 +0300 Subject: [PATCH 13/16] Review of new pushed code (Indentation fixes and simple optimizations) Use 'mysqltest' as test database instead of test_$1 or test1,test2 to not accidently delete an important database Safety fix for mailformed MERGE files Build-tools/mysql-copyright: Print correct file name in case of errors Fixed indentation include/config-win.h: Removed unnecessary #ifdef myisammrg/myrg_open.c: Don't give a core if merge file contains INSERT_METHOD first (not legal but better safe than sorry) Don't set struct variables to zero that are already zero Indentation fixes mysql-test/r/create.result: Use 'mysqltest' as test database mysql-test/r/ndb_basic.result: Use 'mysqltest' as test database mysql-test/r/ndb_blob.result: Use 'mysqltest' as test database mysql-test/r/ndb_transaction.result: Use 'mysqltest' as test database mysql-test/r/ps_1general.result: Use 'mysqltest' as test database mysql-test/r/rpl_charset.result: Use 'mysqltest' as test database mysql-test/r/rpl_delete_all.result: Use 'mysqltest' as test database mysql-test/r/show_check.result: Use 'mysqltest' as test database mysql-test/t/create.test: Use 'mysqltest' as test database mysql-test/t/ndb_basic.test: Use 'mysqltest' as test database mysql-test/t/ndb_blob.test: Use 'mysqltest' as test database mysql-test/t/ndb_transaction.test: Use 'mysqltest' as test database mysql-test/t/ps_1general.test: Use 'mysqltest' as test database mysql-test/t/rpl_charset.test: Use 'mysqltest' as test database mysql-test/t/rpl_delete_all.test: Use 'mysqltest' as test database mysql-test/t/show_check.test: Use 'mysqltest' as test database sql/field.h: Mark functions that should be deleted as soon as we have a new prototype for store(longlong) sql/lock.cc: Indentation fix sql/sql_base.cc: Better comment. Break find_item_in_list in case of perfect match sql/sql_prepare.cc: Simple optimization sql/sql_select.cc: Portability fix --- Build-tools/mysql-copyright | 26 ++--- include/config-win.h | 2 - myisammrg/myrg_open.c | 28 ++--- mysql-test/r/create.result | 38 +++---- mysql-test/r/ndb_basic.result | 8 +- mysql-test/r/ndb_blob.result | 8 +- mysql-test/r/ndb_transaction.result | 8 +- mysql-test/r/ps_1general.result | 8 +- mysql-test/r/rpl_charset.result | 160 ++++++++++++++-------------- mysql-test/r/rpl_delete_all.result | 10 +- mysql-test/r/show_check.result | 55 +++++----- mysql-test/t/create.test | 34 +++--- mysql-test/t/ndb_basic.test | 10 +- mysql-test/t/ndb_blob.test | 10 +- mysql-test/t/ndb_transaction.test | 9 +- mysql-test/t/ps_1general.test | 8 +- mysql-test/t/rpl_charset.test | 36 +++---- mysql-test/t/rpl_delete_all.test | 6 +- mysql-test/t/show_check.test | 37 +++---- sql/field.h | 4 +- sql/lock.cc | 3 +- sql/sql_base.cc | 11 +- sql/sql_prepare.cc | 7 +- sql/sql_select.cc | 4 +- 24 files changed, 267 insertions(+), 263 deletions(-) diff --git a/Build-tools/mysql-copyright b/Build-tools/mysql-copyright index 77a90fbf4e4..0c091890e72 100755 --- a/Build-tools/mysql-copyright +++ b/Build-tools/mysql-copyright @@ -150,20 +150,20 @@ sub main #### sub fix_mysql_version { - chdir("$destdir"); - my $header_file= (-f 'include/mysql_version.h.in')? 'include/mysql_version.h.in' : 'include/mysql_version.h'; - - open(MYSQL_VERSION,"<$header_file") or die "Unable to open include/mysql_version.h for read: $!\n"; - undef $/; - my $mysql_version= ; - close(MYSQL_VERSION); + chdir("$destdir"); + my $header_file= (-f 'include/mysql_version.h.in')? 'include/mysql_version.h.in' : 'include/mysql_version.h'; - $mysql_version=~ s/\#define LICENSE[\s\t]+GPL/#define LICENSE Commercial/; - - open(MYSQL_VERSION,">$header_file") or die "Unable to open include/mysql_version.h for write: $!\n"; - print MYSQL_VERSION $mysql_version; - close(MYSQL_VERSION); - chdir("$cwd"); + open(MYSQL_VERSION,"<$header_file") or die "Unable to open $header_file for read: $!\n"; + undef $/; + my $mysql_version= ; + close(MYSQL_VERSION); + + $mysql_version=~ s/\#define LICENSE[\s\t]+GPL/#define LICENSE Commercial/; + + open(MYSQL_VERSION,">$header_file") or die "Unable to open $header_file for write: $!\n"; + print MYSQL_VERSION $mysql_version; + close(MYSQL_VERSION); + chdir("$cwd"); } #### diff --git a/include/config-win.h b/include/config-win.h index 96a155633eb..0ba8dd2cf43 100644 --- a/include/config-win.h +++ b/include/config-win.h @@ -151,9 +151,7 @@ typedef uint rf_SetTimer; #endif /* ERROR is defined in wingdi.h */ -#ifdef ERROR #undef ERROR -#endif /* We need to close files to break connections on shutdown */ #ifndef SIGNAL_WITH_VIO_CLOSE diff --git a/myisammrg/myrg_open.c b/myisammrg/myrg_open.c index 4c6ffb98ad5..a59ccb7d966 100644 --- a/myisammrg/myrg_open.c +++ b/myisammrg/myrg_open.c @@ -34,14 +34,17 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) { int save_errno,errpos=0; uint files=0,i,dir_length,length,key_parts; - ulonglong file_offset; + ulonglong file_offset=0; char name_buff[FN_REFLEN*2],buff[FN_REFLEN],*end; MYRG_INFO *m_info=0; File fd; IO_CACHE file; MI_INFO *isam=0; + uint found_merge_insert_method= 0; DBUG_ENTER("myrg_open"); + LINT_INIT(key_parts); + bzero((char*) &file,sizeof(file)); if ((fd=my_open(fn_format(name_buff,name,"",MYRG_NAME_EXT,4), O_RDONLY | O_SHARE,MYF(0))) < 0) @@ -69,10 +72,10 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) continue; /* Skip empty lines */ if (buff[0] == '#') { - if( !strncmp(buff+1,"INSERT_METHOD=",14)) + if (!strncmp(buff+1,"INSERT_METHOD=",14)) { /* Lookup insert method */ int tmp=find_type(buff+15,&merge_insert_method,2); - m_info->merge_insert_method = (uint) (tmp >= 0 ? tmp : 0); + found_merge_insert_method = (uint) (tmp >= 0 ? tmp : 0); } continue; /* Skip comments */ } @@ -84,8 +87,8 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) VOID(cleanup_dirname(buff,name_buff)); } if (!(isam=mi_open(buff,mode,(handle_locking?HA_OPEN_WAIT_IF_LOCKED:0)))) - goto err; - if (!m_info) + goto err; + if (!m_info) /* First file */ { key_parts=isam->s->base.key_parts; if (!(m_info= (MYRG_INFO*) my_malloc(sizeof(MYRG_INFO) + @@ -97,15 +100,10 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) { m_info->open_tables=(MYRG_TABLE *) (m_info+1); m_info->rec_per_key_part=(ulong *) (m_info->open_tables+files); + m_info->tables= files; + files= 0; } - else - { - m_info->open_tables=0; - m_info->rec_per_key_part=0; - } - m_info->tables=files; m_info->reclength=isam->s->base.reclength; - file_offset=files=0; errpos=3; } m_info->open_tables[files].table= isam; @@ -122,14 +120,16 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) m_info->del+= isam->state->del; m_info->data_file_length+= isam->state->data_file_length; for (i=0; i < key_parts; i++) - m_info->rec_per_key_part[i]+=isam->s->state.rec_per_key_part[i] / m_info->tables; + m_info->rec_per_key_part[i]+= (isam->s->state.rec_per_key_part[i] / + m_info->tables); } if (!m_info && !(m_info= (MYRG_INFO*) my_malloc(sizeof(MYRG_INFO), - MYF(MY_WME|MY_ZEROFILL)))) + MYF(MY_WME | MY_ZEROFILL)))) goto err; /* Don't mark table readonly, for ALTER TABLE ... UNION=(...) to work */ m_info->options&= ~(HA_OPTION_COMPRESS_RECORD | HA_OPTION_READ_ONLY_DATA); + m_info->merge_insert_method= found_merge_insert_method; if (sizeof(my_off_t) == 4 && file_offset > (ulonglong) (ulong) ~0L) { diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 699485ff3f7..92c825f547d 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -1,5 +1,5 @@ drop table if exists t1,t2,t3; -drop database if exists test_$1; +drop database if exists mysqltest; create table t1 (b char(0)); insert into t1 values (""),(null); select * from t1; @@ -58,18 +58,18 @@ select 1ea10.1a20,1e+ 1e+10 from 1ea10; drop table 1ea10; create table t1 (t1.index int); drop table t1; -drop database if exists test_$1; +drop database if exists mysqltest; Warnings: -Note 1008 Can't drop database 'test_$1'; database doesn't exist -create database test_$1; -create table test_$1.$test1 (a$1 int, $b int, c$ int); -insert into test_$1.$test1 values (1,2,3); -select a$1, $b, c$ from test_$1.$test1; +Note 1008 Can't drop database 'mysqltest'; database doesn't exist +create database mysqltest; +create table mysqltest.$test1 (a$1 int, $b int, c$ int); +insert into mysqltest.$test1 values (1,2,3); +select a$1, $b, c$ from mysqltest.$test1; a$1 $b c$ 1 2 3 -create table test_$1.test2$ (a int); -drop table test_$1.test2$; -drop database test_$1; +create table mysqltest.test2$ (a int); +drop table mysqltest.test2$; +drop database mysqltest; create table `` (a int); ERROR 42000: Incorrect table name '' drop table if exists ``; @@ -320,9 +320,9 @@ t3 CREATE TABLE `t3` ( select * from t3; id name drop table t2, t3; -create database test_$1; -create table test_$1.t3 like t1; -create temporary table t3 like test_$1.t3; +create database mysqltest; +create table mysqltest.t3 like t1; +create temporary table t3 like mysqltest.t3; show create table t3; Table Create Table t3 CREATE TEMPORARY TABLE `t3` ( @@ -339,7 +339,7 @@ t2 CREATE TABLE `t2` ( select * from t2; id name create table t3 like t1; -create table t3 like test_$1.t3; +create table t3 like mysqltest.t3; ERROR 42S01: Table 't3' already exists create table non_existing_database.t1 like t1; Got one of the listed errors @@ -351,7 +351,7 @@ create table t3 like `a/a`; ERROR 42000: Incorrect table name 'a/a' drop table t1, t2, t3; drop table t3; -drop database test_$1; +drop database mysqltest; SET SESSION storage_engine="heap"; SELECT @@storage_engine; @@storage_engine @@ -488,12 +488,12 @@ Note 1291 Column 'cset' has duplicated value 'b' in SET Note 1291 Column 'cset' has duplicated value 'B' in SET Note 1291 Column 'cset' has duplicated value 'd' in SET drop table t1, t2, t3; -create database test_$1; -use test_$1; +create database mysqltest; +use mysqltest; select database(); database() -test_$1 -drop database test_$1; +mysqltest +drop database mysqltest; select database(); database() NULL diff --git a/mysql-test/r/ndb_basic.result b/mysql-test/r/ndb_basic.result index e42485a1548..f5f5fe5ba18 100644 --- a/mysql-test/r/ndb_basic.result +++ b/mysql-test/r/ndb_basic.result @@ -1,5 +1,5 @@ DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7; -drop database if exists test2; +drop database if exists mysqltest; CREATE TABLE t1 ( pk1 INT NOT NULL PRIMARY KEY, attr1 INT NOT NULL, @@ -1362,8 +1362,8 @@ attr2 INT, attr3 VARCHAR(10) ) ENGINE=ndbcluster; INSERT INTO t1 VALUES (9410,9412, NULL, '9412'), (9411,9413, 17, '9413'); -create database test2; -use test2; +create database mysqltest; +use mysqltest; CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, b int unsigned not null, @@ -1381,4 +1381,4 @@ select b,test.t1.attr1 from test.t1, t2 where test.t1.pk1 < a; b attr1 9413 9412 drop table test.t1, t2; -drop database test2; +drop database mysqltest; diff --git a/mysql-test/r/ndb_blob.result b/mysql-test/r/ndb_blob.result index 0e99c939ea7..c590815b233 100644 --- a/mysql-test/r/ndb_blob.result +++ b/mysql-test/r/ndb_blob.result @@ -1,5 +1,5 @@ drop table if exists t1; -drop database if exists test2; +drop database if exists mysqltest; set autocommit=0; create table t1 ( a int not null primary key, @@ -256,8 +256,8 @@ a b c d 7 7xb7 777 7xdd7 8 8xb8 888 8xdd8 9 9xb9 999 9xdd9 -create database test2; -use test2; +create database mysqltest; +use mysqltest; CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, b int unsigned not null, @@ -320,3 +320,5 @@ rollback; select count(*) from t1; count(*) 0 +drop table t1; +drop database mysqltest; diff --git a/mysql-test/r/ndb_transaction.result b/mysql-test/r/ndb_transaction.result index 18cbf3e731b..691b91b1d36 100644 --- a/mysql-test/r/ndb_transaction.result +++ b/mysql-test/r/ndb_transaction.result @@ -1,5 +1,5 @@ DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7; -drop database if exists test2; +drop database if exists mysqltest; CREATE TABLE t1 ( pk1 INT NOT NULL PRIMARY KEY, attr1 INT NOT NULL @@ -211,8 +211,8 @@ CREATE TABLE t1 ( pk1 INT NOT NULL PRIMARY KEY, attr1 INT NOT NULL ) ENGINE=ndbcluster; -create database test2; -use test2; +create database mysqltest; +use mysqltest; CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, b int unsigned not null, @@ -254,4 +254,4 @@ select count(*) from t2; count(*) 0 drop table test.t1, t2; -drop database test2; +drop database mysqltest; diff --git a/mysql-test/r/ps_1general.result b/mysql-test/r/ps_1general.result index 9ef1202a9a1..e9a5f705fa7 100644 --- a/mysql-test/r/ps_1general.result +++ b/mysql-test/r/ps_1general.result @@ -334,12 +334,12 @@ prepare stmt1 from ' deallocate prepare never_prepared ' ; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'never_prepared' at line 1 prepare stmt4 from ' use test ' ; ERROR HY000: This command is not supported in the prepared statement protocol yet -prepare stmt3 from ' create database drop_me '; +prepare stmt3 from ' create database mysqltest '; ERROR HY000: This command is not supported in the prepared statement protocol yet -create database drop_me ; -prepare stmt3 from ' drop database drop_me '; +create database mysqltest ; +prepare stmt3 from ' drop database mysqltest '; ERROR HY000: This command is not supported in the prepared statement protocol yet -drop database drop_me ; +drop database mysqltest ; prepare stmt3 from ' grant all on test.t1 to drop_user@localhost identified by ''looser'' '; ERROR HY000: This command is not supported in the prepared statement protocol yet diff --git a/mysql-test/r/rpl_charset.result b/mysql-test/r/rpl_charset.result index d5f8ac4f293..a60c9269625 100644 --- a/mysql-test/r/rpl_charset.result +++ b/mysql-test/r/rpl_charset.result @@ -4,41 +4,41 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -drop database if exists test2; -drop database if exists test3; -create database test2 character set latin2; +drop database if exists mysqltest2; +drop database if exists mysqltest3; +create database mysqltest2 character set latin2; set @@character_set_server=latin5; -create database test3; +create database mysqltest3; --- --master-- -show create database test2; +show create database mysqltest2; Database Create Database -test2 CREATE DATABASE `test2` /*!40100 DEFAULT CHARACTER SET latin2 */ -show create database test3; +mysqltest2 CREATE DATABASE `mysqltest2` /*!40100 DEFAULT CHARACTER SET latin2 */ +show create database mysqltest3; Database Create Database -test3 CREATE DATABASE `test3` /*!40100 DEFAULT CHARACTER SET latin5 */ +mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET latin5 */ --- --slave-- -show create database test2; +show create database mysqltest2; Database Create Database -test2 CREATE DATABASE `test2` /*!40100 DEFAULT CHARACTER SET latin2 */ -show create database test3; +mysqltest2 CREATE DATABASE `mysqltest2` /*!40100 DEFAULT CHARACTER SET latin2 */ +show create database mysqltest3; Database Create Database -test3 CREATE DATABASE `test3` /*!40100 DEFAULT CHARACTER SET latin5 */ +mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET latin5 */ set @@collation_server=armscii8_bin; -drop database test3; -create database test3; +drop database mysqltest3; +create database mysqltest3; --- --master-- -show create database test3; +show create database mysqltest3; Database Create Database -test3 CREATE DATABASE `test3` /*!40100 DEFAULT CHARACTER SET armscii8 COLLATE armscii8_bin */ +mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET armscii8 COLLATE armscii8_bin */ --- --slave-- -show create database test3; +show create database mysqltest3; Database Create Database -test3 CREATE DATABASE `test3` /*!40100 DEFAULT CHARACTER SET armscii8 COLLATE armscii8_bin */ -use test2; +mysqltest3 CREATE DATABASE `mysqltest3` /*!40100 DEFAULT CHARACTER SET armscii8 COLLATE armscii8_bin */ +use mysqltest2; create table t1 (a int auto_increment primary key, b varchar(100)); set character_set_client=cp850, collation_connection=latin2_croatian_ci; insert into t1 (b) values(@@character_set_server); @@ -57,7 +57,7 @@ a b 5 latin2_croatian_ci --- --slave-- -select * from test2.t1 order by a; +select * from mysqltest2.t1 order by a; a b 1 armscii8 2 armscii8_bin @@ -81,7 +81,7 @@ a b 4 Müller --- --slave-- -select * from test2.t1 order by a; +select * from mysqltest2.t1 order by a; a b 1 latin1_german1_ci 2 Muffler @@ -98,69 +98,69 @@ a b 1 cp850_general_ci --- --slave-- -select * from test2.t1 order by a; +select * from mysqltest2.t1 order by a; a b 1 cp850_general_ci -drop database test2; -drop database test3; +drop database mysqltest2; +drop database mysqltest3; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.000001 79 Query 1 79 use `test`; drop database if exists test2 -master-bin.000001 143 Query 1 143 use `test`; drop database if exists test3 -master-bin.000001 207 Query 1 207 use `test`; create database test2 character set latin2 -master-bin.000001 284 Query 1 284 use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=30 -master-bin.000001 418 Query 1 418 use `test`; create database test3 -master-bin.000001 474 Query 1 474 use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64 -master-bin.000001 608 Query 1 608 use `test`; drop database test3 -master-bin.000001 662 Query 1 662 use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64 -master-bin.000001 796 Query 1 796 use `test`; create database test3 -master-bin.000001 852 Query 1 852 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 987 Query 1 987 use `test2`; create table t1 (a int auto_increment primary key, b varchar(100)) -master-bin.000001 1089 Query 1 1089 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 1225 Intvar 1 1225 INSERT_ID=1 -master-bin.000001 1253 Query 1 1253 use `test2`; insert into t1 (b) values(@@character_set_server) -master-bin.000001 1338 Query 1 1338 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 1474 Intvar 1 1474 INSERT_ID=2 -master-bin.000001 1502 Query 1 1502 use `test2`; insert into t1 (b) values(@@collation_server) -master-bin.000001 1583 Query 1 1583 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 1719 Intvar 1 1719 INSERT_ID=3 -master-bin.000001 1747 Query 1 1747 use `test2`; insert into t1 (b) values(@@character_set_client) -master-bin.000001 1832 Query 1 1832 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 1968 Intvar 1 1968 INSERT_ID=4 -master-bin.000001 1996 Query 1 1996 use `test2`; insert into t1 (b) values(@@character_set_connection) -master-bin.000001 2085 Query 1 2085 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 2221 Intvar 1 2221 INSERT_ID=5 -master-bin.000001 2249 Query 1 2249 use `test2`; insert into t1 (b) values(@@collation_connection) -master-bin.000001 2334 Query 1 2334 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 2469 Query 1 2469 use `test2`; truncate table t1 -master-bin.000001 2522 Query 1 2522 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 2657 Intvar 1 2657 INSERT_ID=1 -master-bin.000001 2685 Query 1 2685 use `test2`; insert into t1 (b) values(@@collation_connection) -master-bin.000001 2770 Query 1 2770 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 2905 Intvar 1 2905 INSERT_ID=2 -master-bin.000001 2933 Query 1 2933 use `test2`; insert into t1 (b) values(LEAST("Müller","Muffler")) -master-bin.000001 3021 Query 1 3021 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 3157 Intvar 1 3157 INSERT_ID=3 -master-bin.000001 3185 Query 1 3185 use `test2`; insert into t1 (b) values(@@collation_connection) -master-bin.000001 3270 Query 1 3270 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 3406 Intvar 1 3406 INSERT_ID=4 -master-bin.000001 3434 Query 1 3434 use `test2`; insert into t1 (b) values(LEAST("Müller","Muffler")) -master-bin.000001 3522 Query 1 3522 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 3658 Intvar 1 3658 INSERT_ID=74 -master-bin.000001 3686 Create_file 1 3686 db=test2;table=t1;file_id=1;block_len=581 -master-bin.000001 4354 Query 1 4354 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 4490 Intvar 1 4490 INSERT_ID=5 -master-bin.000001 4518 Exec_load 1 4518 ;file_id=1 -master-bin.000001 4541 Query 1 4541 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 4677 Query 1 4677 use `test2`; truncate table t1 -master-bin.000001 4730 Query 1 4730 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 4866 Intvar 1 4866 INSERT_ID=1 -master-bin.000001 4894 User var 1 4894 @`a`=_cp850 0x4DFC6C6C6572 COLLATE cp850_general_ci -master-bin.000001 4934 Query 1 4934 use `test2`; insert into t1 (b) values(collation(@a)) -master-bin.000001 5010 Query 1 5010 use `test2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 5146 Query 1 5146 use `test2`; drop database test2 -master-bin.000001 5201 Query 1 5201 SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 -master-bin.000001 5332 Query 1 5332 drop database test3 +master-bin.000001 79 Query 1 79 use `test`; drop database if exists mysqltest2 +master-bin.000001 148 Query 1 148 use `test`; drop database if exists mysqltest3 +master-bin.000001 217 Query 1 217 use `test`; create database mysqltest2 character set latin2 +master-bin.000001 299 Query 1 299 use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=30 +master-bin.000001 433 Query 1 433 use `test`; create database mysqltest3 +master-bin.000001 494 Query 1 494 use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64 +master-bin.000001 628 Query 1 628 use `test`; drop database mysqltest3 +master-bin.000001 687 Query 1 687 use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64 +master-bin.000001 821 Query 1 821 use `test`; create database mysqltest3 +master-bin.000001 882 Query 1 882 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 1022 Query 1 1022 use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100)) +master-bin.000001 1129 Query 1 1129 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 1270 Intvar 1 1270 INSERT_ID=1 +master-bin.000001 1298 Query 1 1298 use `mysqltest2`; insert into t1 (b) values(@@character_set_server) +master-bin.000001 1388 Query 1 1388 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 1529 Intvar 1 1529 INSERT_ID=2 +master-bin.000001 1557 Query 1 1557 use `mysqltest2`; insert into t1 (b) values(@@collation_server) +master-bin.000001 1643 Query 1 1643 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 1784 Intvar 1 1784 INSERT_ID=3 +master-bin.000001 1812 Query 1 1812 use `mysqltest2`; insert into t1 (b) values(@@character_set_client) +master-bin.000001 1902 Query 1 1902 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 2043 Intvar 1 2043 INSERT_ID=4 +master-bin.000001 2071 Query 1 2071 use `mysqltest2`; insert into t1 (b) values(@@character_set_connection) +master-bin.000001 2165 Query 1 2165 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 2306 Intvar 1 2306 INSERT_ID=5 +master-bin.000001 2334 Query 1 2334 use `mysqltest2`; insert into t1 (b) values(@@collation_connection) +master-bin.000001 2424 Query 1 2424 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 2564 Query 1 2564 use `mysqltest2`; truncate table t1 +master-bin.000001 2622 Query 1 2622 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 2762 Intvar 1 2762 INSERT_ID=1 +master-bin.000001 2790 Query 1 2790 use `mysqltest2`; insert into t1 (b) values(@@collation_connection) +master-bin.000001 2880 Query 1 2880 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 3020 Intvar 1 3020 INSERT_ID=2 +master-bin.000001 3048 Query 1 3048 use `mysqltest2`; insert into t1 (b) values(LEAST("Müller","Muffler")) +master-bin.000001 3141 Query 1 3141 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 3282 Intvar 1 3282 INSERT_ID=3 +master-bin.000001 3310 Query 1 3310 use `mysqltest2`; insert into t1 (b) values(@@collation_connection) +master-bin.000001 3400 Query 1 3400 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 3541 Intvar 1 3541 INSERT_ID=4 +master-bin.000001 3569 Query 1 3569 use `mysqltest2`; insert into t1 (b) values(LEAST("Müller","Muffler")) +master-bin.000001 3662 Query 1 3662 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 3803 Intvar 1 3803 INSERT_ID=74 +master-bin.000001 3831 Create_file 1 3831 db=mysqltest2;table=t1;file_id=1;block_len=581 +master-bin.000001 4504 Query 1 4504 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 4645 Intvar 1 4645 INSERT_ID=5 +master-bin.000001 4673 Exec_load 1 4673 ;file_id=1 +master-bin.000001 4696 Query 1 4696 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 4837 Query 1 4837 use `mysqltest2`; truncate table t1 +master-bin.000001 4895 Query 1 4895 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 5036 Intvar 1 5036 INSERT_ID=1 +master-bin.000001 5064 User var 1 5064 @`a`=_cp850 0x4DFC6C6C6572 COLLATE cp850_general_ci +master-bin.000001 5104 Query 1 5104 use `mysqltest2`; insert into t1 (b) values(collation(@a)) +master-bin.000001 5185 Query 1 5185 use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 5326 Query 1 5326 use `mysqltest2`; drop database mysqltest2 +master-bin.000001 5391 Query 1 5391 SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64 +master-bin.000001 5522 Query 1 5522 drop database mysqltest3 set global character_set_server=latin2; ERROR HY000: Binary logging and replication forbid changing the global server character set or collation set global character_set_server=latin2; diff --git a/mysql-test/r/rpl_delete_all.result b/mysql-test/r/rpl_delete_all.result index 97a535490dd..5ed221823e8 100644 --- a/mysql-test/r/rpl_delete_all.result +++ b/mysql-test/r/rpl_delete_all.result @@ -4,12 +4,12 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -create database test1; -drop database if exists test1; +create database mysqltest; +drop database if exists mysqltest; Warnings: -Note 1008 Can't drop database 'test1'; database doesn't exist -show tables from test1; -ERROR HY000: Can't read dir of './test1/' (Errcode: X) +Note 1008 Can't drop database 'mysqltest'; database doesn't exist +show tables from mysqltest; +ERROR HY000: Can't read dir of './mysqltest/' (Errcode: X) create table t1 (a int); drop table if exists t1; Warnings: diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index b78748b7726..8b52e6efedc 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -1,4 +1,5 @@ drop table if exists t1,t2; +drop database if exists mysqltest; create table t1 (a int not null primary key, b int not null,c int not null, key(b,c)); insert into t1 values (1,2,2),(2,2,3),(3,2,4),(4,2,4); check table t1 fast; @@ -362,39 +363,39 @@ t1 HEAP 9 Fixed 0 5 # # # 5 NULL NULL NULL NULL latin1_swedish_ci NULL t2 HEAP 9 Fixed 0 5 # # # 5 NULL NULL NULL NULL latin1_swedish_ci NULL t3 HEAP 9 Fixed 0 9 # # # 9 NULL NULL NULL NULL latin1_swedish_ci NULL drop table t1, t2, t3; -create database test_$1; -show create database test_$1; +create database mysqltest; +show create database mysqltest; Database Create Database -test_$1 CREATE DATABASE `test_$1` /*!40100 DEFAULT CHARACTER SET latin1 */ -create table test_$1.t1(a int); -insert into test_$1.t1 values(1); -grant select on `test_$1`.* to mysqltest_1@localhost; -grant usage on `test_$1`.* to mysqltest_2@localhost; -grant drop on `test_$1`.* to mysqltest_3@localhost; +mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 */ +create table mysqltest.t1(a int); +insert into mysqltest.t1 values(1); +grant select on `mysqltest`.* to mysqltest_1@localhost; +grant usage on `mysqltest`.* to mysqltest_2@localhost; +grant drop on `mysqltest`.* to mysqltest_3@localhost; select * from t1; a 1 -show create database test_$1; +show create database mysqltest; Database Create Database -test_$1 CREATE DATABASE `test_$1` /*!40100 DEFAULT CHARACTER SET latin1 */ +mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 */ drop table t1; -ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'test_$1' -drop database test_$1; -ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'test_$1' -select * from test_$1.t1; -ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'test_$1' -show create database test_$1; -ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'test_$1' -drop table test_$1.t1; -ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'test_$1' -drop database test_$1; -ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'test_$1' -select * from test_$1.t1; -ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'test_$1' -show create database test_$1; -ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'test_$1' -drop table test_$1.t1; -drop database test_$1; +ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest' +drop database mysqltest; +ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest' +select * from mysqltest.t1; +ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest' +show create database mysqltest; +ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest' +drop table mysqltest.t1; +ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest' +drop database mysqltest; +ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest' +select * from mysqltest.t1; +ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysqltest' +show create database mysqltest; +ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysqltest' +drop table mysqltest.t1; +drop database mysqltest; set names binary; delete from mysql.user where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 30441fb9aae..26c527ca7cb 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -4,7 +4,7 @@ --disable_warnings drop table if exists t1,t2,t3; -drop database if exists test_$1; +drop database if exists mysqltest; --enable_warnings create table t1 (b char(0)); @@ -69,14 +69,14 @@ drop table 1ea10; create table t1 (t1.index int); drop table t1; # Test that we get warning for this -drop database if exists test_$1; -create database test_$1; -create table test_$1.$test1 (a$1 int, $b int, c$ int); -insert into test_$1.$test1 values (1,2,3); -select a$1, $b, c$ from test_$1.$test1; -create table test_$1.test2$ (a int); -drop table test_$1.test2$; -drop database test_$1; +drop database if exists mysqltest; +create database mysqltest; +create table mysqltest.$test1 (a$1 int, $b int, c$ int); +insert into mysqltest.$test1 values (1,2,3); +select a$1, $b, c$ from mysqltest.$test1; +create table mysqltest.test2$ (a int); +drop table mysqltest.test2$; +drop database mysqltest; --error 1103 create table `` (a int); @@ -281,16 +281,16 @@ drop table t3; show create table t3; select * from t3; drop table t2, t3; -create database test_$1; -create table test_$1.t3 like t1; -create temporary table t3 like test_$1.t3; +create database mysqltest; +create table mysqltest.t3 like t1; +create temporary table t3 like mysqltest.t3; show create table t3; create table t2 like t3; show create table t2; select * from t2; create table t3 like t1; --error 1050 -create table t3 like test_$1.t3; +create table t3 like mysqltest.t3; --error 1044,1 create table non_existing_database.t1 like t1; --error 1051 @@ -301,7 +301,7 @@ create temporary table t3 like t1; create table t3 like `a/a`; drop table t1, t2, t3; drop table t3; -drop database test_$1; +drop database mysqltest; # # Test default table type @@ -393,10 +393,10 @@ drop table t1, t2, t3; # Bug #1209 # -create database test_$1; -use test_$1; +create database mysqltest; +use mysqltest; select database(); -drop database test_$1; +drop database mysqltest; select database(); # Connect without a database diff --git a/mysql-test/t/ndb_basic.test b/mysql-test/t/ndb_basic.test index a24891ab814..a3aa042848d 100644 --- a/mysql-test/t/ndb_basic.test +++ b/mysql-test/t/ndb_basic.test @@ -2,7 +2,7 @@ --disable_warnings DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7; -drop database if exists test2; +drop database if exists mysqltest; --enable_warnings # @@ -338,8 +338,8 @@ CREATE TABLE t1 ( INSERT INTO t1 VALUES (9410,9412, NULL, '9412'), (9411,9413, 17, '9413'); -create database test2; -use test2; +create database mysqltest; +use mysqltest; CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, @@ -353,7 +353,5 @@ select b from test.t1, t2 where c = test.t1.attr2; select b,test.t1.attr1 from test.t1, t2 where test.t1.pk1 < a; drop table test.t1, t2; - -drop database test2; - +drop database mysqltest; diff --git a/mysql-test/t/ndb_blob.test b/mysql-test/t/ndb_blob.test index d33168d9da6..36c823bda41 100644 --- a/mysql-test/t/ndb_blob.test +++ b/mysql-test/t/ndb_blob.test @@ -2,7 +2,7 @@ --disable_warnings drop table if exists t1; -drop database if exists test2; +drop database if exists mysqltest; --enable_warnings # @@ -214,8 +214,8 @@ select * from t1 order by a; # multi db -create database test2; -use test2; +create database mysqltest; +use mysqltest; CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, @@ -271,5 +271,5 @@ select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3) from t1 order by a; rollback; select count(*) from t1; - ---drop table t1; +drop table t1; +drop database mysqltest; diff --git a/mysql-test/t/ndb_transaction.test b/mysql-test/t/ndb_transaction.test index 9d06d949b2e..f8ed22207ea 100644 --- a/mysql-test/t/ndb_transaction.test +++ b/mysql-test/t/ndb_transaction.test @@ -2,7 +2,7 @@ --disable_warnings DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7; -drop database if exists test2; +drop database if exists mysqltest; --enable_warnings # @@ -263,8 +263,8 @@ CREATE TABLE t1 ( attr1 INT NOT NULL ) ENGINE=ndbcluster; -create database test2; -use test2; +create database mysqltest; +use mysqltest; CREATE TABLE t2 ( a bigint unsigned NOT NULL PRIMARY KEY, @@ -292,7 +292,6 @@ select count(*) from test.t1; select count(*) from t2; drop table test.t1, t2; - -drop database test2; +drop database mysqltest; diff --git a/mysql-test/t/ps_1general.test b/mysql-test/t/ps_1general.test index 2c86c30f820..084253a106a 100644 --- a/mysql-test/t/ps_1general.test +++ b/mysql-test/t/ps_1general.test @@ -350,11 +350,11 @@ prepare stmt4 from ' use test ' ; ## create/drop database --error 1295 -prepare stmt3 from ' create database drop_me '; -create database drop_me ; +prepare stmt3 from ' create database mysqltest '; +create database mysqltest ; --error 1295 -prepare stmt3 from ' drop database drop_me '; -drop database drop_me ; +prepare stmt3 from ' drop database mysqltest '; +drop database mysqltest ; ## grant/revoke + drop user --error 1295 diff --git a/mysql-test/t/rpl_charset.test b/mysql-test/t/rpl_charset.test index 02bcdf1f5f1..83e7d95e28c 100644 --- a/mysql-test/t/rpl_charset.test +++ b/mysql-test/t/rpl_charset.test @@ -6,41 +6,41 @@ source include/master-slave.inc; --disable_warnings -drop database if exists test2; -drop database if exists test3; +drop database if exists mysqltest2; +drop database if exists mysqltest3; --enable_warnings -create database test2 character set latin2; +create database mysqltest2 character set latin2; set @@character_set_server=latin5; -create database test3; +create database mysqltest3; --disable_query_log select "--- --master--" as ""; --enable_query_log -show create database test2; -show create database test3; +show create database mysqltest2; +show create database mysqltest3; sync_slave_with_master; --disable_query_log select "--- --slave--" as ""; --enable_query_log -show create database test2; -show create database test3; +show create database mysqltest2; +show create database mysqltest3; connection master; set @@collation_server=armscii8_bin; -drop database test3; -create database test3; +drop database mysqltest3; +create database mysqltest3; --disable_query_log select "--- --master--" as ""; --enable_query_log -show create database test3; +show create database mysqltest3; sync_slave_with_master; --disable_query_log select "--- --slave--" as ""; --enable_query_log -show create database test3; +show create database mysqltest3; connection master; -use test2; +use mysqltest2; create table t1 (a int auto_increment primary key, b varchar(100)); set character_set_client=cp850, collation_connection=latin2_croatian_ci; insert into t1 (b) values(@@character_set_server); @@ -59,7 +59,7 @@ sync_slave_with_master; --disable_query_log select "--- --slave--" as ""; --enable_query_log -select * from test2.t1 order by a; +select * from mysqltest2.t1 order by a; connection master; set character_set_client=latin1, collation_connection=latin1_german1_ci; @@ -77,7 +77,7 @@ sync_slave_with_master; --disable_query_log select "--- --slave--" as ""; --enable_query_log -select * from test2.t1 order by a; +select * from mysqltest2.t1 order by a; # See if SET ONE_SHOT gets into binlog when LOAD DATA connection master; @@ -101,11 +101,11 @@ sync_slave_with_master; --disable_query_log select "--- --slave--" as ""; --enable_query_log -select * from test2.t1 order by a; +select * from mysqltest2.t1 order by a; connection master; -drop database test2; -drop database test3; +drop database mysqltest2; +drop database mysqltest3; show binlog events from 79; sync_slave_with_master; diff --git a/mysql-test/t/rpl_delete_all.test b/mysql-test/t/rpl_delete_all.test index 6ca98b34caf..23848720107 100644 --- a/mysql-test/t/rpl_delete_all.test +++ b/mysql-test/t/rpl_delete_all.test @@ -1,14 +1,14 @@ source include/master-slave.inc; connection slave; -create database test1; +create database mysqltest; connection master; -drop database if exists test1; +drop database if exists mysqltest; sync_slave_with_master; # can't read dir --replace_result "Errcode: 1" "Errcode: X" "Errcode: 2" "Errcode: X" --error 12 -show tables from test1; +show tables from mysqltest; connection slave; create table t1 (a int); diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index de391fbe288..759ed7d22b3 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -4,6 +4,7 @@ --disable_warnings drop table if exists t1,t2; +drop database if exists mysqltest; --enable_warnings create table t1 (a int not null primary key, b int not null,c int not null, key(b,c)); @@ -261,42 +262,42 @@ drop table t1, t2, t3; # Test for bug #3342 SHOW CREATE DATABASE seems to require DROP privilege # -create database test_$1; -show create database test_$1; -create table test_$1.t1(a int); -insert into test_$1.t1 values(1); -grant select on `test_$1`.* to mysqltest_1@localhost; -grant usage on `test_$1`.* to mysqltest_2@localhost; -grant drop on `test_$1`.* to mysqltest_3@localhost; +create database mysqltest; +show create database mysqltest; +create table mysqltest.t1(a int); +insert into mysqltest.t1 values(1); +grant select on `mysqltest`.* to mysqltest_1@localhost; +grant usage on `mysqltest`.* to mysqltest_2@localhost; +grant drop on `mysqltest`.* to mysqltest_3@localhost; -connect (con1,localhost,mysqltest_1,,test_$1); +connect (con1,localhost,mysqltest_1,,mysqltest); connection con1; select * from t1; -show create database test_$1; +show create database mysqltest; --error 1044 drop table t1; --error 1044 -drop database test_$1; +drop database mysqltest; connect (con2,localhost,mysqltest_2,,test); connection con2; --error 1044 -select * from test_$1.t1; +select * from mysqltest.t1; --error 1044 -show create database test_$1; +show create database mysqltest; --error 1044 -drop table test_$1.t1; +drop table mysqltest.t1; --error 1044 -drop database test_$1; +drop database mysqltest; connect (con3,localhost,mysqltest_3,,test); connection con3; --error 1044 -select * from test_$1.t1; +select * from mysqltest.t1; --error 1044 -show create database test_$1; -drop table test_$1.t1; -drop database test_$1; +show create database mysqltest; +drop table mysqltest.t1; +drop database mysqltest; connection default; set names binary; diff --git a/sql/field.h b/sql/field.h index 9cce7b9541b..e12dd60c13b 100644 --- a/sql/field.h +++ b/sql/field.h @@ -908,7 +908,7 @@ public: void reset(void) { charset()->cset->fill(charset(),ptr,field_length,' '); } int store(const char *to,uint length,CHARSET_INFO *charset); int store(longlong nr); - int store(double nr) { return Field_str::store(nr); } + int store(double nr) { return Field_str::store(nr); } /* QQ: To be deleted */ double val_real(void); longlong val_int(void); String *val_str(String*,String *); @@ -955,7 +955,7 @@ public: uint32 key_length() const { return (uint32) field_length; } int store(const char *to,uint length,CHARSET_INFO *charset); int store(longlong nr); - int store(double nr) { return Field_str::store(nr); } + int store(double nr) { return Field_str::store(nr); } /* QQ: To be deleted */ double val_real(void); longlong val_int(void); String *val_str(String*,String *); diff --git a/sql/lock.cc b/sql/lock.cc index fab0a61e506..215059b8a46 100644 --- a/sql/lock.cc +++ b/sql/lock.cc @@ -779,7 +779,8 @@ void unlock_global_read_lock(THD *thd) (is_not_commit || \ global_read_lock_blocks_commit)) -bool wait_if_global_read_lock(THD *thd, bool abort_on_refresh, bool is_not_commit) +bool wait_if_global_read_lock(THD *thd, bool abort_on_refresh, + bool is_not_commit) { const char *old_message; bool result= 0, need_exit_cond; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index dede280325d..92364b23461 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -2138,7 +2138,10 @@ find_item_in_list(Item *find, List &items, uint *counter, select list over other fields from the tables participating in this select in case of ambiguity. - QQ: Why do we use simple strcmp for table name comparison here ? + We use strcmp for table names and database names as these may be + case sensitive. + In cases where they are not case sensitive, they are always in lower + case. */ if (!my_strcasecmp(system_charset_info, item_field->field_name, field_name) && @@ -2157,10 +2160,12 @@ find_item_in_list(Item *find, List &items, uint *counter, } found= li.ref(); *counter= i; + if (db_name) + break; // Perfect match } } else if (!my_strcasecmp(system_charset_info, item_field->name, - field_name)) + field_name)) { /* If table name was not given we should scan through aliases @@ -2230,7 +2235,7 @@ find_item_in_list(Item *find, List &items, uint *counter, } if (found) return found; - else if (report_error != REPORT_EXCEPT_NOT_FOUND) + if (report_error != REPORT_EXCEPT_NOT_FOUND) { if (report_error == REPORT_ALL_ERRORS) my_printf_error(ER_BAD_FIELD_ERROR, ER(ER_BAD_FIELD_ERROR), MYF(0), diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index baff7bd604d..4b9f4162aff 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -1041,7 +1041,7 @@ static int mysql_test_select(Prepared_statement *stmt, THD *thd= stmt->thd; LEX *lex= stmt->lex; SELECT_LEX_UNIT *unit= &lex->unit; - + int result= 1; DBUG_ENTER("mysql_test_select"); #ifndef NO_EMBEDDED_ACCESS_CHECKS @@ -1087,13 +1087,12 @@ static int mysql_test_select(Prepared_statement *stmt, goto err_prep; } } - unit->cleanup(); - DBUG_RETURN(0); + result= 0; // ok err_prep: unit->cleanup(); err: - DBUG_RETURN(1); + DBUG_RETURN(result); } diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 4ca8008c518..59c587d876f 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -3220,7 +3220,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse, store_key **ref_key= j->ref.key_copy; byte *key_buff=j->ref.key_buff, *null_ref_key= 0; - bool keyuse_uses_no_tables= true; + bool keyuse_uses_no_tables= TRUE; if (ftkey) { j->ref.items[0]=((Item_func*)(keyuse->val))->key_item(); @@ -3240,7 +3240,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse, uint maybe_null= test(keyinfo->key_part[i].null_bit); j->ref.items[i]=keyuse->val; // Save for cond removal - keyuse_uses_no_tables= keyuse_uses_no_tables & !keyuse->used_tables; + keyuse_uses_no_tables= keyuse_uses_no_tables && !keyuse->used_tables; if (!keyuse->used_tables && !(join->select_options & SELECT_DESCRIBE)) { // Compare against constant From c9394a0f0da951a24f72598f00d82e27fcc55684 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 31 Aug 2004 21:27:58 +0500 Subject: [PATCH 14/16] Added global my_getopt_error_reporter function pointer which is used in the handle_options() function (instead of using additional handle_option() parameter). The default value of the my_getopt_error_reporter is default_reporter(). One can set it to other functions if case of need. client/mysql.cc: Removed extra handle_optins()'s parameter. client/mysqladmin.c: Removed extra handle_optins()'s parameter. client/mysqlbinlog.cc: Removed extra handle_optins()'s parameter. client/mysqlcheck.c: Removed extra handle_optins()'s parameter. client/mysqldump.c: Removed extra handle_optins()'s parameter. client/mysqlimport.c: Removed extra handle_optins()'s parameter. client/mysqlmanager-pwgen.c: Removed extra handle_optins()'s parameter. client/mysqlmanagerc.c: Removed extra handle_optins()'s parameter. client/mysqlshow.c: Removed extra handle_optins()'s parameter. client/mysqltest.c: Removed extra handle_optins()'s parameter. extra/my_print_defaults.c: Removed extra handle_optins()'s parameter. extra/mysql_install.c: Removed extra handle_optins()'s parameter. extra/mysql_waitpid.c: Removed extra handle_optins()'s parameter. extra/perror.c: Removed extra handle_optins()'s parameter. extra/resolve_stack_dump.c: Removed extra handle_optins()'s parameter. extra/resolveip.c: Removed extra handle_optins()'s parameter. include/my_getopt.h: Removed extra handle_optins()'s parameter. isam/isamchk.c: Removed extra handle_optins()'s parameter. isam/pack_isam.c: Removed extra handle_optins()'s parameter. myisam/mi_test1.c: Removed extra handle_optins()'s parameter. myisam/myisam_ftdump.c: Removed extra handle_optins()'s parameter. myisam/myisamchk.c: Removed extra handle_optins()'s parameter. myisam/myisampack.c: Removed extra handle_optins()'s parameter. sql/gen_lex_hash.cc: Removed extra handle_optins()'s parameter. sql/mysqld.cc: Removed extra handle_optins()'s parameter. tools/mysqlmanager.c: Removed extra handle_optins()'s parameter. --- client/mysql.cc | 2 +- client/mysqladmin.c | 2 +- client/mysqlbinlog.cc | 2 +- client/mysqlcheck.c | 2 +- client/mysqldump.c | 2 +- client/mysqlimport.c | 2 +- client/mysqlmanager-pwgen.c | 2 +- client/mysqlmanagerc.c | 2 +- client/mysqlshow.c | 2 +- client/mysqltest.c | 2 +- extra/my_print_defaults.c | 2 +- extra/mysql_install.c | 2 +- extra/mysql_waitpid.c | 2 +- extra/perror.c | 2 +- extra/resolve_stack_dump.c | 2 +- extra/resolveip.c | 2 +- include/my_getopt.h | 10 ++-- isam/isamchk.c | 2 +- isam/pack_isam.c | 2 +- myisam/mi_test1.c | 2 +- myisam/myisam_ftdump.c | 2 +- myisam/myisamchk.c | 2 +- myisam/myisampack.c | 2 +- mysys/my_getopt.c | 101 ++++++++++++++++++++---------------- sql/gen_lex_hash.cc | 2 +- sql/mysqld.cc | 4 +- tools/mysqlmanager.c | 2 +- 27 files changed, 87 insertions(+), 76 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index 73067700656..154695aa9e5 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -759,7 +759,7 @@ static int get_options(int argc, char **argv) opt_max_allowed_packet= *mysql_params->p_max_allowed_packet; opt_net_buffer_length= *mysql_params->p_net_buffer_length; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, 0))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); *mysql_params->p_max_allowed_packet= opt_max_allowed_packet; diff --git a/client/mysqladmin.c b/client/mysqladmin.c index e2843685d50..3bc11ec0fb0 100644 --- a/client/mysqladmin.c +++ b/client/mysqladmin.c @@ -254,7 +254,7 @@ int main(int argc,char *argv[]) mysql_init(&mysql); load_defaults("my",load_default_groups,&argc,&argv); save_argv = argv; /* Save for free_defaults */ - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, 0))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) { free_defaults(save_argv); exit(ho_error); diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 93e0b98b1e5..7c3d22c4900 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -559,7 +559,7 @@ static int parse_args(int *argc, char*** argv) result_file = stdout; load_defaults("my",load_default_groups,argc,argv); - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); return 0; diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index 718b92da466..1c5638f3c52 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -273,7 +273,7 @@ static int get_options(int *argc, char ***argv) load_defaults("my", load_default_groups, argc, argv); - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, 0))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); if (!what_to_do) diff --git a/client/mysqldump.c b/client/mysqldump.c index c0ef07a7670..6dad8182b87 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -413,7 +413,7 @@ static int get_options(int *argc, char ***argv) md_result_file= stdout; load_defaults("my",load_default_groups,argc,argv); - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, 0))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); *mysql_params->p_max_allowed_packet= opt_max_allowed_packet; diff --git a/client/mysqlimport.c b/client/mysqlimport.c index 751379591ff..ca53b74c119 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -206,7 +206,7 @@ static int get_options(int *argc, char ***argv) { int ho_error; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, 0))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); if (enclosed && opt_enclosed) diff --git a/client/mysqlmanager-pwgen.c b/client/mysqlmanager-pwgen.c index dc845008ce0..57d91b52f49 100644 --- a/client/mysqlmanager-pwgen.c +++ b/client/mysqlmanager-pwgen.c @@ -95,7 +95,7 @@ int parse_args(int argc, char** argv) { int ho_error; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); return 0; diff --git a/client/mysqlmanagerc.c b/client/mysqlmanagerc.c index 78485427473..0001a0266e6 100644 --- a/client/mysqlmanagerc.c +++ b/client/mysqlmanagerc.c @@ -133,7 +133,7 @@ int parse_args(int argc, char **argv) load_defaults("my",load_default_groups,&argc,&argv); default_argv= argv; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); return 0; diff --git a/client/mysqlshow.c b/client/mysqlshow.c index cabe55cd95e..1a9aec02955 100644 --- a/client/mysqlshow.c +++ b/client/mysqlshow.c @@ -261,7 +261,7 @@ get_options(int *argc,char ***argv) { int ho_error; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, 0))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); if (tty_password) diff --git a/client/mysqltest.c b/client/mysqltest.c index df54b60dc97..2ec07692a4d 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -2062,7 +2062,7 @@ int parse_args(int argc, char **argv) load_defaults("my",load_default_groups,&argc,&argv); default_argv= argv; - if ((handle_options(&argc, &argv, my_long_options, get_one_option, 0))) + if ((handle_options(&argc, &argv, my_long_options, get_one_option))) exit(1); if (argc > 1) diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c index 515e816f473..f8a7995432b 100644 --- a/extra/my_print_defaults.c +++ b/extra/my_print_defaults.c @@ -100,7 +100,7 @@ static int get_options(int *argc,char ***argv) { int ho_error; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); if (*argc < 1) diff --git a/extra/mysql_install.c b/extra/mysql_install.c index ab44e1a055b..e2783f906b9 100644 --- a/extra/mysql_install.c +++ b/extra/mysql_install.c @@ -218,7 +218,7 @@ static int parse_args(int argc, char **argv) { int ho_error; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); return 0; diff --git a/extra/mysql_waitpid.c b/extra/mysql_waitpid.c index 0894d81a5ae..c228cc52c8b 100644 --- a/extra/mysql_waitpid.c +++ b/extra/mysql_waitpid.c @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) progname= argv[0]; - if (handle_options(&argc, &argv, my_long_options, get_one_option, NULL)) + if (handle_options(&argc, &argv, my_long_options, get_one_option)) exit(-1); if (!argv[0] || !argv[1] || (pid= atoi(argv[0])) <= 0 || (t= atoi(argv[1])) <= 0) diff --git a/extra/perror.c b/extra/perror.c index 212b313ade4..b4aeaf00671 100644 --- a/extra/perror.c +++ b/extra/perror.c @@ -145,7 +145,7 @@ static int get_options(int *argc,char ***argv) { int ho_error; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); if (!*argc && !print_all_codes) diff --git a/extra/resolve_stack_dump.c b/extra/resolve_stack_dump.c index 8b72ab1d864..c54f17a186e 100644 --- a/extra/resolve_stack_dump.c +++ b/extra/resolve_stack_dump.c @@ -121,7 +121,7 @@ static int parse_args(int argc, char **argv) { int ho_error; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); /* diff --git a/extra/resolveip.c b/extra/resolveip.c index 23ea34abc42..d3caa9e1d45 100644 --- a/extra/resolveip.c +++ b/extra/resolveip.c @@ -90,7 +90,7 @@ static int get_options(int *argc,char ***argv) { int ho_error; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); if (*argc == 0) diff --git a/include/my_getopt.h b/include/my_getopt.h index f5b847f7dda..e602773e181 100644 --- a/include/my_getopt.h +++ b/include/my_getopt.h @@ -50,15 +50,15 @@ struct my_option int app_type; /* To be used by an application */ }; -extern char *disabled_my_option; -extern my_bool my_getopt_print_errors; - typedef my_bool (* my_get_one_option) (int, const struct my_option *, char * ); typedef void (* my_error_reporter) (enum loglevel level, const char *format, ... ); +extern char *disabled_my_option; +extern my_bool my_getopt_print_errors; +extern my_error_reporter my_getopt_error_reporter; + extern int handle_options (int *argc, char ***argv, - const struct my_option *longopts, my_get_one_option, - my_error_reporter ); + const struct my_option *longopts, my_get_one_option); extern void my_print_help(const struct my_option *options); extern void my_print_variables(const struct my_option *options); diff --git a/isam/isamchk.c b/isam/isamchk.c index 8603b436841..daa9464eb4f 100644 --- a/isam/isamchk.c +++ b/isam/isamchk.c @@ -670,7 +670,7 @@ static void get_options(register int *argc, register char ***argv) if (isatty(fileno(stdout))) testflag|=T_WRITE_LOOP; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); if (*argc == 0) diff --git a/isam/pack_isam.c b/isam/pack_isam.c index 59594ccc929..b2e21afc743 100644 --- a/isam/pack_isam.c +++ b/isam/pack_isam.c @@ -353,7 +353,7 @@ static void get_options(int *argc, char ***argv) { int ho_error; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); my_progname= argv[0][0]; diff --git a/myisam/mi_test1.c b/myisam/mi_test1.c index 88e6c5c89d3..8ea97c8e489 100644 --- a/myisam/mi_test1.c +++ b/myisam/mi_test1.c @@ -643,7 +643,7 @@ static void get_options(int argc, char *argv[]) { int ho_error; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); return; diff --git a/myisam/myisam_ftdump.c b/myisam/myisam_ftdump.c index 35182bc8abb..838f90feae5 100644 --- a/myisam/myisam_ftdump.c +++ b/myisam/myisam_ftdump.c @@ -66,7 +66,7 @@ int main(int argc,char *argv[]) struct { MI_INFO *info; } aio0, *aio=&aio0; /* for GWS_IN_USE */ MY_INIT(argv[0]); - if (error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL)) + if (error=handle_options(&argc, &argv, my_long_options, get_one_option)) exit(error); if (count || dump) verbose=0; diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c index e8e85345897..5377ecc18a5 100644 --- a/myisam/myisamchk.c +++ b/myisam/myisamchk.c @@ -677,7 +677,7 @@ static void get_options(register int *argc,register char ***argv) if (isatty(fileno(stdout))) check_param.testflag|=T_WRITE_LOOP; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); /* If using repair, then update checksum if one uses --update-state */ diff --git a/myisam/myisampack.c b/myisam/myisampack.c index 51f8ad1bb11..872fcb49faf 100644 --- a/myisam/myisampack.c +++ b/myisam/myisampack.c @@ -350,7 +350,7 @@ static void get_options(int *argc,char ***argv) if (isatty(fileno(stdout))) write_loop=1; - if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); if (!*argc) diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index f9df4afb55d..71f8819756a 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -22,6 +22,9 @@ #include #include +static void default_reporter(enum loglevel level, const char *format, ...); +my_error_reporter my_getopt_error_reporter= &default_reporter; + static int findopt(char *optpat, uint length, const struct my_option **opt_res, char **ffname); @@ -56,7 +59,8 @@ char *disabled_my_option= (char*) "0"; my_bool my_getopt_print_errors= 1; -void default_reporter(enum loglevel level, const char *format, ...) +static void default_reporter(enum loglevel level __attribute__((unused)), + const char *format, ...) { va_list args; va_start(args, format); @@ -76,8 +80,7 @@ void default_reporter(enum loglevel level, const char *format, ...) int handle_options(int *argc, char ***argv, const struct my_option *longopts, - my_get_one_option get_one_option, - my_error_reporter reporter) + my_get_one_option get_one_option) { uint opt_found, argvpos= 0, length, i; my_bool end_of_options= 0, must_be_var, set_maximum_value, special_used, @@ -91,9 +94,6 @@ int handle_options(int *argc, char ***argv, (*argv)++; /* --- || ---- */ init_variables(longopts); - if (! reporter) - reporter= &default_reporter; - for (pos= *argv, pos_end=pos+ *argc; pos != pos_end ; pos++) { char *cur_arg= *pos; @@ -118,8 +118,9 @@ int handle_options(int *argc, char ***argv, if (!*++pos) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, - "%s: Option '-O' requires an argument\n", progname); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: Option '-O' requires an argument\n", + progname); return EXIT_ARGUMENT_REQUIRED; } cur_arg= *pos; @@ -135,9 +136,9 @@ int handle_options(int *argc, char ***argv, if (!*cur_arg) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, - "%s: Option '--set-variable' requires an argument\n", - progname); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: Option '--set-variable' requires an argument\n", + progname); return EXIT_ARGUMENT_REQUIRED; } } @@ -149,9 +150,9 @@ int handle_options(int *argc, char ***argv, if (!*++pos) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, - "%s: Option '--set-variable' requires an argument\n", - progname); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: Option '--set-variable' requires an argument\n", + progname); return EXIT_ARGUMENT_REQUIRED; } cur_arg= *pos; @@ -210,10 +211,11 @@ int handle_options(int *argc, char ***argv, if (opt_found > 1) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, - "%s: ambiguous option '--%s-%s' (--%s-%s)\n", - progname, special_opt_prefix[i], cur_arg, - special_opt_prefix[i], prev_found); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: ambiguous option '--%s-%s' (--%s-%s)\n", + progname, special_opt_prefix[i], + cur_arg, special_opt_prefix[i], + prev_found); return EXIT_AMBIGUOUS_OPTION; } switch (i) { @@ -245,16 +247,20 @@ int handle_options(int *argc, char ***argv, if (must_be_var) { if (my_getopt_print_errors) - reporter(option_is_loose ? WARNING_LEVEL : ERROR_LEVEL, - "%s: unknown variable '%s'\n", progname, cur_arg); + my_getopt_error_reporter(option_is_loose ? + WARNING_LEVEL : ERROR_LEVEL, + "%s: unknown variable '%s'\n", + progname, cur_arg); if (!option_is_loose) return EXIT_UNKNOWN_VARIABLE; } else { if (my_getopt_print_errors) - reporter(option_is_loose ? WARNING_LEVEL : ERROR_LEVEL, - "%s: unknown option '--%s'\n", progname, cur_arg); + my_getopt_error_reporter(option_is_loose ? + WARNING_LEVEL : ERROR_LEVEL, + "%s: unknown option '--%s'\n", + progname, cur_arg); if (!option_is_loose) return EXIT_UNKNOWN_OPTION; } @@ -270,23 +276,27 @@ int handle_options(int *argc, char ***argv, if (must_be_var) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, "%s: variable prefix '%s' is not unique\n", - progname, cur_arg); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: variable prefix '%s' is not unique\n", + progname, cur_arg); return EXIT_VAR_PREFIX_NOT_UNIQUE; } else { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, "%s: ambiguous option '--%s' (%s, %s)\n", - progname, cur_arg, prev_found, optp->name); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: ambiguous option '--%s' (%s, %s)\n", + progname, cur_arg, prev_found, + optp->name); return EXIT_AMBIGUOUS_OPTION; } } if (must_be_var && optp->var_type == GET_NO_ARG) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, "%s: option '%s' cannot take an argument\n", - progname, optp->name); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: option '%s' cannot take an argument\n", + progname, optp->name); return EXIT_NO_ARGUMENT_ALLOWED; } if (optp->arg_type == NO_ARG) @@ -294,9 +304,9 @@ int handle_options(int *argc, char ***argv, if (optend && optp->var_type != GET_BOOL) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, - "%s: option '--%s' cannot take an argument\n", - progname, optp->name); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: option '--%s' cannot take an argument\n", + progname, optp->name); return EXIT_NO_ARGUMENT_ALLOWED; } if (optp->var_type == GET_BOOL) @@ -333,9 +343,9 @@ int handle_options(int *argc, char ***argv, if (!*++pos) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, - "%s: option '--%s' requires an argument\n", - progname, optp->name); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: option '--%s' requires an argument\n", + progname, optp->name); return EXIT_ARGUMENT_REQUIRED; } argument= *pos; @@ -384,9 +394,9 @@ int handle_options(int *argc, char ***argv, if (!pos[1]) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, - "%s: option '-%c' requires an argument\n", - progname, optp->id); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: option '-%c' requires an argument\n", + progname, optp->id); return EXIT_ARGUMENT_REQUIRED; } argument= *++pos; @@ -396,9 +406,9 @@ int handle_options(int *argc, char ***argv, } if ((error= setval(optp, argument, set_maximum_value))) { - reporter(ERROR_LEVEL, - "%s: Error while setting value '%s' to '%s'\n", - progname, argument, optp->name); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: Error while setting value '%s' to '%s'\n", + progname, argument, optp->name); return error; } get_one_option(optp->id, optp, argument); @@ -408,8 +418,9 @@ int handle_options(int *argc, char ***argv, if (!opt_found) { if (my_getopt_print_errors) - reporter(ERROR_LEVEL, - "%s: unknown option '-%c'\n", progname, *optend); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: unknown option '-%c'\n", + progname, *optend); return EXIT_UNKNOWN_OPTION; } } @@ -418,9 +429,9 @@ int handle_options(int *argc, char ***argv, } if ((error= setval(optp, argument, set_maximum_value))) { - reporter(ERROR_LEVEL, - "%s: Error while setting value '%s' to '%s'\n", - progname, argument, optp->name); + my_getopt_error_reporter(ERROR_LEVEL, + "%s: Error while setting value '%s' to '%s'\n", + progname, argument, optp->name); return error; } get_one_option(optp->id, optp, argument); diff --git a/sql/gen_lex_hash.cc b/sql/gen_lex_hash.cc index 72ab1184533..1e78aa35195 100644 --- a/sql/gen_lex_hash.cc +++ b/sql/gen_lex_hash.cc @@ -384,7 +384,7 @@ static int get_options(int argc, char **argv) { int ho_error; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, 0))) + if ((ho_error= handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); if (argc >= 1) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 1068c5ec9a1..1e682e16d1f 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -5119,8 +5119,8 @@ static void get_options(int argc,char **argv) { int ho_error; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, - option_error_reporter))) + my_getopt_error_reporter= option_error_reporter; + if ((ho_error= handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); #if defined(HAVE_BROKEN_REALPATH) diff --git a/tools/mysqlmanager.c b/tools/mysqlmanager.c index 12b5519ae9c..ade6da895c6 100644 --- a/tools/mysqlmanager.c +++ b/tools/mysqlmanager.c @@ -1333,7 +1333,7 @@ static int parse_args(int argc, char **argv) { int ho_error; - if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, NULL))) + if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) exit(ho_error); return 0; From 38105ee84566015ea5941630cbb6eb94f92233a9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 31 Aug 2004 13:29:28 -0500 Subject: [PATCH 15/16] Do-compile: Remove --warnings for mysql-test-run. Devs don't use it, and Serg says it's not needed anymore. Build-tools/Do-compile: Remove --warnings for mysql-test-run. Devs don't use it, and Serg says it's not needed anymore. --- Build-tools/Do-compile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build-tools/Do-compile b/Build-tools/Do-compile index 1650e3d4a09..f92af463a0a 100755 --- a/Build-tools/Do-compile +++ b/Build-tools/Do-compile @@ -361,7 +361,7 @@ if ($opt_stage <= 5 && !$opt_no_test && !$opt_no_mysqltest) log_timestamp(); system("mkdir $bench_tmpdir") if (! -d $bench_tmpdir); safe_cd("${test_dir}/mysql-test"); - check_system("./mysql-test-run --warnings --tmpdir=$bench_tmpdir --master_port=$mysql_tcp_port --slave_port=$slave_port --manager-port=$manager_port --no-manager --sleep=10", "tests were successful"); + check_system("./mysql-test-run --tmpdir=$bench_tmpdir --master_port=$mysql_tcp_port --slave_port=$slave_port --manager-port=$manager_port --no-manager --sleep=10", "tests were successful"); } # From 762bee96d2be00d45d53cf9434383b325ce54f79 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 2 Sep 2004 16:57:26 +0300 Subject: [PATCH 16/16] After merge fixes mysql-test/mysql-test-run.sh: Export MASTER_MYSOCK (used in some tests) mysql-test/t/alter_table.test: Use MASTER_MYSOCK instead of master.sock --- mysql-test/mysql-test-run.sh | 2 +- mysql-test/r/lowercase_table.result | 12 ++++-------- mysql-test/t/alter_table.test | 4 ++-- mysql-test/t/lowercase_table.test | 2 +- sql/sql_base.cc | 2 +- sql/table.cc | 1 - tests/client_test.c | 2 +- 7 files changed, 10 insertions(+), 15 deletions(-) diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 454dc7b327b..b847e8c36e4 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -438,7 +438,7 @@ SLAVE_MYERR="$MYSQL_TEST_DIR/var/log/slave.err" CURRENT_TEST="$MYSQL_TEST_DIR/var/log/current_test" SMALL_SERVER="--key_buffer_size=1M --sort_buffer=256K --max_heap_table_size=1M" -export MASTER_MYPORT SLAVE_MYPORT MYSQL_TCP_PORT +export MASTER_MYPORT SLAVE_MYPORT MYSQL_TCP_PORT MASTER_MYSOCK if [ x$SOURCE_DIST = x1 ] ; then MY_BASEDIR=$MYSQL_TEST_DIR diff --git a/mysql-test/r/lowercase_table.result b/mysql-test/r/lowercase_table.result index dc8fffa0f90..f0cb4cc3ccf 100644 --- a/mysql-test/r/lowercase_table.result +++ b/mysql-test/r/lowercase_table.result @@ -45,10 +45,11 @@ count(bags.a) drop table t1; create database mysqltest; use MYSQLTEST; +create table t1 (a int); select T1.a from MYSQLTEST.T1; a select t1.a from MYSQLTEST.T1; -Unknown table 't1' in field list +a select mysqltest.t1.* from MYSQLTEST.t1; a select MYSQLTEST.t1.* from MYSQLTEST.t1; @@ -59,7 +60,9 @@ select MYSQLTEST.T1.* from T1; a alter table t1 rename to T1; select MYSQLTEST.t1.* from MYSQLTEST.t1; +a drop database mysqltest; +use test; create table t1 (a int); create table t2 (a int); delete p1.*,P2.* from t1 as p1, t2 as p2 where p1.a=P2.a; @@ -76,10 +79,3 @@ ERROR 42000: Not unique table/alias: 'C' drop table t1, t2; show tables; Tables_in_test -create table t1 (a int); -select TEST.t1.* from TEST.t1; -a -alter table t1 rename to T1; -select TEST.t1.* from TEST.t1; -a -drop table t1; diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index 317af337c46..eb35aa90fe2 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -110,14 +110,14 @@ drop database mysqltest; # # Rights for renaming test (Bug #3270) # -connect (root,localhost,root,,test,$MASTER_MYPORT,master.sock); +connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK); connection root; --disable_warnings create database mysqltest; --enable_warnings create table mysqltest.t1 (a int,b int,c int); grant all on mysqltest.t1 to mysqltest_1@localhost; -connect (user1,localhost,mysqltest_1,,mysqltest,$MASTER_MYPORT,master.sock); +connect (user1,localhost,mysqltest_1,,mysqltest,$MASTER_MYPORT,$MASTER_MYSOCK); connection user1; -- error 1142 alter table t1 rename t2; diff --git a/mysql-test/t/lowercase_table.test b/mysql-test/t/lowercase_table.test index 602a05a7848..b36d63bfd72 100644 --- a/mysql-test/t/lowercase_table.test +++ b/mysql-test/t/lowercase_table.test @@ -39,7 +39,6 @@ create database mysqltest; use MYSQLTEST; create table t1 (a int); select T1.a from MYSQLTEST.T1; ---error 1109 select t1.a from MYSQLTEST.T1; select mysqltest.t1.* from MYSQLTEST.t1; select MYSQLTEST.t1.* from MYSQLTEST.t1; @@ -48,6 +47,7 @@ select MYSQLTEST.T1.* from T1; alter table t1 rename to T1; select MYSQLTEST.t1.* from MYSQLTEST.t1; drop database mysqltest; +use test; # # multiupdate/delete & --lower-case-table-names diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 921e1c1ec42..ac5008717e6 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -2458,7 +2458,7 @@ insert_fields(THD *thd,TABLE_LIST *tables, const char *db_name, 'name' of the item which may be used in the select list */ strmake(name_buff, db_name, sizeof(name_buff)-1); - my_casedn_str(name_buff); + my_casedn_str(files_charset_info, name_buff); db_name= name_buff; } diff --git a/sql/table.cc b/sql/table.cc index eb3e0e8d1a7..8b018d61e5a 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1120,7 +1120,6 @@ void append_unescaped(String *res, const char *pos, uint length) res->append(*pos); break; } - pos++; } res->append('\''); } diff --git a/tests/client_test.c b/tests/client_test.c index ed186837d28..ae87fbc70a0 100644 --- a/tests/client_test.c +++ b/tests/client_test.c @@ -10189,7 +10189,7 @@ static void get_options(int argc, char **argv) int ho_error; if ((ho_error= handle_options(&argc, &argv, client_test_long_options, - get_one_option, 0))) + get_one_option))) exit(ho_error); if (tty_password)