summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extra/yassl/testsuite/test.hpp5
-rw-r--r--include/mysql.h6
-rw-r--r--libmysqld/lib_sql.cc1
-rwxr-xr-xmysql-test/mysql-test-run.pl207
-rwxr-xr-xnetware/BUILD/compile-netware-END9
-rwxr-xr-xnetware/BUILD/mwenv10
-rw-r--r--vio/viossl.c5
-rw-r--r--vio/viosslfactories.c4
8 files changed, 162 insertions, 85 deletions
diff --git a/extra/yassl/testsuite/test.hpp b/extra/yassl/testsuite/test.hpp
index 0266c802657..b23b36f0ba2 100644
--- a/extra/yassl/testsuite/test.hpp
+++ b/extra/yassl/testsuite/test.hpp
@@ -27,9 +27,12 @@
#endif /* _WIN32 */
-#if !defined(_SOCKLEN_T) && (defined(_WIN32) || defined(__NETWARE__))
+#if !defined(_SOCKLEN_T) && defined(_WIN32)
typedef int socklen_t;
#endif
+#if !defined(_SOCKLEN_T) && defined(__NETWARE__)
+ typedef size_t socklen_t;
+#endif
// Check type of third arg to accept
diff --git a/include/mysql.h b/include/mysql.h
index ae4a8222c5b..8ef3f1273ec 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -293,12 +293,6 @@ typedef struct st_mysql
/* needed for embedded server - no net buffer to store the 'info' */
char *info_buffer;
#endif
- /*
- In embedded server it points to the statement that is processed
- in the current query. We store some results directly in statement
- fields then.
- */
- struct st_mysql_stmt *current_stmt;
} MYSQL;
typedef struct st_mysql_res {
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index 5ac2c163c4e..b5efd4a82af 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -100,7 +100,6 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
mysql->affected_rows= ~(my_ulonglong) 0;
mysql->field_count= 0;
net->last_errno= 0;
- mysql->current_stmt= stmt;
thd->store_globals(); // Fix if more than one connect
/*
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 286bb8a11c5..f429bac850d 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -1295,6 +1295,54 @@ sub collect_mysqld_features () {
}
+sub executable_setup_im () {
+
+ # Look for instance manager binary - mysqlmanager
+ $exe_im=
+ mtr_exe_maybe_exists(
+ "$glob_basedir/server-tools/instance-manager/mysqlmanager",
+ "$glob_basedir/libexec/mysqlmanager");
+
+ return ($exe_im eq "");
+}
+
+sub executable_setup_ndb () {
+
+ # Look for ndb tols and binaries
+ my $ndb_path= mtr_file_exists("$glob_basedir/ndb",
+ "$glob_basedir/storage/ndb",
+ "$glob_basedir/bin");
+
+ $exe_ndbd=
+ mtr_exe_maybe_exists("$ndb_path/src/kernel/ndbd",
+ "$ndb_path/ndbd");
+ $exe_ndb_mgm=
+ mtr_exe_maybe_exists("$ndb_path/src/mgmclient/ndb_mgm",
+ "$ndb_path/ndb_mgm");
+ $exe_ndb_mgmd=
+ mtr_exe_maybe_exists("$ndb_path/src/mgmsrv/ndb_mgmd",
+ "$ndb_path/ndb_mgmd");
+ $exe_ndb_waiter=
+ mtr_exe_maybe_exists("$ndb_path/tools/ndb_waiter",
+ "$ndb_path/ndb_waiter");
+
+ # May not exist
+ $path_ndb_tools_dir= mtr_file_exists("$ndb_path/tools",
+ "$ndb_path");
+ # May not exist
+ $path_ndb_examples_dir=
+ mtr_file_exists("$ndb_path/ndbapi-examples",
+ "$ndb_path/examples");
+ # May not exist
+ $exe_ndb_example=
+ mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
+
+ return ( $exe_ndbd eq "" or
+ $exe_ndb_mgm eq "" or
+ $exe_ndb_mgmd eq "" or
+ $exe_ndb_waiter eq "");
+}
+
sub executable_setup () {
#
@@ -1333,20 +1381,6 @@ sub executable_setup () {
"$glob_basedir/extra/release/perror",
"$glob_basedir/extra/debug/perror");
-
- if ( ! $opt_skip_im )
- {
- # Look for instance manager binary - mysqlmanager
- $exe_im=
- mtr_exe_exists(
- "$glob_basedir/server-tools/instance-manager/mysqlmanager",
- "$glob_basedir/libexec/mysqlmanager");
- }
- else
- {
- $exe_im= "not_available";
- }
-
# Look for the client binaries
$exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck");
$exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump");
@@ -1368,35 +1402,25 @@ sub executable_setup () {
"$path_client_bindir/mysql_fix_privilege_tables");
}
- if ( ! $opt_skip_ndbcluster)
- {
- # Look for ndb tols and binaries
- my $ndb_path= mtr_path_exists("$glob_basedir/ndb",
- "$glob_basedir/storage/ndb",
- "$glob_basedir/bin");
-
- $path_ndb_tools_dir= mtr_path_exists("$ndb_path/tools",
- "$ndb_path");
- $exe_ndb_mgm=
- mtr_exe_exists("$ndb_path/src/mgmclient/ndb_mgm",
- "$ndb_path/ndb_mgm");
- $exe_ndb_mgmd=
- mtr_exe_exists("$ndb_path/src/mgmsrv/ndb_mgmd",
- "$ndb_path/ndb_mgmd");
- $exe_ndb_waiter=
- mtr_exe_exists("$ndb_path/tools/ndb_waiter",
- "$ndb_path/ndb_waiter");
- $exe_ndbd=
- mtr_exe_exists("$ndb_path/src/kernel/ndbd",
- "$ndb_path/ndbd");
-
- # May not exist
- $path_ndb_examples_dir=
- mtr_file_exists("$ndb_path/ndbapi-examples",
- "$ndb_path/examples");
- # May not exist
- $exe_ndb_example=
- mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
+
+ if ( ! $opt_skip_ndbcluster and executable_setup_ndb())
+ {
+ mtr_warning("Could not find all required ndb binaries, " .
+ "all ndb tests will fail, use --skip-ndbcluster to " .
+ "skip testing it.");
+
+ foreach my $cluster (@{$clusters})
+ {
+ $cluster->{"executable_setup_failed"}= 1;
+ }
+ }
+
+ if ( ! $opt_skip_im and executable_setup_im())
+ {
+ mtr_warning("Could not find all required instance manager binaries, " .
+ "all im tests will fail, use --skip-im to " .
+ "continue without instance manager");
+ $instance_manager->{"executable_setup_failed"}= 1;
}
# Look for the udf_example library
@@ -1424,7 +1448,8 @@ sub executable_setup () {
if ( $glob_use_embedded_server )
{
$exe_mysql_client_test=
- mtr_exe_maybe_exists("$glob_basedir/libmysqld/examples/mysql_client_test_embedded");
+ mtr_exe_maybe_exists(
+ "$glob_basedir/libmysqld/examples/mysql_client_test_embedded");
}
else
{
@@ -1567,19 +1592,28 @@ sub environment_setup () {
# ----------------------------------------------------
# Setup env for IM
# ----------------------------------------------------
- $ENV{'IM_EXE'}= $exe_im;
- $ENV{'IM_PATH_PID'}= $instance_manager->{path_pid};
- $ENV{'IM_PATH_ANGEL_PID'}= $instance_manager->{path_angel_pid};
- $ENV{'IM_PORT'}= $instance_manager->{port};
- $ENV{'IM_DEFAULTS_PATH'}= $instance_manager->{defaults_file};
- $ENV{'IM_PASSWORD_PATH'}= $instance_manager->{password_file};
-
- $ENV{'IM_MYSQLD1_SOCK'}= $instance_manager->{instances}->[0]->{path_sock};
- $ENV{'IM_MYSQLD1_PORT'}= $instance_manager->{instances}->[0]->{port};
- $ENV{'IM_MYSQLD1_PATH_PID'}=$instance_manager->{instances}->[0]->{path_pid};
- $ENV{'IM_MYSQLD2_SOCK'}= $instance_manager->{instances}->[1]->{path_sock};
- $ENV{'IM_MYSQLD2_PORT'}= $instance_manager->{instances}->[1]->{port};
- $ENV{'IM_MYSQLD2_PATH_PID'}=$instance_manager->{instances}->[1]->{path_pid};
+ if ( ! $opt_skip_im )
+ {
+ $ENV{'IM_EXE'}= $exe_im;
+ $ENV{'IM_PATH_PID'}= $instance_manager->{path_pid};
+ $ENV{'IM_PATH_ANGEL_PID'}= $instance_manager->{path_angel_pid};
+ $ENV{'IM_PORT'}= $instance_manager->{port};
+ $ENV{'IM_DEFAULTS_PATH'}= $instance_manager->{defaults_file};
+ $ENV{'IM_PASSWORD_PATH'}= $instance_manager->{password_file};
+
+ $ENV{'IM_MYSQLD1_SOCK'}=
+ $instance_manager->{instances}->[0]->{path_sock};
+ $ENV{'IM_MYSQLD1_PORT'}=
+ $instance_manager->{instances}->[0]->{port};
+ $ENV{'IM_MYSQLD1_PATH_PID'}=
+ $instance_manager->{instances}->[0]->{path_pid};
+ $ENV{'IM_MYSQLD2_SOCK'}=
+ $instance_manager->{instances}->[1]->{path_sock};
+ $ENV{'IM_MYSQLD2_PORT'}=
+ $instance_manager->{instances}->[1]->{port};
+ $ENV{'IM_MYSQLD2_PATH_PID'}=
+ $instance_manager->{instances}->[1]->{path_pid};
+ }
# ----------------------------------------------------
# Setup env so childs can execute mysqlcheck
@@ -1834,6 +1868,11 @@ sub kill_running_servers () {
if ( ! -d $opt_vardir )
{
+ if ( -l $opt_vardir and ! -d readlink($opt_vardir) )
+ {
+ mtr_report("Removing $opt_vardir symlink without destination");
+ unlink($opt_vardir);
+ }
# The "var" dir does not exist already
# the processes that mtr_kill_leftovers start will write
# their log files to var/log so it should be created
@@ -2037,14 +2076,6 @@ sub check_ndbcluster_support ($) {
$opt_skip_ndbcluster_slave= 1;
return;
}
- elsif ( -e "$glob_basedir/bin" && ! -f "$glob_basedir/bin/ndbd")
- {
- # Binary dist with a mysqld that supports ndb, but no ndbd found
- mtr_report("Skipping ndbcluster, can't fint binaries");
- $opt_skip_ndbcluster= 1;
- $opt_skip_ndbcluster_slave= 1;
- return;
- }
$glob_ndbcluster_supported= 1;
mtr_report("Using ndbcluster when necessary, mysqld supports it");
@@ -2475,7 +2506,8 @@ sub mysql_install_db () {
my $cluster_started_ok= 1; # Assume it can be started
- if ($opt_skip_ndbcluster || $glob_use_running_ndbcluster)
+ if ($opt_skip_ndbcluster || $glob_use_running_ndbcluster ||
+ $clusters->[0]->{executable_setup_failed})
{
# Don't install master cluster
}
@@ -2486,7 +2518,8 @@ sub mysql_install_db () {
}
if ($max_slave_num == 0 ||
- $opt_skip_ndbcluster_slave || $glob_use_running_ndbcluster_slave)
+ $opt_skip_ndbcluster_slave || $glob_use_running_ndbcluster_slave ||
+ $clusters->[1]->{executable_setup_failed})
{
# Don't install slave cluster
}
@@ -2760,6 +2793,16 @@ sub run_testcase_check_skip_test($)
last if ($opt_skip_ndbcluster_slave and
$cluster->{'name'} eq 'Slave');
+ # If test needs this cluster, check binaries was found ok
+ if ( $cluster->{'executable_setup_failed'} )
+ {
+ mtr_report_test_name($tinfo);
+ $tinfo->{comment}=
+ "Failed to find cluster binaries";
+ mtr_report_test_failed($tinfo);
+ return 1;
+ }
+
# If test needs this cluster, check it was installed ok
if ( !$cluster->{'installed_ok'} )
{
@@ -2769,6 +2812,20 @@ sub run_testcase_check_skip_test($)
mtr_report_test_failed($tinfo);
return 1;
}
+
+ }
+ }
+
+ if ( $tinfo->{'component_id'} eq 'im' )
+ {
+ # If test needs im, check binaries was found ok
+ if ( $instance_manager->{'executable_setup_failed'} )
+ {
+ mtr_report_test_name($tinfo);
+ $tinfo->{comment}=
+ "Failed to find MySQL manager binaries";
+ mtr_report_test_failed($tinfo);
+ return 1;
}
}
@@ -2880,6 +2937,13 @@ sub find_testcase_skipped_reason($)
sub run_testcase ($) {
my $tinfo= shift;
+ # -------------------------------------------------------
+ # Init variables that can change between each test case
+ # -------------------------------------------------------
+
+ $ENV{'TZ'}= $tinfo->{'timezone'};
+ mtr_verbose("Starting server with timezone: $tinfo->{'timezone'}");
+
my $master_restart= run_testcase_need_master_restart($tinfo);
my $slave_restart= run_testcase_need_slave_restart($tinfo);
@@ -3409,6 +3473,9 @@ sub mysqld_start ($$$) {
my $type= $mysqld->{'type'};
my $idx= $mysqld->{'idx'};
+ mtr_error("Internal error: mysqld should never be started for embedded")
+ if $glob_use_embedded_server;
+
if ( $type eq 'master' )
{
$exe= $exe_master_mysqld;
@@ -3849,12 +3916,6 @@ sub run_testcase_start_servers($) {
my $tinfo= shift;
my $tname= $tinfo->{'name'};
- # -------------------------------------------------------
- # Init variables that can change between server starts
- # -------------------------------------------------------
- $ENV{'TZ'}= $tinfo->{'timezone'};
- mtr_verbose("Starting server with timezone: $tinfo->{'timezone'}");
-
if ( $tinfo->{'component_id'} eq 'mysqld' )
{
if ( ! $opt_skip_ndbcluster and
diff --git a/netware/BUILD/compile-netware-END b/netware/BUILD/compile-netware-END
index a8d829499bd..6c531ab5c7c 100755
--- a/netware/BUILD/compile-netware-END
+++ b/netware/BUILD/compile-netware-END
@@ -18,8 +18,13 @@ rm -rf Makefile.in.bk
# Setup Metrowerks environment
. $path/mwenv
-# Run autotools(use BUILD/autorun.sh)
-. BUILD/autorun.sh
+# Temporary hack to allow building from source dist
+if [ ! "$USER"=pushbuild ]
+then
+ # Run autotools(use BUILD/autorun.sh)
+ echo "Running autotools again(BUILD/autorun.sh)"
+ . BUILD/autorun.sh
+fi
# configure
./configure $base_configs $extra_configs
diff --git a/netware/BUILD/mwenv b/netware/BUILD/mwenv
index c3869d2ec90..25144b58921 100755
--- a/netware/BUILD/mwenv
+++ b/netware/BUILD/mwenv
@@ -27,8 +27,8 @@ WINE_BUILD_DIR="$base/$WINE_BUILD_DIR"
echo "WINE_BUILD_DIR: $WINE_BUILD_DIR"
# Look for libc, MySQL 5.1.x uses libc-2006 by default
-libcdir="$MYDEV/libc-2006"
-if test ! -d $libcdir
+libc_dir="$MYDEV/libc-2006"
+if [ ! -d `winepath $libc_dir` ]
then
# The libcdir didn't exist, set default
libc_dir="$MYDEV/libc"
@@ -65,5 +65,11 @@ then
export TERM=linux
fi
+# Temporary hack to allow building from source dist
+if [ "$USER"=pushbuild ]
+then
+ export ARFLAGS=$AR_FLAGS
+fi
+
# Print all env. variables
export
diff --git a/vio/viossl.c b/vio/viossl.c
index 9cc4523d32e..b5fd0e11c02 100644
--- a/vio/viossl.c
+++ b/vio/viossl.c
@@ -26,6 +26,10 @@
#ifdef HAVE_OPENSSL
#ifdef __NETWARE__
+
+/* yaSSL already uses BSD sockets */
+#ifndef HAVE_YASSL
+
/*
The default OpenSSL implementation on NetWare uses WinSock.
This code allows us to use the BSD sockets.
@@ -47,6 +51,7 @@ static int SSL_set_fd_bsd(SSL *s, int fd)
#define SSL_set_fd(A, B) SSL_set_fd_bsd((A), (B))
+#endif /* HAVE_YASSL */
#endif /* __NETWARE__ */
diff --git a/vio/viosslfactories.c b/vio/viosslfactories.c
index ca7a96d5801..bce70078b3e 100644
--- a/vio/viosslfactories.c
+++ b/vio/viosslfactories.c
@@ -180,11 +180,15 @@ void netware_ssl_cleanup()
/* free memory from SSL_library_init() */
EVP_cleanup();
+/* OpenSSL NetWare port specific functions */
+#ifndef HAVE_YASSL
+
/* free global X509 method */
X509_STORE_method_cleanup();
/* free the thread_hash error table */
ERR_free_state_table();
+#endif
}