From bee338fefe27f7f7c18512eaf3b29d53c9e85424 Mon Sep 17 00:00:00 2001 From: "greg@mysql.com" <> Date: Mon, 12 Jan 2004 21:15:49 -0100 Subject: [PATCH 1/8] Checked and applied Novell-supplied patches inside the netware directory only. --- netware/BUILD/compile-linux-tools | 5 +- netware/BUILD/compile-netware-END | 4 +- netware/BUILD/compile-netware-all | 1 + netware/BUILD/compile-netware-standard | 2 +- netware/BUILD/mwenv | 12 +- netware/BUILD/nwbootstrap | 15 +- netware/Makefile.am | 8 +- netware/isamchk.def | 1 + netware/my_manage.c | 8 +- netware/myisamchk.def | 1 + netware/myisamlog.def | 1 + netware/myisampack.def | 1 + netware/mysql_test_run.c | 193 ++++++++++++++++++------- netware/mysqlbinlog.def | 1 + netware/mysqlcheck.def | 1 + netware/mysqld_safe.c | 4 +- netware/mysqldump.def | 1 + netware/mysqlimport.def | 1 + 18 files changed, 186 insertions(+), 74 deletions(-) diff --git a/netware/BUILD/compile-linux-tools b/netware/BUILD/compile-linux-tools index 3590a900338..886f866d674 100755 --- a/netware/BUILD/compile-linux-tools +++ b/netware/BUILD/compile-linux-tools @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/sh # debug #set -x @@ -46,6 +46,9 @@ make clean config.h (cd sql; make gen_lex_hash) (cd strings; make conf_to_src) +# so the file will be linked +(cd sql; make sql_yacc.cc) + # copying required linux tools cp extra/comp_err extra/comp_err.linux cp libmysql/conf_to_src libmysql/conf_to_src.linux diff --git a/netware/BUILD/compile-netware-END b/netware/BUILD/compile-netware-END index e0097484500..2bd59f97114 100755 --- a/netware/BUILD/compile-netware-END +++ b/netware/BUILD/compile-netware-END @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/sh # debug #set -x @@ -29,7 +29,7 @@ rm -rf Makefile.in.bk make clean bin-dist # mark the build -for file in *.tar.gz +for file in *.tar.gz *.zip do if (expr "$file" : "mysql-[1-9].*" > /dev/null) then diff --git a/netware/BUILD/compile-netware-all b/netware/BUILD/compile-netware-all index 35d275f3b42..6baff699e94 100755 --- a/netware/BUILD/compile-netware-all +++ b/netware/BUILD/compile-netware-all @@ -8,6 +8,7 @@ set -e path=`dirname $0` +$path/compile-netware-src $path/compile-netware-standard $path/compile-netware-debug #$path/compile-netware-max diff --git a/netware/BUILD/compile-netware-standard b/netware/BUILD/compile-netware-standard index 12cae1f024e..45f5021862c 100755 --- a/netware/BUILD/compile-netware-standard +++ b/netware/BUILD/compile-netware-standard @@ -13,7 +13,7 @@ path=`dirname $0` suffix="standard" extra_configs=" \ - --with-innodb + --with-innodb \ " . $path/compile-netware-END diff --git a/netware/BUILD/mwenv b/netware/BUILD/mwenv index 26794c3f77f..c16ada6552a 100755 --- a/netware/BUILD/mwenv +++ b/netware/BUILD/mwenv @@ -6,9 +6,9 @@ # the default is "F:/mydev" export MYDEV="WINE_BUILD_DIR" -export MWCNWx86Includes="$MYDEV/libc/include" -export MWNWx86Libraries="$MYDEV/libc/imports;$MYDEV/mw/lib" -export MWNWx86LibraryFiles="libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib" +export MWCNWx86Includes="$MYDEV/libc/include;$MYDEV" +export MWNWx86Libraries="$MYDEV/libc/imports;$MYDEV/mw/lib;$MYDEV/mysql-VERSION/netware/BUILD" +export MWNWx86LibraryFiles="libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib;knetware.imp" export WINEPATH="$MYDEV/mw/bin" @@ -19,11 +19,11 @@ export AR='mwldnlm' export AR_FLAGS='-type library -o' export AS='mwasmnlm' export CC='mwccnlm -gccincludes' -export CFLAGS='-dialect c -proc 686 -relax_pointers' +export CFLAGS='-align 8 -proc 686 -relax_pointers -dialect c' export CXX='mwccnlm -gccincludes' -export CXXFLAGS='-dialect c++ -proc 686 -bool on -wchar_t on -relax_pointers -D_WCHAR_T' +export CXXFLAGS='-align 8 -proc 686 -relax_pointers -dialect c++ -bool on -wchar_t on -D_WCHAR_T' export LD='mwldnlm' -export LDFLAGS='-entry _LibCPrelude -exit _LibCPostlude -flags pseudopreemption' +export LDFLAGS='-entry _LibCPrelude -exit _LibCPostlude -map -flags pseudopreemption' export RANLIB=: export STRIP=: diff --git a/netware/BUILD/nwbootstrap b/netware/BUILD/nwbootstrap index 5d068e4e4de..f54775bf054 100755 --- a/netware/BUILD/nwbootstrap +++ b/netware/BUILD/nwbootstrap @@ -11,7 +11,7 @@ path=`dirname $0` # repository direcotry repo_dir=`pwd` -# build direcotry +# build directory build_dir="$HOME/mydev" wine_build_dir="F:/mydev" @@ -147,10 +147,12 @@ then fi # make files writeable +echo "making files writable..." cd $target_dir chmod -R u+rw,g+rw . # edit the mvenv file +echo "updating the mwenv environment file..." mwenv="./netware/BUILD/mwenv" mv -f $mwenv $mwenv.org sed -e "s;WINE_BUILD_DIR;$wine_build_dir;g" \ @@ -158,6 +160,17 @@ sed -e "s;WINE_BUILD_DIR;$wine_build_dir;g" \ -e "s;VERSION;$version;g" $mwenv.org > $mwenv chmod +rwx $mwenv +# edit the def file versions +echo "updating *.def file versions..." +nlm_version=`echo "$version" | sed -e "s;\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*;\1, \2, \3;"` + +for file in ./netware/*.def +do + mv -f $file $file.org + sed -e "s;VERSION.*;VERSION $nlm_version;g" $file.org > $file + rm $file.org +done + # build linux tools echo "compiling linux tools..." ./netware/BUILD/compile-linux-tools diff --git a/netware/Makefile.am b/netware/Makefile.am index 801d144b968..0f5e862c579 100644 --- a/netware/Makefile.am +++ b/netware/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (c) 2002 Novell, Inc. All Rights Reserved. +# Copyright (c) 2002 Novell, Inc. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ mysqld_safe_SOURCES= mysqld_safe.c my_manage.c mysql_install_db_SOURCES= mysql_install_db.c my_manage.c mysql_test_run_SOURCES= mysql_test_run.c my_manage.c libmysql_SOURCES= libmysqlmain.c -libmysql_LDADD = ../libmysql/.libs/libmysqlclient.a +libmysql_LDADD = ../libmysql/.libs/libmysqlclient.a @openssl_libs@ netware_build_files = client/mysql.def client/mysqladmin.def \ client/mysqlbinlog.def client/mysqlcheck.def \ @@ -29,12 +29,12 @@ netware_build_files = client/mysql.def client/mysqladmin.def \ extra/mysql_install.def extra/my_print_defaults.def \ extra/perror.def extra/replace.def \ extra/resolveip.def extra/comp_err.def \ - isam/isamchk.def \ + isam/isamchk.def \ isam/isamlog.def isam/pack_isam.def \ libmysqld/libmysqld.def myisam/myisamchk.def \ myisam/myisamlog.def myisam/myisampack.def \ sql/mysqld.def - + link_sources: set -x; \ for f in $(netware_build_files); do \ diff --git a/netware/isamchk.def b/netware/isamchk.def index 8d756466609..69e8ac0405b 100644 --- a/netware/isamchk.def +++ b/netware/isamchk.def @@ -2,6 +2,7 @@ # ISAM Check #------------------------------------------------------------------------------ MODULE libc.nlm +SCREENNAME "MySQL ISAM Table Check Tool" COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." DESCRIPTION "MySQL ISAM Table Check Tool" VERSION 4, 0 diff --git a/netware/my_manage.c b/netware/my_manage.c index 490438b0485..1c1e75990b4 100644 --- a/netware/my_manage.c +++ b/netware/my_manage.c @@ -157,7 +157,7 @@ int sleep_until_file_deleted(char *pid_file) /****************************************************************************** sleep_until_file_exists() - + Sleep until the given file exists. ******************************************************************************/ @@ -199,9 +199,13 @@ int wait_for_server_start(char *bin_dir, char *user, char *password, int port) add_arg(&al, "--user=%s", user); add_arg(&al, "--password=%s", password); add_arg(&al, "--silent"); + + /** Not supported on NetWare add_arg(&al, "-O"); add_arg(&al, "connect_timeout=10"); add_arg(&al, "-w"); + **/ + add_arg(&al, "--host=localhost"); add_arg(&al, "ping"); @@ -210,7 +214,7 @@ int wait_for_server_start(char *bin_dir, char *user, char *password, int port) for(i = 0; (i < TRY_MAX) && (err = spawn(mysqladmin_file, &al, TRUE, NULL, trash, NULL)); i++) sleep(1); - + // free args free_args(&al); diff --git a/netware/myisamchk.def b/netware/myisamchk.def index 2222a1317e1..cdfe186058f 100644 --- a/netware/myisamchk.def +++ b/netware/myisamchk.def @@ -2,6 +2,7 @@ # MyISAM Check #------------------------------------------------------------------------------ MODULE libc.nlm +SCREENNAME "MySQL MyISAM Table Check Tool" COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." DESCRIPTION "MySQL MyISAM Table Check Tool" VERSION 4, 0 diff --git a/netware/myisamlog.def b/netware/myisamlog.def index bfa673e12be..5c4cbb23361 100644 --- a/netware/myisamlog.def +++ b/netware/myisamlog.def @@ -2,6 +2,7 @@ # MyISAM Log #------------------------------------------------------------------------------ MODULE libc.nlm +SCREENNAME "MySQL MyISAM Table Log Tool" COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." DESCRIPTION "MySQL MyISAM Table Log Tool" VERSION 4, 0 diff --git a/netware/myisampack.def b/netware/myisampack.def index 72403d2591e..9111538c2c0 100644 --- a/netware/myisampack.def +++ b/netware/myisampack.def @@ -2,6 +2,7 @@ # MyISAM Pack #------------------------------------------------------------------------------ MODULE libc.nlm +SCREENNAME "MySQL MyISAM Table Pack Tool" COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." DESCRIPTION "MySQL MyISAM Table Pack Tool" VERSION 4, 0 diff --git a/netware/mysql_test_run.c b/netware/mysql_test_run.c index ff629546793..e1a07baca6c 100644 --- a/netware/mysql_test_run.c +++ b/netware/mysql_test_run.c @@ -7,7 +7,7 @@ (at your option) any later version. This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of + but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. @@ -27,6 +27,7 @@ #include #include #include +#include #include "my_config.h" #include "my_manage.h" @@ -94,6 +95,13 @@ char slave_master_info[PATH_MAX] = ""; char master_init_script[PATH_MAX] = ""; char slave_init_script[PATH_MAX] = ""; +// OpenSSL +char ca_cert[PATH_MAX]; +char server_cert[PATH_MAX]; +char server_key[PATH_MAX]; +char client_cert[PATH_MAX]; +char client_key[PATH_MAX]; + int total_skip = 0; int total_pass = 0; int total_fail = 0; @@ -101,6 +109,7 @@ int total_test = 0; double total_time = 0; +int use_openssl = FALSE; int master_running = FALSE; int slave_running = FALSE; int skip_slave = TRUE; @@ -184,7 +193,7 @@ void install_db(char *datadir) char input[PATH_MAX]; char output[PATH_MAX]; char error[PATH_MAX]; - + // input file snprintf(input, PATH_MAX, "%s/bin/init_db.sql", base_dir); snprintf(output, PATH_MAX, "%s/install.out", datadir); @@ -193,13 +202,14 @@ void install_db(char *datadir) // args init_args(&al); add_arg(&al, mysqld_file); + add_arg(&al, "--no-defaults"); add_arg(&al, "--bootstrap"); add_arg(&al, "--skip-grant-tables"); add_arg(&al, "--basedir=%s", base_dir); add_arg(&al, "--datadir=%s", datadir); add_arg(&al, "--skip-innodb"); add_arg(&al, "--skip-bdb"); - + // spawn if ((err = spawn(mysqld_file, &al, TRUE, input, output, error)) != 0) { @@ -266,15 +276,16 @@ void start_master() int err, i; char master_out[PATH_MAX]; char master_err[PATH_MAX]; - + char temp[PATH_MAX], temp2[PATH_MAX]; + // remove old berkeley db log files that can confuse the server removef("%s/log.*", master_dir); - - // remove stale binary logs - removef("%s/*-bin.*", master_dir); // remove stale binary logs - removef("%s/*.index", master_dir); + removef("%s/var/log/*-bin.*", mysql_test_dir); + + // remove stale binary logs + removef("%s/var/log/*.index", mysql_test_dir); // remove master.info file removef("%s/master.info", master_dir); @@ -284,11 +295,26 @@ void start_master() // remove relay-log.info file removef("%s/relay-log.info", master_dir); - + // init script if (master_init_script[0] != NULL) { // run_init_script(master_init_script); + + // TODO: use the scripts + if (strindex(master_init_script, "repair_part2-master.sh") != NULL) + { + FILE *fp; + + // create an empty index file + snprintf(temp, PATH_MAX, "%s/test/t1.MYI", master_dir); + fp = fopen(temp, "wb+"); + + fputs("1", fp); + + fclose(fp); + } + } // redirection files @@ -296,12 +322,17 @@ void start_master() mysql_test_dir, restarts); snprintf(master_err, PATH_MAX, "%s/var/run/master%u.err", mysql_test_dir, restarts); - + + snprintf(temp2,PATH_MAX,"%s/var",mysql_test_dir); + mkdir(temp2,0); + snprintf(temp2,PATH_MAX,"%s/var/log",mysql_test_dir); + mkdir(temp2,0); + // args init_args(&al); add_arg(&al, "%s", mysqld_file); add_arg(&al, "--no-defaults"); - add_arg(&al, "--log-bin=master-bin"); + add_arg(&al, "--log-bin=%s/var/log/master-bin",mysql_test_dir); add_arg(&al, "--server-id=1"); add_arg(&al, "--basedir=%s", base_dir); add_arg(&al, "--port=%u", master_port); @@ -312,11 +343,18 @@ void start_master() add_arg(&al, "--character-sets-dir=%s", char_dir); add_arg(&al, "--tmpdir=%s", mysql_tmp_dir); add_arg(&al, "--language=%s", lang_dir); - + + if (use_openssl) + { + add_arg(&al, "--ssl-ca=%s", ca_cert); + add_arg(&al, "--ssl-cert=%s", server_cert); + add_arg(&al, "--ssl-key=%s", server_key); + } + // $MASTER_40_ARGS add_arg(&al, "--rpl-recovery-rank=1"); add_arg(&al, "--init-rpl-role=master"); - + // $SMALL_SERVER add_arg(&al, "-O"); add_arg(&al, "key_buffer_size=1M"); @@ -329,17 +367,24 @@ void start_master() if (master_opt[0] != NULL) { char *p; + char *temp; p = (char *)strtok(master_opt, " \t"); - while(p) + if ((temp = strstr(p, "timezone")) == NULL) { - add_arg(&al, "%s", p); - - p = (char *)strtok(NULL, " \t"); + while(p) + { + add_arg(&al, "%s", p); + p = (char *)strtok(NULL, " \t"); + } + } + else + { + //do nothing } } - + // remove the pid file if it exists remove(master_pid); @@ -347,7 +392,7 @@ void start_master() if ((err = spawn(mysqld_file, &al, FALSE, NULL, master_out, master_err)) == 0) { sleep_until_file_exists(master_pid); - + if ((err = wait_for_server_start(bin_dir, user, password, master_port)) == 0) { master_running = TRUE; @@ -361,7 +406,7 @@ void start_master() { log_error("Unable to start master server."); } - + // free_args free_args(&al); } @@ -409,7 +454,7 @@ void start_slave() { // create empty master.info file snprintf(temp, PATH_MAX, "%s/master.info", slave_dir); - close(open(temp, O_WRONLY | O_CREAT)); + close(open(temp, O_WRONLY | O_CREAT,S_IRWXU|S_IRWXG|S_IRWXO)); } else if (strindex(slave_init_script, "rpl000017-slave.sh") != NULL) { @@ -434,7 +479,7 @@ void start_slave() { // create empty master.info file snprintf(temp, PATH_MAX, "%s/master.info", slave_dir); - close(open(temp, O_WRONLY | O_CREAT)); + close(open(temp, O_WRONLY | O_CREAT,S_IRWXU|S_IRWXG|S_IRWXO)); } } @@ -458,7 +503,7 @@ void start_slave() add_arg(&al, "--core"); add_arg(&al, "--tmpdir=%s", mysql_tmp_dir); add_arg(&al, "--language=%s", lang_dir); - + add_arg(&al, "--exit-info=256"); add_arg(&al, "--log-slave-updates"); add_arg(&al, "--init-rpl-role=slave"); @@ -474,6 +519,13 @@ void start_slave() add_arg(&al, "-O"); add_arg(&al, "slave_net_timeout=10"); + if (use_openssl) + { + add_arg(&al, "--ssl-ca=%s", ca_cert); + add_arg(&al, "--ssl-cert=%s", server_cert); + add_arg(&al, "--ssl-key=%s", server_key); + } + // slave master info if (slave_master_info[0] != NULL) { @@ -557,10 +609,11 @@ void start_slave() ******************************************************************************/ void mysql_start() { + log_info("Starting the MySQL server(s): %u", ++restarts); start_master(); start_slave(); - + // activate the test screen ActivateScreen(getscreenhandle()); } @@ -568,17 +621,17 @@ void mysql_start() /****************************************************************************** stop_slave() - + Stop the slave server. ******************************************************************************/ void stop_slave() { int err; - + // running? if (!slave_running) return; - + // stop if ((err = stop_server(bin_dir, user, password, slave_port, slave_pid)) == 0) { @@ -593,17 +646,17 @@ void stop_slave() /****************************************************************************** stop_master() - + Stop the master server. ******************************************************************************/ void stop_master() { int err; - + // running? if (!master_running) return; - + if ((err = stop_server(bin_dir, user, password, master_port, master_pid)) == 0) { master_running = FALSE; @@ -617,16 +670,17 @@ void stop_master() /****************************************************************************** mysql_stop() - + Stop the mysql servers. ******************************************************************************/ void mysql_stop() { + log_info("Stopping the MySQL server(s)..."); stop_master(); stop_slave(); - + // activate the test screen ActivateScreen(getscreenhandle()); } @@ -634,13 +688,12 @@ void mysql_stop() /****************************************************************************** mysql_restart() - + Restart the mysql servers. ******************************************************************************/ void mysql_restart() { - log_info("Restarting the MySQL server(s): %u", ++restarts); mysql_stop(); @@ -650,7 +703,7 @@ void mysql_restart() /****************************************************************************** read_option() - + Read the option file. ******************************************************************************/ @@ -660,10 +713,10 @@ int read_option(char *opt_file, char *opt) int result; char *p; char buf[PATH_MAX]; - + // copy current option strncpy(buf, opt, PATH_MAX); - + // open options file fd = open(opt_file, O_RDONLY); @@ -771,14 +824,19 @@ void run_test(char *test) if (stat(test_file, &info)) { snprintf(test_file, PATH_MAX, "%s/%s%s", test_dir, test, TEST_SUFFIX); + if(access(test_file,0)) + { + printf("Invalid test name %s, %s file not found\n",test,test_file); + return; + } } - + snprintf(result_file, PATH_MAX, "%s/%s%s", result_dir, test, NW_RESULT_SUFFIX); if (stat(result_file, &info)) { snprintf(result_file, PATH_MAX, "%s/%s%s", result_dir, test, RESULT_SUFFIX); } - + // init scripts snprintf(master_init_script, PATH_MAX, "%s/%s-master.sh", test_dir, test); if (stat(master_init_script, &info)) @@ -826,7 +884,14 @@ void run_test(char *test) add_arg(&al, "-v"); add_arg(&al, "-R"); add_arg(&al, "%s", result_file); - + + if (use_openssl) + { + add_arg(&al, "--ssl-ca=%s", ca_cert); + add_arg(&al, "--ssl-cert=%s", client_cert); + add_arg(&al, "--ssl-key=%s", client_key); + } + // start timer NXGetTime(NX_SINCE_BOOT, NX_USECONDS, &start); @@ -915,7 +980,7 @@ void vlog(char *format, va_list ap) void log(char *format, ...) { va_list ap; - + va_start(ap, format); vlog(format, ap); @@ -1009,8 +1074,10 @@ void die(char *msg) void setup(char *file) { char temp[PATH_MAX]; + char mysqldump_load[PATH_MAX*2],mysqlbinlog_load[PATH_MAX*2]; + char *p; - + // set the timezone for the timestamp test setenv("TZ", "GMT-3", TRUE); @@ -1023,7 +1090,7 @@ void setup(char *file) *p = NULL; strcpy(base_dir, temp); } - + // setup paths snprintf(bin_dir, PATH_MAX, "%s/bin", base_dir); snprintf(mysql_test_dir, PATH_MAX, "%s/mysql-test", base_dir); @@ -1034,7 +1101,18 @@ void setup(char *file) snprintf(slave_dir, PATH_MAX, "%s/var/slave-data", mysql_test_dir); snprintf(lang_dir, PATH_MAX, "%s/share/english", base_dir); snprintf(char_dir, PATH_MAX, "%s/share/charsets", base_dir); - + +#ifdef HAVE_OPENSSL + use_openssl = TRUE; +#endif // HAVE_OPENSSL + + // OpenSSL paths + snprintf(ca_cert, PATH_MAX, "%s/SSL/cacert.pem", base_dir); + snprintf(server_cert, PATH_MAX, "%s/SSL/server-cert.pem", base_dir); + snprintf(server_key, PATH_MAX, "%s/SSL/server-key.pem", base_dir); + snprintf(client_cert, PATH_MAX, "%s/SSL/client-cert.pem", base_dir); + snprintf(client_key, PATH_MAX, "%s/SSL/client-key.pem", base_dir); + // setup files snprintf(mysqld_file, PATH_MAX, "%s/mysqld", bin_dir); snprintf(mysqltest_file, PATH_MAX, "%s/mysqltest", bin_dir); @@ -1048,14 +1126,19 @@ void setup(char *file) { log_errno("Unable to create log file."); } - + // prepare skip test list while((p = strchr(skip_test, ',')) != NULL) *p = ' '; strcpy(temp, strlwr(skip_test)); snprintf(skip_test, PATH_MAX, " %s ", temp); - - // enviornment + + snprintf(mysqlbinlog_load,PATH_MAX*2,"%s/mysqlbinlog --no-defaults --local-load=%s",bin_dir,mysql_tmp_dir); + snprintf(mysqldump_load,PATH_MAX*2,"%s/mysqldump --no-defaults -uroot --port=%d",bin_dir,master_port); + // environment setenv("MYSQL_TEST_DIR", mysql_test_dir, 1); + setenv("MYSQL_DUMP", mysqldump_load, 1); + setenv("MYSQL_BINLOG", mysqlbinlog_load, 1); + setenv("MASTER_MYPORT", "9306", 1); } /****************************************************************************** @@ -1087,7 +1170,7 @@ int main(int argc, char **argv) int i; // single test - single_test = TRUE; + single_test = TRUE; for (i = 1; i < argc; i++) { @@ -1131,21 +1214,21 @@ int main(int argc, char **argv) closedir(dir); } - - log(DASH); - log("\n"); - - log("Ending Tests...\n"); // stop server mysql_stop(); + log(DASH); + log("\n"); + + log("Ending Tests...\n"); + // report stats report_stats(); - + // close log if (log_fd) fclose(log_fd); - + // keep results up pressanykey(); diff --git a/netware/mysqlbinlog.def b/netware/mysqlbinlog.def index 74d8e168b00..89677b4a353 100644 --- a/netware/mysqlbinlog.def +++ b/netware/mysqlbinlog.def @@ -2,6 +2,7 @@ # MySQL Binary Log #------------------------------------------------------------------------------ MODULE libc.nlm +SCREENNAME "MySQL Binary Log Dump Tool" COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." DESCRIPTION "MySQL Binary Log Dump Tool" VERSION 4, 0 diff --git a/netware/mysqlcheck.def b/netware/mysqlcheck.def index 6e476556ffe..8820e9aae8e 100644 --- a/netware/mysqlcheck.def +++ b/netware/mysqlcheck.def @@ -2,6 +2,7 @@ # MySQL Client #------------------------------------------------------------------------------ MODULE libc.nlm +SCREENNAME "MySQL Check Tool" COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." DESCRIPTION "MySQL Check Tool" VERSION 4, 0 diff --git a/netware/mysqld_safe.c b/netware/mysqld_safe.c index 845797e0022..a815497ac0f 100644 --- a/netware/mysqld_safe.c +++ b/netware/mysqld_safe.c @@ -456,10 +456,10 @@ void check_data_vol() // retrieve information netware_vol_info_from_name(&vol, buff); - + if ((vol.flags & VOL_NSS_PRESENT) == 0) { - log("Error: The data directory is not on an NSS volume!\n\n"); + log("Error: Either the data directory does not exist or is not on an NSS volume!\n\n"); exit(-1); } } diff --git a/netware/mysqldump.def b/netware/mysqldump.def index f267b60ff77..901c9b262dc 100644 --- a/netware/mysqldump.def +++ b/netware/mysqldump.def @@ -2,6 +2,7 @@ # MySQL Admin #------------------------------------------------------------------------------ MODULE libc.nlm +SCREENNAME "MySQL Dump Tool" COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." DESCRIPTION "MySQL Dump Tool" VERSION 4, 0 diff --git a/netware/mysqlimport.def b/netware/mysqlimport.def index 69e9f6eada5..d6f7fcb6bbd 100644 --- a/netware/mysqlimport.def +++ b/netware/mysqlimport.def @@ -2,6 +2,7 @@ # MySQL Client #------------------------------------------------------------------------------ MODULE libc.nlm +SCREENNAME "MySQL Import" COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." DESCRIPTION "MySQL Import Tool" VERSION 4, 0 From 90c6ecca93200d2f1a6c5c852f837af875d0cba8 Mon Sep 17 00:00:00 2001 From: "serg@serg.mylan" <> Date: Tue, 13 Jan 2004 12:31:25 +0100 Subject: [PATCH 2/8] BUG#2304 - HANDLER and tables in non-current db --- mysql-test/r/handler.result | 18 ++++++++++++++++++ mysql-test/t/handler.test | 16 ++++++++++++++++ sql/sql_handler.cc | 7 +++---- sql/sql_yacc.yy | 15 ++++++++++----- 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/handler.result b/mysql-test/r/handler.result index 5467ea6dec2..1cfc3a9de8b 100644 --- a/mysql-test/r/handler.result +++ b/mysql-test/r/handler.result @@ -173,3 +173,21 @@ Unknown column 'W' in 'field list' handler t1 read a=(a); Wrong arguments to HANDLER ... READ drop table t1; +create table t1 (a char(5)); +insert into t1 values ("Ok"); +handler t1 open as t; +handler t read first; +a +Ok +use mysql; +handler t read first; +a +Ok +handler t close; +handler test.t1 open as t; +handler t read first; +a +Ok +handler t close; +use test; +drop table t1; diff --git a/mysql-test/t/handler.test b/mysql-test/t/handler.test index 736091a52a9..936902fd9bf 100644 --- a/mysql-test/t/handler.test +++ b/mysql-test/t/handler.test @@ -107,3 +107,19 @@ handler t1 read a=(W); handler t1 read a=(a); drop table t1; +# +# BUG#2304 +# +create table t1 (a char(5)); +insert into t1 values ("Ok"); +handler t1 open as t; +handler t read first; +use mysql; +handler t read first; +handler t close; +handler test.t1 open as t; +handler t read first; +handler t close; +use test; +drop table t1; + diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index 208545a435b..963111015da 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -276,14 +276,13 @@ static TABLE **find_table_ptr_by_name(THD *thd, const char *db, int dblen; TABLE **ptr; - if (!db || ! *db) - db= thd->db ? thd->db : ""; - dblen=strlen(db)+1; + DBUG_ASSERT(db); + dblen=*db ? strlen(db)+1 : 0; ptr=&(thd->handler_tables); for (TABLE *table=*ptr; table ; table=*ptr) { - if (!memcmp(table->table_cache_key, db, dblen) && + if ((!dblen || !memcmp(table->table_cache_key, db, dblen)) && !my_strcasecmp((is_alias ? table->table_name : table->real_name),table_name)) { if (table->version != refresh_version) diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index b5b9a4cdfb7..991a5f500e6 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -501,7 +501,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); opt_table_alias %type - table_ident + table_ident table_ident_ref %type remember_name remember_end opt_len opt_ident opt_db text_or_password @@ -3243,8 +3243,13 @@ field_ident: table_ident: ident { $$=new Table_ident($1); } | ident '.' ident { $$=new Table_ident($1,$3,0);} - | '.' ident { $$=new Table_ident($2);} - /* For Delphi */; + | '.' ident { $$=new Table_ident($2);} /* For Delphi */ + ; + +table_ident_ref: + ident { LEX_STRING db={"",0}; $$=new Table_ident(db,$1,0); } + | ident '.' ident { $$=new Table_ident($1,$3,0);} + ; ident: IDENT { $$=$1; } @@ -3610,13 +3615,13 @@ handler: if (!add_table_to_list($2,$4,0)) YYABORT; } - | HANDLER_SYM table_ident CLOSE_SYM + | HANDLER_SYM table_ident_ref CLOSE_SYM { Lex->sql_command = SQLCOM_HA_CLOSE; if (!add_table_to_list($2,0,0)) YYABORT; } - | HANDLER_SYM table_ident READ_SYM + | HANDLER_SYM table_ident_ref READ_SYM { LEX *lex=Lex; lex->sql_command = SQLCOM_HA_READ; From 20733eed527e547e93cc67b397503081c2f155fc Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Tue, 13 Jan 2004 19:33:01 +0100 Subject: [PATCH 3/8] - improved wording in mysql_install_db on what to do to set the password for the MySQL root user (BUG#2375) --- scripts/mysql_install_db.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index ba95ff3b5b9..6d6bacd831e 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -340,7 +340,7 @@ then echo fi echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !" - echo "This is done with:" + echo "To do so, start the server, then issue the following commands:" echo "$bindir/mysqladmin -u root password 'new-password'" echo "$bindir/mysqladmin -u root -h $hostname password 'new-password'" echo "See the manual for more instructions." From 808ea1486d43c8d7053d1b7f837601885882f6b9 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Tue, 13 Jan 2004 19:44:33 +0100 Subject: [PATCH 4/8] - be able to build MySQL-shared-compat RPMs for other archs than i386 --- support-files/MySQL-shared-compat.spec.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/support-files/MySQL-shared-compat.spec.sh b/support-files/MySQL-shared-compat.spec.sh index 06dfec1f6f9..2a257a601a1 100644 --- a/support-files/MySQL-shared-compat.spec.sh +++ b/support-files/MySQL-shared-compat.spec.sh @@ -42,8 +42,8 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build Obsoletes: MySQL-shared, mysql-shared Provides: MySQL-shared Summary: MySQL shared libraries for MySQL %{version4} and %{version3} -Source0: MySQL-shared-%{version4}-0.i386.rpm -Source1: MySQL-shared-%{version3}-1.i386.rpm +Source0: MySQL-shared-%{version4}-0.%{_arch}.rpm +Source1: MySQL-shared-%{version3}-1.%{_arch}.rpm # No need to include the RPMs once more - they can be downloaded seperately # if you want to rebuild this package NoSource: 0 From 15e64c35919e54b35f9ecb8f258e4e383b33c66b Mon Sep 17 00:00:00 2001 From: "heikki@hundin.mysql.fi" <> Date: Wed, 14 Jan 2004 16:21:54 +0200 Subject: [PATCH 5/8] row0ins.c: Fix bug: FOREIGN KEY ... ON UPDATE/DELETE NO ACTION must check the foreign key constraint, not ignore it. Peter Gulutzan said that NO ACTION should check the constraint as deferred, at the end of the SQL statement, while RESTRICT should check it immediately. Since we do not have defered constraints in InnoDB, this bug fix makes InnoDB to check NO ACTION constraints immediately, like it checks RESTRICT constraints. --- innobase/row/row0ins.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/innobase/row/row0ins.c b/innobase/row/row0ins.c index 45c5897eee7..d589cc8c9bc 100644 --- a/innobase/row/row0ins.c +++ b/innobase/row/row0ins.c @@ -682,14 +682,6 @@ row_ins_foreign_check_on_constraint( (DICT_FOREIGN_ON_DELETE_CASCADE | DICT_FOREIGN_ON_DELETE_SET_NULL))) { - /* No action is defined: return a foreign key error if - NO ACTION is not specified */ - - if (foreign->type & DICT_FOREIGN_ON_DELETE_NO_ACTION) { - - return(DB_SUCCESS); - } - row_ins_foreign_report_err((char*)"Trying to delete", thr, foreign, btr_pcur_get_rec(pcur), entry); @@ -703,14 +695,6 @@ row_ins_foreign_check_on_constraint( /* This is an UPDATE */ - /* No action is defined: return a foreign key error if - NO ACTION is not specified */ - - if (foreign->type & DICT_FOREIGN_ON_UPDATE_NO_ACTION) { - - return(DB_SUCCESS); - } - row_ins_foreign_report_err((char*)"Trying to update", thr, foreign, btr_pcur_get_rec(pcur), entry); From 5693662fc0f12a7099b0714b837f01f2370eeb3b Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Thu, 15 Jan 2004 16:14:30 +0100 Subject: [PATCH 6/8] - fixed early removing of socket file when multiple instances of mysqld are started via mysqld_safe (BUG#2114) Thanks to Rodrigo Marchant for the suggestion --- scripts/mysqld_safe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index 5d77863c9b4..0f415ccd5f0 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -115,7 +115,6 @@ else ledir=@libexecdir@ fi -safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-@MYSQL_UNIX_ADDR@}} user=@MYSQLD_USER@ niceness=0 @@ -155,6 +154,7 @@ then fi parse_arguments `$print_defaults --loose-verbose $defaults mysqld_safe safe_mysqld` parse_arguments PICK-ARGS-FROM-ARGV "$@" +safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-@MYSQL_UNIX_ADDR@}} if test ! -x $ledir/$MYSQLD then From 8caf856afea5aa945d54641e1e75b5a4913e1c0f Mon Sep 17 00:00:00 2001 From: "serg@serg.mylan" <> Date: Thu, 15 Jan 2004 16:31:27 +0100 Subject: [PATCH 7/8] an obvious bug in _mi_key_cmp fixed (BUG#2295 - range on blobs) --- myisam/mi_search.c | 10 ++++++---- mysql-test/r/range.result | 8 ++++++++ mysql-test/t/range.test | 12 ++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/myisam/mi_search.c b/myisam/mi_search.c index 5d0750f6a82..c6ee18a8477 100644 --- a/myisam/mi_search.c +++ b/myisam/mi_search.c @@ -840,9 +840,11 @@ int _mi_key_cmp(register MI_KEYSEG *keyseg, register uchar *a, break; case HA_KEYTYPE_VARTEXT: { - int a_length,b_length,pack_length; + int a_length,full_a_length,b_length,full_b_length,pack_length; get_key_length(a_length,a); get_key_pack_length(b_length,pack_length,b); + full_a_length=a_length; + full_b_length=b_length; next_key_length=key_length-b_length-pack_length; if (!(nextflag & (SEARCH_PREFIX | SEARCH_UPDATE))) @@ -857,8 +859,8 @@ int _mi_key_cmp(register MI_KEYSEG *keyseg, register uchar *a, (my_bool) ((nextflag & SEARCH_PREFIX) && next_key_length <= 0)))) return ((keyseg->flag & HA_REVERSE_SORT) ? -flag : flag); - a+=a_length; - b+=b_length; + a+=full_a_length; + b+=full_b_length; break; } break; @@ -963,7 +965,7 @@ int _mi_key_cmp(register MI_KEYSEG *keyseg, register uchar *a, if (keyseg->flag & HA_REVERSE_SORT) { - swap(uchar*,a,b); + swap(uchar*,a,b); swap_flag=1; /* Remember swap of a & b */ end= a+ (int) (end-b); } diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index e87df9a6c24..45d20a8fced 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -300,3 +300,11 @@ SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1); COUNT(*) 6 DROP TABLE t1; +create table t1(a text not null, b text not null, c text not null, index (a(10),b(10),c(10))); +insert into t1 values('807780', '477', '165'); +insert into t1 values('807780', '477', '162'); +insert into t1 values('807780', '472', '162'); +select * from t1 where a='807780' and b='477' and c='165'; +a b c +807780 477 165 +drop table t1; diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index 364ea2d4195..9d9feaa4edc 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -248,3 +248,15 @@ INSERT INTO t1 VALUES (0,1,0),(0,1,0),(0,1,0); SELECT COUNT(*) FROM t1 WHERE (c=0 and a=1) or (c=0 and b=1); SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1); DROP TABLE t1; + +# +# BUG#2295 - range on blob +# + +create table t1(a text not null, b text not null, c text not null, index (a(10),b(10),c(10))); +insert into t1 values('807780', '477', '165'); +insert into t1 values('807780', '477', '162'); +insert into t1 values('807780', '472', '162'); +select * from t1 where a='807780' and b='477' and c='165'; +drop table t1; + From f16a71e2c54bd8b6daf4647f05b962f4972a58c7 Mon Sep 17 00:00:00 2001 From: "greg@mysql.com" <> Date: Thu, 15 Jan 2004 16:08:32 -0100 Subject: [PATCH 8/8] Wrote small Windows build automation script in preparation for re-working project files and enabling remote builds. --- Build-tools/Do-win-build | 82 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100755 Build-tools/Do-win-build diff --git a/Build-tools/Do-win-build b/Build-tools/Do-win-build new file mode 100755 index 00000000000..b446ba6f601 --- /dev/null +++ b/Build-tools/Do-win-build @@ -0,0 +1,82 @@ +#!/usr/bin/perl -w + +use Getopt::Long; + +$opt_help=0; +$opt_tarball=$opt_builddir=""; + +GetOptions( + "help", + "tarball=s", + "builddir=s", +) || print_help(); + +print_help() if ($opt_help); + +chomp($MSDEV=`which msdev`); + +if (!$opt_builddir) { + $opt_builddir = "/cygdrive/c/mysql-win-build"; +} + +$opt_tarball =~ /(mysql[^\/]*)-win-src\.tar/; +$mysqlver=$1; +$basedir = "$opt_builddir/$mysqlver"; + +# Make sure build dir exists +mkdir($opt_builddir); +# Clean out any previous build +system("rm -rf $basedir"); +mkdir($basedir); +mkdir("$basedir/tarball"); + +system("cp $opt_tarball $basedir/tarball"); + +if (!chdir($basedir)) +{ + print "Do-win-build error: Could not change to $opt_builddir"; + exit 1; +} + +mkdir("build"); +chdir("build"); + +system("tar -zxvf ../tarball/$mysqlver-win-src.tar.gz"); + +chdir($mysqlver); + +system("\"$MSDEV\" mysql.dsw /MAKE \"ALL\" /OUT $mysqlver-build.log"); + +# +# Print a help text message +# +sub print_help +{ + print < +Set the Cygwin path to build under; the tarball will actually +be moved to /mysql-/tarball and extracted under +/mysql-/build. +Default: /cygdrive/c/mysql-win-build + +--tarball= +Windows source tarball to use for this build. Must be of the form +mysql[com]-x.x.x-win-src.tar.gz (REQUIRED) + +EOF + exit 1; +}