summaryrefslogtreecommitdiff
path: root/support-files
diff options
context:
space:
mode:
Diffstat (limited to 'support-files')
-rw-r--r--support-files/MacOSX/ReadMe.txt165
-rw-r--r--support-files/Makefile.am4
-rw-r--r--support-files/ccfilter104
-rw-r--r--support-files/compiler_warnings.supp29
-rw-r--r--[-rwxr-xr-x]support-files/config.huge.ini.sh0
-rw-r--r--[-rwxr-xr-x]support-files/config.medium.ini.sh0
-rw-r--r--[-rwxr-xr-x]support-files/config.small.ini.sh0
-rw-r--r--support-files/magic15
-rw-r--r--support-files/my-innodb-heavy-4G.cnf.sh2
-rw-r--r--support-files/my-small.cnf.sh2
-rw-r--r--support-files/mysql.server.sh44
-rw-r--r--support-files/mysql.spec.sh39
12 files changed, 389 insertions, 15 deletions
diff --git a/support-files/MacOSX/ReadMe.txt b/support-files/MacOSX/ReadMe.txt
index b3dcba21705..d1ea8514e79 100644
--- a/support-files/MacOSX/ReadMe.txt
+++ b/support-files/MacOSX/ReadMe.txt
@@ -1,8 +1,163 @@
-You can find information about how to install on Mac OS X at
+2.5. Installing MySQL on Mac OS X
- http://dev.mysql.com/doc/refman/5.1/en/mac-os-x-installation.html
+ You can install MySQL on Mac OS X 10.3.x ("Panther") or newer
+ using a Mac OS X binary package in PKG format instead of the
+ binary tarball distribution. Please note that older versions of
+ Mac OS X (for example, 10.1.x or 10.2.x) are not supported by this
+ package.
-The MySQL Reference Manual is also available in various formats on
-http://dev.mysql.com/doc; if you're interested in the DocBook XML
-sources go to http://svn.mysql.com.
+ The package is located inside a disk image (.dmg) file that you
+ first need to mount by double-clicking its icon in the Finder. It
+ should then mount the image and display its contents.
+
+ To obtain MySQL, see Section 2.1.3, "How to Get MySQL."
+
+Note
+
+ Before proceeding with the installation, be sure to shut down all
+ running MySQL server instances by either using the MySQL Manager
+ Application (on Mac OS X Server) or via mysqladmin shutdown on the
+ command line.
+
+ To actually install the MySQL PKG file, double-click on the
+ package icon. This launches the Mac OS X Package Installer, which
+ guides you through the installation of MySQL.
+
+ Due to a bug in the Mac OS X package installer, you may see this
+ error message in the destination disk selection dialog:
+You cannot install this software on this disk. (null)
+
+ If this error occurs, simply click the Go Back button once to
+ return to the previous screen. Then click Continue to advance to
+ the destination disk selection again, and you should be able to
+ choose the destination disk correctly. We have reported this bug
+ to Apple and it is investigating this problem.
+
+ The Mac OS X PKG of MySQL installs itself into
+ /usr/local/mysql-VERSION and also installs a symbolic link,
+ /usr/local/mysql, that points to the new location. If a directory
+ named /usr/local/mysql exists, it is renamed to
+ /usr/local/mysql.bak first. Additionally, the installer creates
+ the grant tables in the mysql database by executing
+ mysql_install_db.
+
+ The installation layout is similar to that of a tar file binary
+ distribution; all MySQL binaries are located in the directory
+ /usr/local/mysql/bin. The MySQL socket file is created as
+ /tmp/mysql.sock by default. See Section 2.1.5, "Installation
+ Layouts."
+
+ MySQL installation requires a Mac OS X user account named mysql. A
+ user account with this name should exist by default on Mac OS X
+ 10.2 and up.
+
+ If you are running Mac OS X Server, a version of MySQL should
+ already be installed. The following table shows the versions of
+ MySQL that ship with Mac OS X Server versions.
+ Mac OS X Server Version MySQL Version
+ 10.2-10.2.2 3.23.51
+ 10.2.3-10.2.6 3.23.53
+ 10.3 4.0.14
+ 10.3.2 4.0.16
+ 10.4.0 4.1.10a
+
+ This manual section covers the installation of the official MySQL
+ Mac OS X PKG only. Make sure to read Apple's help information
+ about installing MySQL: Run the "Help View" application, select
+ "Mac OS X Server" help, do a search for "MySQL," and read the item
+ entitled "Installing MySQL."
+
+ If you previously used Marc Liyanage's MySQL packages for Mac OS X
+ from http://www.entropy.ch, you can simply follow the update
+ instructions for packages using the binary installation layout as
+ given on his pages.
+
+ If you are upgrading from Marc's 3.23.x versions or from the Mac
+ OS X Server version of MySQL to the official MySQL PKG, you also
+ need to convert the existing MySQL privilege tables to the current
+ format, because some new security privileges have been added. See
+ Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL Upgrade."
+
+ If you want MySQL to start automatically during system startup,
+ you also need to install the MySQL Startup Item. It is part of the
+ Mac OS X installation disk images as a separate installation
+ package. Simply double-click the MySQLStartupItem.pkg icon and
+ follow the instructions to install it. The Startup Item need be
+ installed only once. There is no need to install it each time you
+ upgrade the MySQL package later.
+
+ The Startup Item for MySQL is installed into
+ /Library/StartupItems/MySQLCOM. (Before MySQL 4.1.2, the location
+ was /Library/StartupItems/MySQL, but that collided with the MySQL
+ Startup Item installed by Mac OS X Server.) Startup Item
+ installation adds a variable MYSQLCOM=-YES- to the system
+ configuration file /etc/hostconfig. If you want to disable the
+ automatic startup of MySQL, simply change this variable to
+ MYSQLCOM=-NO-.
+
+ On Mac OS X Server, the default MySQL installation uses the
+ variable MYSQL in the /etc/hostconfig file. The MySQL Startup Item
+ installer disables this variable by setting it to MYSQL=-NO-. This
+ avoids boot time conflicts with the MYSQLCOM variable used by the
+ MySQL Startup Item. However, it does not shut down a running MySQL
+ server. You should do that yourself.
+
+ After the installation, you can start up MySQL by running the
+ following commands in a terminal window. You must have
+ administrator privileges to perform this task.
+
+ If you have installed the Startup Item, use this command:
+shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
+(Enter your password, if necessary)
+(Press Control-D or enter "exit" to exit the shell)
+
+ If you don't use the Startup Item, enter the following command
+ sequence:
+shell> cd /usr/local/mysql
+shell> sudo ./bin/mysqld_safe
+(Enter your password, if necessary)
+(Press Control-Z)
+shell> bg
+(Press Control-D or enter "exit" to exit the shell)
+
+ You should be able to connect to the MySQL server, for example, by
+ running /usr/local/mysql/bin/mysql.
+
+Note
+
+ The accounts that are listed in the MySQL grant tables initially
+ have no passwords. After starting the server, you should set up
+ passwords for them using the instructions in Section 2.11,
+ "Post-Installation Setup and Testing."
+
+ You might want to add aliases to your shell's resource file to
+ make it easier to access commonly used programs such as mysql and
+ mysqladmin from the command line. The syntax for bash is:
+alias mysql=/usr/local/mysql/bin/mysql
+alias mysqladmin=/usr/local/mysql/bin/mysqladmin
+
+ For tcsh, use:
+alias mysql /usr/local/mysql/bin/mysql
+alias mysqladmin /usr/local/mysql/bin/mysqladmin
+
+ Even better, add /usr/local/mysql/bin to your PATH environment
+ variable. You can do this by modifying the appropriate startup
+ file for your shell. For more information, see Section 4.2.1,
+ "Invoking MySQL Programs."
+
+ If you are upgrading an existing installation, note that
+ installing a new MySQL PKG does not remove the directory of an
+ older installation. Unfortunately, the Mac OS X Installer does not
+ yet offer the functionality required to properly upgrade
+ previously installed packages.
+
+ To use your existing databases with the new installation, you'll
+ need to copy the contents of the old data directory to the new
+ data directory. Make sure that neither the old server nor the new
+ one is running when you do this. After you have copied over the
+ MySQL database files from the previous installation and have
+ successfully started the new server, you should consider removing
+ the old installation files to save disk space. Additionally, you
+ should also remove older versions of the Package Receipt
+ directories located in /Library/Receipts/mysql-VERSION.pkg.
diff --git a/support-files/Makefile.am b/support-files/Makefile.am
index 77eddea3227..52e3ed5d854 100644
--- a/support-files/Makefile.am
+++ b/support-files/Makefile.am
@@ -53,7 +53,9 @@ pkgsupp_DATA = my-small.cnf \
ndb-config-2-node.ini
pkgsupp_SCRIPTS = mysql.server \
- mysqld_multi.server
+ mysqld_multi.server \
+ binary-configure \
+ mysql-log-rotate
aclocaldir = $(datadir)/aclocal
aclocal_DATA = mysql.m4
diff --git a/support-files/ccfilter b/support-files/ccfilter
new file mode 100644
index 00000000000..e2957cd3228
--- /dev/null
+++ b/support-files/ccfilter
@@ -0,0 +1,104 @@
+#! /usr/bin/perl
+
+# Post-processor for compiler output to filter out warnings matched in
+# support-files/compiler_warnings.supp. This makes it easier to check
+# that no new warnings are introduced without needing to submit a build
+# for Buildbot.
+#
+# Use by setting CC="ccfilter gcc" CXX="ccfilter gcc" before ./configure.
+#
+# By default, just filters the output for suppressed warnings. If the
+# FAILONWARNING environment variable is set, then instead will fail the
+# compile on encountering a non-suppressed warnings.
+
+use strict;
+use warnings;
+
+my $suppressions;
+
+open STDOUT_COPY, ">&STDOUT"
+ or die "Failed to dup stdout: $!]n";
+
+my $pid= open(PIPE, '-|');
+
+if (!defined($pid)) {
+ die "Error: Cannot fork(): $!\n";
+} elsif (!$pid) {
+ # Child.
+ # actually want to send the STDERR to the parent, not the STDOUT.
+ # So shuffle things around a bit.
+ open STDERR, ">&STDOUT"
+ or die "Child: Failed to dup pipe to parent: $!\n";
+ open STDOUT, ">&STDOUT_COPY"
+ or die "Child: Failed to dup parent stdout: $!\n";
+ close STDOUT_COPY;
+ exec { $ARGV[0] } @ARGV;
+ die "Child: exec() failed: $!\n";
+} else {
+ # Parent.
+ close STDOUT_COPY;
+ my $cwd= qx(pwd);
+ chomp($cwd);
+ while (<PIPE>) {
+ my $line= $_;
+ if (/^(.*?):([0-9]+): [Ww]arning: (.*)$/) {
+ my ($file, $lineno, $msg)= ($1, $2, $3);
+ $file= "$cwd/$file";
+
+ next
+ if check_if_suppressed($file, $lineno, $msg);
+ die "$line\nGot warning, terminating.\n"
+ if $ENV{FAILONWARNING};
+ print STDERR $line;
+ next;
+ }
+
+ print STDERR $line;
+ }
+ close(PIPE);
+}
+
+exit 0;
+
+sub check_if_suppressed {
+ my ($file, $lineno, $msg)= @_;
+ load_suppressions() unless defined($suppressions);
+ for my $s (@$suppressions) {
+ my ($file_re, $msg_re, $start, $end)= @$s;
+ if ($file =~ /$file_re/ &&
+ $msg =~ /$msg_re/ &&
+ (!defined($start) || $start <= $lineno) &&
+ (!defined($end) || $end >= $lineno)) {
+ return 1;
+ }
+ }
+ return undef;
+}
+
+sub load_suppressions {
+ # First find the suppressions file, might be we need to move up to
+ # the base directory.
+ my $path = "support-files/compiler_warnings.supp";
+ my $exists;
+ for (1..10) {
+ $exists= -f $path;
+ last if $exists;
+ $path= '../'. $path;
+ }
+ die "Error: Could not find suppression file (out of source dir?).\n"
+ unless $exists;
+
+ $suppressions= [];
+ open "F", "<", $path
+ or die "Error: Could not read suppression file '$path': $!\n";
+ while (<F>) {
+ # Skip comment and empty lines.
+ next if /^\s*(\#.*)?$/;
+ die "Invalid syntax in suppression file '$path', line $.:\n$_"
+ unless /^\s*(.+?)\s*:\s*(.+?)\s*(?:[:]\s*([0-9]+)(?:-([0-9]+))?\s*)?$/;
+ my ($file_re, $line_re, $start, $end)= ($1, $2, $3, $4);
+ $end = $start
+ if defined($start) && !defined($end);
+ push @$suppressions, [$file_re, $line_re, $start, $end];
+ }
+}
diff --git a/support-files/compiler_warnings.supp b/support-files/compiler_warnings.supp
index c437748c770..9f3048ad996 100644
--- a/support-files/compiler_warnings.supp
+++ b/support-files/compiler_warnings.supp
@@ -25,6 +25,9 @@ sql_yacc.cc : .*switch statement contains 'default' but no 'case' labels.*
pars0grm.tab.c: .*'yyerrorlab' : unreferenced label.*
_flex_tmp.c: .*not enough actual parameters for macro 'yywrap'.*
pars0lex.l: .*conversion from 'ulint' to 'int', possible loss of data.*
+btr/btr0cur\.c: .*value computed is not used.*: 3175-3375
+include/buf0buf\.ic: unused parameter ‘mtr’
+fil/fil0fil\.c: comparison between signed and unsigned : 3100-3199
#
# bdb is not critical to keep up to date
@@ -41,6 +44,12 @@ db_vrfy.c : .*comparison is always false due to limited range of data type.*
.*/cmd-line-utils/readline/.* : .*
#
+# Ignore some warnings in libevent, which is not maintained by us.
+#
+.*/extra/libevent/.* : .*unused parameter.*
+.*/extra/libevent/select\.c : .*comparison between signed and unsigned.* : 270-280
+
+#
# Ignore all conversion warnings on windows 64
# (Is safe as we are not yet supporting strings >= 2G)
#
@@ -70,6 +79,22 @@ db_vrfy.c : .*comparison is always false due to limited range of data type.*
.*/ndb/.* : .*defined but not used.*
#
+# Maria warning that is ok in debug builds
+#
+storage/maria/ma_pagecache.c: .*'info_check_pin' defined but not used
+
+#
+# I think these are due to mix of C and C++.
+#
+storage/pbxt/ : typedef.*was ignored in this declaration
+
+
+#
+# Groff warnings on OpenSUSE.
+#
+.*/dbug/.*(groff|<standard input>) : .*
+
+#
# Unexplanable (?) stuff
#
listener.cc : .*conversion from 'SOCKET' to 'int'.*
@@ -77,9 +102,13 @@ net_serv.cc : .*conversion from 'SOCKET' to 'int'.*
# allow a little moving space for the warning below
mi_packrec.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 560-600
+ma_packrec.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 550-650
#
# Wrong compiler warnings
#
.* : .*no matching operator delete found; memory will not be freed if initialization throws an exception.*
ctype-simple.c : .*unary minus operator applied to unsigned type, result still unsigned.*
+
+# Wrong warning due to GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29478
+regexec\.c : .*passing argument 3 of.*matcher.* discards qualifiers from pointer target type.*
diff --git a/support-files/config.huge.ini.sh b/support-files/config.huge.ini.sh
index 938dd3209b8..938dd3209b8 100755..100644
--- a/support-files/config.huge.ini.sh
+++ b/support-files/config.huge.ini.sh
diff --git a/support-files/config.medium.ini.sh b/support-files/config.medium.ini.sh
index e35dd35e455..e35dd35e455 100755..100644
--- a/support-files/config.medium.ini.sh
+++ b/support-files/config.medium.ini.sh
diff --git a/support-files/config.small.ini.sh b/support-files/config.small.ini.sh
index 129e2521e17..129e2521e17 100755..100644
--- a/support-files/config.small.ini.sh
+++ b/support-files/config.small.ini.sh
diff --git a/support-files/magic b/support-files/magic
index 9844142ba93..b3f3b3ea29d 100644
--- a/support-files/magic
+++ b/support-files/magic
@@ -4,12 +4,23 @@
#
0 beshort 0xfe01 MySQL table definition file
>2 byte x Version %d
-0 belong&0xffffff00 0xfefe0300 MySQL MISAM index file
+0 belong&0xffffff00 0xfefe0700 MySQL MyISAM index file
>3 byte x Version %d
-0 belong&0xffffff00 0xfefe0700 MySQL MISAM compressed data file
+0 belong&0xffffff00 0xfefe0800 MySQL MyISAM compressed data file
+>3 byte x Version %d
+0 belong&0xffffff00 0xfefe0900 MySQL Maria index file
+>3 byte x Version %d
+0 belong&0xffffff00 0xfefe0A00 MySQL Maria compressed data file
>3 byte x Version %d
0 belong&0xffffff00 0xfefe0500 MySQL ISAM index file
>3 byte x Version %d
0 belong&0xffffff00 0xfefe0600 MySQL ISAM compressed data file
>3 byte x Version %d
0 string \376bin MySQL replication log
+0 belong&0xffffff00 0xfefe0b00
+>4 string MARIALOG MySQL Maria transaction log file
+>>3 byte x Version %d
+0 belong&0xffffff00 0xfefe0c00
+>4 string MACF MySQL Maria control file
+>>3 byte x Version %d
+
diff --git a/support-files/my-innodb-heavy-4G.cnf.sh b/support-files/my-innodb-heavy-4G.cnf.sh
index e9390a5b9e8..305a6ee3006 100644
--- a/support-files/my-innodb-heavy-4G.cnf.sh
+++ b/support-files/my-innodb-heavy-4G.cnf.sh
@@ -174,7 +174,7 @@ default-storage-engine = MYISAM
# memory, while if you use your own stack hungry UDF functions or your
# OS requires more stack for some operations, you might need to set this
# to a higher value.
-thread_stack = 192K
+thread_stack = 240K
# Set the default transaction isolation level. Levels available are:
# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
diff --git a/support-files/my-small.cnf.sh b/support-files/my-small.cnf.sh
index 3bfa08d0bd1..7dce9e60ed9 100644
--- a/support-files/my-small.cnf.sh
+++ b/support-files/my-small.cnf.sh
@@ -34,7 +34,7 @@ sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
-thread_stack = 128K
+thread_stack = 240K
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh
index 87198fc9cf5..d8725b98ca5 100644
--- a/support-files/mysql.server.sh
+++ b/support-files/mysql.server.sh
@@ -77,7 +77,12 @@ else
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
- libexecdir="$basedir/libexec"
+ if test -f "$basedir/bin/mysqld"
+ then
+ libexecdir="$basedir/bin"
+ else
+ libexecdir="$basedir/libexec"
+ fi
fi
# datadir_set is used to determine if datadir was set (and so should be
@@ -126,6 +131,12 @@ parse_server_arguments() {
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
+ if test -f "$basedir/bin/mysqld"
+ then
+ libexecdir="$basedir/bin"
+ else
+ libexecdir="$basedir/libexec"
+ fi
libexecdir="$basedir/libexec"
;;
--datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'`
@@ -434,9 +445,36 @@ case "$mode" in
fi
fi
;;
- *)
+ 'configtest')
+ # Safeguard (relative paths, core dumps..)
+ cd $basedir
+ echo $echo_n "Testing MySQL configuration syntax"
+ daemon=$bindir/mysqld
+ if test -x $libexecdir/mysqld
+ then
+ daemon=$libexecdir/mysqld
+ elif test -x $sbindir/mysqld
+ then
+ daemon=$sbindir/mysqld
+ elif test -x `which mysqld`
+ then
+ daemon=`which mysqld`
+ else
+ log_failure_msg "Unable to locate the mysqld binary!"
+ exit 1
+ fi
+ help_out=`$daemon --help 2>&1`; r=$?
+ if test "$r" != 0 ; then
+ log_failure_msg "$help_out"
+ log_failure_msg "There are syntax errors in the server configuration. Please fix them!"
+ else
+ log_success_msg "Syntax OK"
+ fi
+ exit $r
+ ;;
+ *)
# usage
- echo "Usage: $0 {start|stop|restart|reload|force-reload|status} [ MySQL server options ]"
+ echo "Usage: $0 {start|stop|restart|reload|force-reload|status|configtest} [ MySQL server options ]"
exit 1
;;
esac
diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh
index 8209c4560c6..a1940ec0612 100644
--- a/support-files/mysql.spec.sh
+++ b/support-files/mysql.spec.sh
@@ -50,6 +50,11 @@
%{?_with_cluster:%define CLUSTER_BUILD 1}
%{!?_with_cluster:%define CLUSTER_BUILD 0}
+# use "rpmbuild --with maria" or "rpm --define '_with_maria 1'" (for RPM 3.x)
+# to build with maria support (off by default)
+%{?_with_maria:%define MARIA_BUILD 1}
+%{!?_with_maria:%define MARIA_BUILD 0}
+
%if %{STATIC_BUILD}
%define release 0
%else
@@ -276,6 +281,26 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH}\" \
LDFLAGS=\"$MYSQL_BUILD_LDFLAGS\" \
./configure \
$* \
+ --with-innodb \
+%if %{CLUSTER_BUILD}
+ --with-ndbcluster \
+%else
+ --without-ndbcluster \
+%endif
+ --with-archive-storage-engine \
+ --with-csv-storage-engine \
+ --with-blackhole-storage-engine \
+%if %{FEDERATED_BUILD}
+ --with-federated-storage-engine \
+%else
+ --without-federated-storage-engine \
+%endif
+%if %{MARIA_BUILD}
+ --with-plugin-maria \
+ --with-maria-tmp-tables \
+%endif
+ --with-partition \
+ --with-big-tables \
--with-mysqld-ldflags='-static' \
--with-client-ldflags='-static' \
--with-zlib-dir=bundled \
@@ -388,7 +413,12 @@ CFLAGS="$CFLAGS" \
CXXFLAGS="$CXXFLAGS" \
BuildMySQL "\
--with-debug \
- --with-comment=\"MySQL Community Server - Debug (%{mysql_license})\"")
+%if %{MARIA_BUILD}
+ --with-comment=\"MySQL Community Server - Debug [Maria] (%{mysql_license})\" \
+%else
+ --with-comment=\"MySQL Community Server - Debug (%{mysql_license})\" \
+%endif
+")
# We might want to save the config log file
if test -n "$MYSQL_DEBUGCONFLOG_DEST"
@@ -409,7 +439,12 @@ CFLAGS="$CFLAGS" \
CXXFLAGS="$CXXFLAGS" \
BuildMySQL "\
--with-embedded-server \
- --with-comment=\"MySQL Community Server (%{mysql_license})\"")
+%if %{MARIA_BUILD}
+ --with-comment=\"MariaDB, a community SQL server based on the MySQL Server with Maria (GPL)\" \
+%else
+ --with-comment=\"MySQL Community Server (%{mysql_license})\" \
+%endif
+")
# We might want to save the config log file
if test -n "$MYSQL_CONFLOG_DEST"
then