Hello community,
here is the log from the commit of package mysql-community-server for openSUSE:Factory
checked in at Wed May 5 21:53:51 CEST 2010.
--------
New Changes file:
--- /dev/null 2010-04-12 17:03:46.000000000 +0200
+++ mysql-community-server/mysql-community-server.changes 2010-04-30 14:27:25.000000000 +0200
@@ -0,0 +1,1599 @@
+-------------------------------------------------------------------
+Sat Apr 24 00:12:25 CEST 2010 - mhrusecky@suse.cz
+
+- updated to 5.1.46, see
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-46.html
+
+-------------------------------------------------------------------
+Sun Apr 11 21:06:44 CEST 2010 - mhrusecky@suse.cz
+
+- updated to 5.1.45, see
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-45.html
+
+-------------------------------------------------------------------
+Mon Mar 8 15:13:11 UTC 2010 - mhrusecky@suse.cz
+
+- updated to 5.1.44, see
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-43.html
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-44.html
+- splitting out shared libmysqld shared library (quick dirty way)
+- preparing spec file to be more general and easily adjustable to
+ other MySQL flavours
+
+-------------------------------------------------------------------
+Sun Jan 10 00:57:25 CET 2010 - mhrusecky@suse.cz
+
+- updated to 5.1.42, see
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-42.html
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-41.html
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-40.html
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-39.html
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-38.html
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-37.html
+
+-------------------------------------------------------------------
+Tue Dec 15 01:23:16 CET 2009 - jengelh@medozas.de
+
+- add baselibs.conf as a source
+
+-------------------------------------------------------------------
+Tue Dec 1 17:52:18 CET 2009 - mhrusecky@suse.cz
+
+- removing compatibility symlink
+ - intended for 11.2 but never get there
+- fixing various security issues (bnc#557669)
+ - upstream #47320 - checking server certificates (CVE-2009-4028)
+ - upstream #48291 - error handling in subqueries (CVE-2009-4019)
+ - upstream #47780 - preserving null_value flag in GeomFromWKB()
+ (CVE-2009-4019)
+ - upstream #39277 - symlink behaviour fixed (CVE-2008-7247)
+ - upstream #32167 - symlink behaviour refixed (CVE-2009-4030)
+
+-------------------------------------------------------------------
+Wed Nov 11 14:23:43 CET 2009 - mhrusecky@suse.cz
+
+- making pid file readable by everybody
+- fixing 'rcmysql status' for non-root
+
+-------------------------------------------------------------------
+Thu Oct 29 14:11:09 CET 2009 - mhrusecky@suse.cz
+
+- adding /var/lib/mysql/mysql.sock symlink for compatibility with
+ applications for older versions
+- using kill instead of killproc as killproc matches by default all
+ running MySQL instances (even KDE ones)
+- checking for log consistency in rc script instead of post of spec
+ as it makes more sense
+
+-------------------------------------------------------------------
+Fri Oct 16 09:32:35 UTC 2009 - adrian@suse.de
+
+- fix PreRequires or mysql package can't be used in build enviroment
+- do not fail on usermod call in %pre as specified
+
+-------------------------------------------------------------------
+Mon Oct 12 18:36:04 UTC 2009 - coolo@novell.com
+
+- fix prereq for usermod
+
+-------------------------------------------------------------------
+Mon Oct 5 11:11:35 CEST 2009 - mhrusecky@suse.cz
+
+- fixed my.cnf rights (bnc#539249)
+- fixed restart on update (bnc#520876)
+
+-------------------------------------------------------------------
+Tue Sep 15 16:45:23 CEST 2009 - mhrusecky@suse.cz
+
+- Few better formulations in README.SuSE (bnc#539243)
+
+-------------------------------------------------------------------
+Tue Aug 25 10:19:04 CEST 2009 - mhrusecky@suse.cz
+
+- Refixing bnc#420313 so mysql_config will return better values
+
+-------------------------------------------------------------------
+Wed Aug 12 13:29:09 CEST 2009 - mhrusecky@suse.cz
+
+- Using configure option to enforce pthreads rwlocks on s390 instead
+ of sed substitution
+
+-------------------------------------------------------------------
+Tue Jul 28 17:10:31 CEST 2009 - mhrusecky@suse.cz
+
+- Applying upstream patch for upstream bug#43594
+ (hotcopy will ignore log tables) (bnc#525325)
+- Not using bmove512 as it may slow things down
+ (see upstream bug#19975)
+
+-------------------------------------------------------------------
+Mon Jul 27 14:45:24 CEST 2009 - mhrusecky@suse.cz
+
+- Applying upstream patch for upstream bug#36259
+ 'Optimizing with ORDER BY'
+
+-------------------------------------------------------------------
+Fri Jul 24 17:35:07 CEST 2009 - dmueller@suse.de
+
+- fix baselibs.conf (bnc#525065)
+
+-------------------------------------------------------------------
+Tue Jul 7 11:19:05 CEST 2009 - mhrusecky@suse.cz
+
+- updated to 5.1.36, see
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-36.html
+
+-------------------------------------------------------------------
+Fri Jun 26 11:09:34 CEST 2009 - mhrusecky@suse.cz
+
+- fixed rcmysql status
+
+-------------------------------------------------------------------
+Tue Jun 23 19:33:08 CEST 2009 - mhrusecky@suse.cz
+
+- extra escaping in rc script just to be sure
+- creating parent directories for logs when they don't exists
+- rc script didn't always exited when it should
+- checking for incompatible databases in way it can be logged
+
+-------------------------------------------------------------------
+Fri Jun 19 13:17:44 CEST 2009 - mhrusecky@suse.cz
+
+- actualized README.SuSE
+
+-------------------------------------------------------------------
+Tue Jun 16 14:32:00 CEST 2009 - mhrusecky@suse.cz
+
+- updated to 5.1.35, see
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-35.html
+- fixed some tests
+
+-------------------------------------------------------------------
+Mon Jun 8 13:33:35 CEST 2009 - mhrusecky@suse.cz
+
+- putting all log files to subdirectory in /var/log
+
+-------------------------------------------------------------------
+Mon Jun 1 18:33:43 CEST 2009 - mhrusecky@suse.cz
+
+- moving socket back to /var/lib/mysql for people with old distributions
+
+-------------------------------------------------------------------
+Sat May 2 13:43:40 CEST 2009 - chris@computersalat.de
+
+- fdupes fix for fedora
+
+-------------------------------------------------------------------
+Fri May 1 17:55:12 CEST 2009 - chris@computersalat.de
+
+- beautify spec file
+ o some if's to get Fedora, Centos build
+- to minimize effort for admins
+ o with-charset=utf8
+ o with-collation=utf8_unicode_ci
+
+-------------------------------------------------------------------
+Thu Apr 30 10:58:29 CEST 2009 - mhrusecky@suse.cz
+
+- adding upgrade log
+
+-------------------------------------------------------------------
+Tue Apr 28 18:33:22 CEST 2009 - mhrusecky@suse.cz
+
+- fixed update so only one at the time is allowed
+
+-------------------------------------------------------------------
+Fri Apr 24 17:27:11 CEST 2009 - mhrusecky@suse.cz
+
+- updated to 5.1.34, see
+ http://dev.mysql.com/doc/refman/5.1/en/news-5-1-34.html
+- added README.SuSE with notes about version 5.1
+- fixed migration problem from 5.0.X regarding moved pidfile
+
+-------------------------------------------------------------------
+Fri Apr 10 14:40:54 CEST 2009 - mhrusecky@suse.cz
+
+- Fixed SSL support on 64-bit machines
+
++++ 1402 more lines (skipped)
++++ between /dev/null
++++ and mysql-community-server/mysql-community-server.changes
calling whatdependson for head-i586
New:
----
README.SuSE
README.debug
abi_test.patch
baselibs.conf
libmysql-no-pkglibdir.patch
minmem
mysql-5.1.30-federated-workaround.patch
mysql-5.1.31-shebang.patch
mysql-5.1.33-scripts-paths.patch
mysql-5.1.33-ssl-lib64-macro.patch
mysql-5.1.35-test-utf8.patch
mysql-5.1.35-test-variables-big.patch
mysql-5.1.36-bmove512.patch
mysql-5.1.36-hotcopy.patch
mysql-5.1.42-myslq-test.patch
mysql-5.1.45-safe-process-in-bin.patch
mysql-5.1.46.tar.bz2
mysql-cnf.patch
mysql-community-server.changes
mysql-community-server.spec
mysql-enable-plugins.patch
mysql-group.patch
mysql-install_db-quiet.patch
mysql-logrotate.patch
mysql-multi-configuration.patch
mysql-plugins-avoid-version.patch
mysql.SuSEfirewall2
mysql_config.patch
mysql_upgrade-exit-status.patch
mysqld_multi.patch
rc.mysql-multi
suse-test-run
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mysql-community-server.spec ++++++
++++ 910 lines (skipped)
++++++ README.SuSE ++++++
Notes about MySQL 5.1 package:
==============================
With MySQL 5.1 package we introduced some changes you may like to know. Most of
them will affect you only if you are upgrading from previous version and you
did some changes to your configuration.
1) Plugins:
===========
One of the new features in MySQL 5.1 is support for plugins. So some of the
storage engines are now shipped like that. You can use following plugins:
- archive
- blackhole
- federated
- example
InnoDB is still compiled as internal part of MySQL. If you are upgrading from
version 5.0 or if this is your first installation of MySQL 5.1, all plugins
will be enabled by default and you can disable them manually later (see
http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html).
With this change you need to remove skip-federated option from your my.cnf file
if you have changed it manually. This option was there by default in previous
versions of MySQL.
2) File locations:
==================
There were some changes in files locations. Most of them were made in the
default configuration file so if you are experiencing problems and you have
made some manual adjustments to your /etc/my.cnf, try to merge this file with
/etc/my.cnf.rpmnew.
File locations changes:
- MySQL socket file and pid file were moved from /var/lib/mysql to more
reasonable location ( /var/run/mysql ) by default.
- MySQL log files are in /var/log/mysql.
3) BerkeleyDB:
==============
MySQL no longer contains BerkeleyDB as storage engine. There is no fix for that
and if you used it before, you have to migrate your data to different storage
engine BEFORE updating. This can be done for example using following command:
ALTER TABLE foo ENGINE = INNODB;
4) MySQL Upgrade Log
====================
If you missed messages displayed during automatic MySQL database upgrade, you
can find them from now on in
/var/log/mysql/mysqld-upgrade.log
++++++ README.debug ++++++
Debugging mysqld crashes
========================
Author: Michal Marek
Last modified: 2006-07-31
Contents
--------
1) Query log
2) Coredumps and Backtraces
3) Trace files
In case your MySQL server crashes, here are some hints on what to
include in a bugreport at https://bugzilla.novell.com/ . Please report
there only bugs in the MySQL packages packaged by Novell/SUSE, bugs in
binaries / source provided by MySQL AB should be reported at
http://bugs.mysql.com/ .
1) Query log
------------
Note: Skip this chapter if you already have an exact query that
crashes the server
To find out which query possibly crashed the server, add the following
line to your /etc/my.cnf into section [mysqld]:
log=/var/lib/mysql/mysqld-query.log
Mysqld then will, at some performance cost, log all queries into this
file. After a server crash, you can examine the queries from the time it
crashed and try to reproduce the crash with single queries (this might
not allways work, eg. if the crash is caused by some race condition).
Note that this log file may become extremly large, so if you decide to
attach it whole to the bugzilla, don't forget to
bzip2 -k /var/lib/mysql/mysqld-query.log
and attach the bzipped file instead.
2) Coredumps and Backtraces
---------------------------
Another valuable information for the developers is the backtrace. The
easies way to get one is to let mysqld produce a coredump. Add the
following line to your /etc/my.cnf into section [mysqld]:
core-file
Note: this unfortunatelly doesn't work in SUSE Linux 10.1 and older.
On these systems, you need to run safe_mysqld directly under user
mysql:
su - mysql
mysqld_safe --socket=/var/lib/mysql/mysql.sock \
--datadir=/var/lib/mysql --core-file &
The core file will be written to the /var/lib/mysql/ directory. I
suggest setting the kernel variable kernel.core_uses_pid to 1
sysctl -w kernel.core_uses_pid=1
so that the coredumps don't overwrite each other if you experience
multiple crashes.
After you got the core file, install the gdb and mysql-debuginfo
packages and run
gdb /usr/sbin/mysqld /var/lib/mysql/core
(gdb) bt
Replace mysqld with the mysqld version you used (mysqld, mysqld-max or
mysqld-debug) and core with the actual name of the coredump.
3) Trace files
--------------
You'll need the mysqld-debug binary from the mysql-debug package to get
a trace file. Install the mysqld-debug package and the start mysqld
using following command:
$ MYSQLD_DEBUG=yes rcmysql start
Note: The init script doesn't automatically pick up the mysqld-debug
binary (as it does with mysqld-max), because it is expected to be used
just temporarily to help solving a particular problem.
The init script will then start mysqld-debug and add the --core-file,
--log and --debug options for you. The query log will be stored in
/var/lib/mysql/myqld-query.log
and the trace file in
/var/lib/mysql/mysqld.trace
If you don't like the options set by the init script, just put your own
into /etc/my.cnf and the init script will honor it. For information
about the --debug option, see "The DBUG Package":
http://dev.mysql.com/doc/refman/5.0/en/the-dbug-package.html .
The trace file will contain various debug information and function
calls/returns and will become _extremly_ huge after a while, so don't
attach it to bugzilla unless requested.
++++++ abi_test.patch ++++++
diff -Naru mysql-5.1.44-bak/include/mysql.h mysql-5.1.44/include/mysql.h
--- mysql-5.1.44-bak/include/mysql.h 2010-02-23 00:31:19.000000000 +0100
+++ mysql-5.1.44/include/mysql.h 2010-02-23 10:51:49.000000000 +0100
@@ -44,7 +44,9 @@
#endif
#ifndef _global_h /* If not standard header */
-#include
+#ifndef _abi_test_
+#include
+#endif
#ifdef __LCC__
#include /* For windows */
#endif
diff -Naru mysql-5.1.44-bak/include/mysql.h.pp mysql-5.1.44/include/mysql.h.pp
--- mysql-5.1.44-bak/include/mysql.h.pp 2010-02-23 00:31:19.000000000 +0100
+++ mysql-5.1.44/include/mysql.h.pp 2010-02-23 10:54:46.000000000 +0100
@@ -1,4 +1,3 @@
-#include
typedef char my_bool;
typedef int my_socket;
#include "mysql_version.h"
diff -Naru mysql-5.1.44-bak/Makefile.am mysql-5.1.44/Makefile.am
--- mysql-5.1.44-bak/Makefile.am 2010-02-23 00:31:18.000000000 +0100
+++ mysql-5.1.44/Makefile.am 2010-02-23 10:50:18.000000000 +0100
@@ -321,7 +321,8 @@
-I$(top_builddir)/include \
-I$(top_builddir)/include/mysql \
-I$(top_builddir)/sql \
- $$file 2>/dev/null | \
+ -D_abi_test_ \
+ $$file | \
@SED@ -e '/^# /d' \
-e '/^[ ]*$$/d' \
-e '/^#pragma GCC set_debug_pwd/d' \
++++++ baselibs.conf ++++++
libmysqlclient16
libmysqlclient_r16
++++++ libmysql-no-pkglibdir.patch ++++++
---
libmysql/Makefile.shared | 2 +-
libmysqld/Makefile.am | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--- libmysql/Makefile.shared.orig
+++ libmysql/Makefile.shared
@@ -26,7 +26,7 @@ MYSQLBASEdir= $(prefix)
## We'll use CLIENT_EXTRA_LDFLAGS for threaded and non-threaded
## until someone complains that they need separate options.
LDADD = @CLIENT_EXTRA_LDFLAGS@ $(target)
-pkglib_LTLIBRARIES = $(target)
+lib_LTLIBRARIES = $(target)
noinst_PROGRAMS = conf_to_src
--- libmysqld/Makefile.am.orig
+++ libmysqld/Makefile.am
@@ -36,7 +36,7 @@ INCLUDES= -I$(top_builddir)/include -I$
@condition_dependent_plugin_includes@
noinst_LIBRARIES = libmysqld_int.a
-pkglib_LIBRARIES = libmysqld.a
+lib_LIBRARIES = libmysqld.a
SUBDIRS = . examples
libmysqld_sources= libmysqld.c lib_sql.cc emb_qcache.cc
libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \
++++++ minmem ++++++
200000
++++++ mysql-5.1.30-federated-workaround.patch ++++++
--- storage/federated/ha_federated.cc
+++ storage/federated/ha_federated.cc
@@ -385,6 +385,12 @@
#include
+
+// Quick and ugly plugin workaround
+#ifdef MYSQL_DYNAMIC_PLUGIN
+#include "../../mysys/string.c"
+#endif
+
/* Variables for federated share methods */
static HASH federated_open_tables; // To track open tables
pthread_mutex_t federated_mutex; // To init the hash
++++++ mysql-5.1.31-shebang.patch ++++++
diff -Naru mysql-5.1.31-bak/mysql-test/t/long_tmpdir-master.sh mysql-5.1.31/mysql-test/t/long_tmpdir-master.sh
--- mysql-5.1.31-bak/mysql-test/t/long_tmpdir-master.sh 2009-02-23 17:18:48.000000000 +0100
+++ mysql-5.1.31/mysql-test/t/long_tmpdir-master.sh 2009-02-24 17:57:42.000000000 +0100
@@ -1,3 +1,4 @@
+#!/bin/sh
d="$MYSQLTEST_VARDIR/tmp/long_temporary_directory_path_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789"
test -d "$d" || mkdir "$d"
rm -f "$d"/*
diff -Naru mysql-5.1.31-bak/mysql-test/t/lowercase_mixed_tmpdir-master.sh mysql-5.1.31/mysql-test/t/lowercase_mixed_tmpdir-master.sh
--- mysql-5.1.31-bak/mysql-test/t/lowercase_mixed_tmpdir-master.sh 2009-02-23 17:18:48.000000000 +0100
+++ mysql-5.1.31/mysql-test/t/lowercase_mixed_tmpdir-master.sh 2009-02-24 17:58:12.000000000 +0100
@@ -1,3 +1,4 @@
+#!/bin/sh
# This test requires a non-lowercase tmpdir directory on a case-sensitive
# filesystem.
diff -Naru mysql-5.1.31-bak/sql-bench/graph-compare-results.sh mysql-5.1.31/sql-bench/graph-compare-results.sh
--- mysql-5.1.31-bak/sql-bench/graph-compare-results.sh 2009-02-23 17:18:49.000000000 +0100
+++ mysql-5.1.31/sql-bench/graph-compare-results.sh 2009-02-24 18:00:16.000000000 +0100
@@ -1,3 +1,4 @@
+#/usr/bin/perl
####
#### Hello ... this is a heavily hacked script by Luuk
#### instead of printing the result it makes a nice gif
++++++ mysql-5.1.33-scripts-paths.patch ++++++
--- scripts/Makefile.am 2009-04-02 18:29:00.292563355 +0200
+++ scripts/Makefile.am 2009-04-02 18:21:50.462559739 +0200
@@ -110,7 +110,7 @@
mysql_fix_privilege_tables.sql: mysql_system_tables.sql \
mysql_system_tables_fix.sql
@echo "Building $@";
- @cat mysql_system_tables.sql mysql_system_tables_fix.sql > $@
+ @cat $(top_srcdir)/scripts/mysql_system_tables.sql $(top_srcdir)/scripts/mysql_system_tables_fix.sql > $@
#
# Build mysql_fix_privilege_tables_sql.c from
@@ -123,7 +123,7 @@
sleep 2
$(top_builddir)/scripts/comp_sql$(EXEEXT) \
mysql_fix_privilege_tables \
- $(top_srcdir)/scripts/mysql_fix_privilege_tables.sql $@
+ $(top_builddir)/scripts/mysql_fix_privilege_tables.sql $@
SUFFIXES = .sh
++++++ mysql-5.1.33-ssl-lib64-macro.patch ++++++
--- config/ac-macros/ssl.m4 2009-04-10 14:05:07.000000000 +0200
+++ config/ac-macros/ssl.m4 2009-04-10 14:15:15.000000000 +0200
@@ -102,7 +102,7 @@
#
# Try to link with openSSL libs in <location>
#
- openssl_libs="-L$location/lib/ -lssl -lcrypto"
+ openssl_libs="-L$location/lib -L$location/lib64 -lssl -lcrypto"
MYSQL_CHECK_SSL_DIR([$openssl_includes], [$openssl_libs])
if test "$mysql_ssl_found" == "no"
++++++ mysql-5.1.35-test-utf8.patch ++++++
Index: mysql-test/r/information_schema.result
===================================================================
--- mysql-test/r/information_schema.result.orig
+++ mysql-test/r/information_schema.result
@@ -9,7 +9,7 @@ create user mysqltest_3@localhost;
create user mysqltest_3;
select * from information_schema.SCHEMATA where schema_name > 'm';
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
-NULL mtr latin1 latin1_swedish_ci NULL
+NULL mtr utf8 utf8_unicode_ci NULL
NULL mysql latin1 latin1_swedish_ci NULL
NULL test latin1 latin1_swedish_ci NULL
select schema_name from information_schema.schemata;
Index: mysql-test/r/mysql_comments.result
===================================================================
--- mysql-test/r/mysql_comments.result.orig
+++ mysql-test/r/mysql_comments.result
@@ -13,23 +13,23 @@ drop trigger if exists t1_bi;
foofct("call 1")
call 1
Function sql_mode Create Function character_set_client collation_connection Database Collation
-foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nreturn\n\n\n\nx latin1 latin1_swedish_ci latin1_swedish_ci
+foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nreturn\n\n\n\nx utf8 utf8_unicode_ci latin1_swedish_ci
foofct("call 2")
call 2
Function sql_mode Create Function character_set_client collation_connection Database Collation
-foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nbegin\n \n \n \n\n \n\n \n return x;\nend latin1 latin1_swedish_ci latin1_swedish_ci
+foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nbegin\n \n \n \n\n \n\n \n return x;\nend utf8 utf8_unicode_ci latin1_swedish_ci
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-empty CREATE DEFINER=`root`@`localhost` PROCEDURE `empty`()\nbegin\nend latin1 latin1_swedish_ci latin1_swedish_ci
+empty CREATE DEFINER=`root`@`localhost` PROCEDURE `empty`()\nbegin\nend utf8 utf8_unicode_ci latin1_swedish_ci
id data
foo 42
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-foosp CREATE DEFINER=`root`@`localhost` PROCEDURE `foosp`()\ninsert into test.t1\n\n\n\n\n \n\n \n values ("foo", 42) latin1 latin1_swedish_ci latin1_swedish_ci
+foosp CREATE DEFINER=`root`@`localhost` PROCEDURE `foosp`()\ninsert into test.t1\n\n\n\n\n \n\n \n values ("foo", 42) utf8 utf8_unicode_ci latin1_swedish_ci
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-nicesp CREATE DEFINER=`root`@`localhost` PROCEDURE `nicesp`(a int)\nbegin\n \n declare b int;\n declare c float;\n\n \n \n\n \nend latin1 latin1_swedish_ci latin1_swedish_ci
+nicesp CREATE DEFINER=`root`@`localhost` PROCEDURE `nicesp`(a int)\nbegin\n \n declare b int;\n declare c float;\n\n \n \n\n \nend utf8 utf8_unicode_ci latin1_swedish_ci
Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
-t1_empty CREATE DEFINER=`root`@`localhost` trigger t1_empty after delete on t1\nfor each row\nbegin\nend latin1 latin1_swedish_ci latin1_swedish_ci
+t1_empty CREATE DEFINER=`root`@`localhost` trigger t1_empty after delete on t1\nfor each row\nbegin\nend utf8 utf8_unicode_ci latin1_swedish_ci
Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
-t1_bi CREATE DEFINER=`root`@`localhost` trigger t1_bi before insert on t1\nfor each row\nbegin\n\n\n\n \n declare b int;\n declare c float;\n\n \n \n\n \n set NEW.data := 12;\nend latin1 latin1_swedish_ci latin1_swedish_ci
+t1_bi CREATE DEFINER=`root`@`localhost` trigger t1_bi before insert on t1\nfor each row\nbegin\n\n\n\n \n declare b int;\n declare c float;\n\n \n \n\n \n set NEW.data := 12;\nend utf8 utf8_unicode_ci latin1_swedish_ci
id data
trig 12
"Pass 2 : --enable-comments"
@@ -40,23 +40,23 @@ trig 12
foofct("call 1")
call 1
Function sql_mode Create Function character_set_client collation_connection Database Collation
-foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nreturn\n-- comment 1a\n# comment 1b\n/* comment 1c */\nx # after body, on same line latin1 latin1_swedish_ci latin1_swedish_ci
+foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nreturn\n-- comment 1a\n# comment 1b\n/* comment 1c */\nx # after body, on same line utf8 utf8_unicode_ci latin1_swedish_ci
foofct("call 2")
call 2
Function sql_mode Create Function character_set_client collation_connection Database Collation
-foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nbegin\n -- comment 1a\n # comment 1b\n /*\n comment 1c\n */\n\n -- empty line below\n\n -- empty line above\n return x;\nend latin1 latin1_swedish_ci latin1_swedish_ci
+foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nbegin\n -- comment 1a\n # comment 1b\n /*\n comment 1c\n */\n\n -- empty line below\n\n -- empty line above\n return x;\nend utf8 utf8_unicode_ci latin1_swedish_ci
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-empty CREATE DEFINER=`root`@`localhost` PROCEDURE `empty`()\nbegin\nend latin1 latin1_swedish_ci latin1_swedish_ci
+empty CREATE DEFINER=`root`@`localhost` PROCEDURE `empty`()\nbegin\nend utf8 utf8_unicode_ci latin1_swedish_ci
id data
foo 42
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-foosp CREATE DEFINER=`root`@`localhost` PROCEDURE `foosp`()\ninsert into test.t1\n## These comments are part of the procedure body, and should be kept.\n# Comment 2a\n-- Comment 2b\n/* Comment 2c */\n -- empty line below\n\n -- empty line above\n values ("foo", 42) # comment 3, still part of the body latin1 latin1_swedish_ci latin1_swedish_ci
+foosp CREATE DEFINER=`root`@`localhost` PROCEDURE `foosp`()\ninsert into test.t1\n## These comments are part of the procedure body, and should be kept.\n# Comment 2a\n-- Comment 2b\n/* Comment 2c */\n -- empty line below\n\n -- empty line above\n values ("foo", 42) # comment 3, still part of the body utf8 utf8_unicode_ci latin1_swedish_ci
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
-nicesp CREATE DEFINER=`root`@`localhost` PROCEDURE `nicesp`(a int)\nbegin\n -- declare some variables here\n declare b int;\n declare c float;\n\n -- do more stuff here\n -- commented nicely and so on\n\n -- famous last words ...\nend latin1 latin1_swedish_ci latin1_swedish_ci
+nicesp CREATE DEFINER=`root`@`localhost` PROCEDURE `nicesp`(a int)\nbegin\n -- declare some variables here\n declare b int;\n declare c float;\n\n -- do more stuff here\n -- commented nicely and so on\n\n -- famous last words ...\nend utf8 utf8_unicode_ci latin1_swedish_ci
Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
-t1_empty CREATE DEFINER=`root`@`localhost` trigger t1_empty after delete on t1\nfor each row\nbegin\nend latin1 latin1_swedish_ci latin1_swedish_ci
+t1_empty CREATE DEFINER=`root`@`localhost` trigger t1_empty after delete on t1\nfor each row\nbegin\nend utf8 utf8_unicode_ci latin1_swedish_ci
Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
-t1_bi CREATE DEFINER=`root`@`localhost` trigger t1_bi before insert on t1\nfor each row\nbegin\n# comment 1a\n-- comment 1b\n/*\n comment 1c\n*/\n -- declare some variables here\n declare b int;\n declare c float;\n\n -- do more stuff here\n -- commented nicely and so on\n\n -- famous last words ...\n set NEW.data := 12;\nend latin1 latin1_swedish_ci latin1_swedish_ci
+t1_bi CREATE DEFINER=`root`@`localhost` trigger t1_bi before insert on t1\nfor each row\nbegin\n# comment 1a\n-- comment 1b\n/*\n comment 1c\n*/\n -- declare some variables here\n declare b int;\n declare c float;\n\n -- do more stuff here\n -- commented nicely and so on\n\n -- famous last words ...\n set NEW.data := 12;\nend utf8 utf8_unicode_ci latin1_swedish_ci
id data
trig 12
End of 5.0 tests
++++++ mysql-5.1.35-test-variables-big.patch ++++++
Index: mysql-test/t/variables-big.test
===================================================================
--- mysql-test/t/variables-big.test.orig
+++ mysql-test/t/variables-big.test
@@ -38,18 +38,18 @@
--disable_warnings
SET SESSION transaction_prealloc_size=1024*1024*1024*1;
--replace_column 1 <Id> 6 <Time>
-SHOW PROCESSLIST;
+SHOW VARIABLES WHERE VARIABLE_NAME='transaction_prealloc_size';
SET SESSION transaction_prealloc_size=1024*1024*1024*2;
--replace_column 1 <Id> 6 <Time>
-SHOW PROCESSLIST;
+SHOW VARIABLES WHERE VARIABLE_NAME='transaction_prealloc_size';
SET SESSION transaction_prealloc_size=1024*1024*1024*3;
--replace_column 1 <Id> 6 <Time>
-SHOW PROCESSLIST;
+SHOW VARIABLES WHERE VARIABLE_NAME='transaction_prealloc_size';
SET SESSION transaction_prealloc_size=1024*1024*1024*4;
--replace_column 1 <Id> 6 <Time>
-SHOW PROCESSLIST;
+SHOW VARIABLES WHERE VARIABLE_NAME='transaction_prealloc_size';
SET SESSION transaction_prealloc_size=1024*1024*1024*5;
--replace_column 1 <Id> 6 <Time>
-SHOW PROCESSLIST;
+SHOW VARIABLES WHERE VARIABLE_NAME='transaction_prealloc_size';
--enable_warnings
++++++ mysql-5.1.36-bmove512.patch ++++++
Index: mysys/mf_keycache.c
===================================================================
--- mysys/mf_keycache.c.orig
+++ mysys/mf_keycache.c
@@ -2646,10 +2646,7 @@ uchar *key_cache_read(KEY_CACHE *keycach
#endif
/* Copy data from the cache buffer */
- if (!(read_length & 511))
- bmove512(buff, block->buffer+offset, read_length);
- else
- memcpy(buff, block->buffer+offset, (size_t) read_length);
+ memcpy(buff, block->buffer+offset, (size_t) read_length);
#if !defined(SERIALIZED_READ_FROM_CACHE)
keycache_pthread_mutex_lock(&keycache->cache_lock);
@@ -2857,10 +2854,7 @@ int key_cache_insert(KEY_CACHE *keycache
#endif
/* Copy data from buff */
- if (!(read_length & 511))
- bmove512(block->buffer+offset, buff, read_length);
- else
- memcpy(block->buffer+offset, buff, (size_t) read_length);
+ memcpy(block->buffer+offset, buff, (size_t) read_length);
#if !defined(SERIALIZED_READ_FROM_CACHE)
keycache_pthread_mutex_lock(&keycache->cache_lock);
@@ -3164,10 +3158,7 @@ int key_cache_write(KEY_CACHE *keycache,
#if !defined(SERIALIZED_READ_FROM_CACHE)
keycache_pthread_mutex_unlock(&keycache->cache_lock);
#endif
- if (!(read_length & 511))
- bmove512(block->buffer+offset, buff, read_length);
- else
- memcpy(block->buffer+offset, buff, (size_t) read_length);
+ memcpy(block->buffer+offset, buff, (size_t) read_length);
#if !defined(SERIALIZED_READ_FROM_CACHE)
keycache_pthread_mutex_lock(&keycache->cache_lock);
++++++ mysql-5.1.36-hotcopy.patch ++++++
=== modified file 'scripts/mysqlhotcopy.sh'
--- scripts/mysqlhotcopy.sh 2008-03-07 20:45:40 +0000
+++ scripts/mysqlhotcopy.sh 2009-03-12 13:06:42 +0000
@@ -777,7 +777,24 @@ sub get_list_of_tables {
} || [];
warn "Unable to retrieve list of tables in $db: $@" if $@;
- return (map { $_->[0] } @$tables);
+ my @ignore_tables = ();
+
+ # Ignore tables for the mysql database
+ if ($db eq 'mysql') {
+ @ignore_tables = qw(general_log slow_log schema apply_status);
+ }
+
+ my @res = ();
+ if ($#ignore_tables > 1) {
+ my @tmp = (map { $_->[0] } @$tables);
+ for my $t (@tmp) {
+ push(@res, $t) if not exists { map { $_=>1 } @ignore_tables }->{$t};
+ }
+ } else {
+ @res = (map { $_->[0] } @$tables);
+ }
+
+ return @res;
}
sub quote_names {
++++++ mysql-5.1.42-myslq-test.patch ++++++
Index: mysql-test/Makefile.am
===================================================================
--- mysql-test/Makefile.am.orig
+++ mysql-test/Makefile.am
@@ -17,7 +17,7 @@
## Process this file with automake to create Makefile.in
-testroot = $(prefix)
+testroot = $(datadir)
testdir = $(testroot)/mysql-test
test_SCRIPTS = mtr \
Index: mysql-test/lib/My/SafeProcess/Makefile.am
===================================================================
--- mysql-test/lib/My/SafeProcess/Makefile.am.orig
+++ mysql-test/lib/My/SafeProcess/Makefile.am
@@ -13,7 +13,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-testroot = $(prefix)
+testroot = $(datadir)
safedir = $(testroot)/mysql-test/lib/My/SafeProcess
#nobase_bin_PROGRAMS = ...
safe_PROGRAMS = my_safe_process
Index: mysql-test/lib/mtr_cases.pm
===================================================================
--- mysql-test/lib/mtr_cases.pm.orig
+++ mysql-test/lib/mtr_cases.pm
@@ -262,7 +262,10 @@ sub collect_one_suite($)
["mysql-test/suite",
"mysql-test",
# Look in storage engine specific suite dirs
- "storage/*/mysql-test-suites"
+ "storage/*/mysql-test-suites",
+ # Look in subdirectories too
+ "*/mysql-test/suite",
+ "*/mysql-test"
],
[$suite]);
}
++++++ mysql-5.1.45-safe-process-in-bin.patch ++++++
Index: mysql-test/lib/My/SafeProcess.pm
===================================================================
--- mysql-test/lib/My/SafeProcess.pm.orig
+++ mysql-test/lib/My/SafeProcess.pm
@@ -89,7 +89,7 @@ sub find_bin {
if (IS_WIN32PERL or IS_CYGWIN)
{
# Use my_safe_process.exe
- my $exe= my_find_bin(".", ["lib/My/SafeProcess", "My/SafeProcess"],
+ my $exe= my_find_bin(".", ["../../bin", "lib/My/SafeProcess", "My/SafeProcess"],
"my_safe_process");
push(@safe_process_cmd, $exe);
@@ -99,7 +99,7 @@ sub find_bin {
else
{
# Use my_safe_process
- my $exe= my_find_bin(".", ["lib/My/SafeProcess", "My/SafeProcess"],
+ my $exe= my_find_bin(".", ["../../bin", "lib/My/SafeProcess", "My/SafeProcess"],
"my_safe_process");
push(@safe_process_cmd, $exe);
}
++++++ mysql-cnf.patch ++++++
Index: support-files/my-huge.cnf.sh
===================================================================
--- support-files/my-huge.cnf.sh.orig
+++ support-files/my-huge.cnf.sh
@@ -131,6 +131,10 @@ server-id = 1
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
+# The safe_mysqld script
+[safe_mysqld]
+log-error=/var/log/mysql/mysqld.log
+
[mysqldump]
quick
max_allowed_packet = 16M
Index: support-files/my-large.cnf.sh
===================================================================
--- support-files/my-large.cnf.sh.orig
+++ support-files/my-large.cnf.sh
@@ -131,6 +131,10 @@ server-id = 1
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
+# The safe_mysqld script
+[safe_mysqld]
+log-error=/var/log/mysql/mysqld.log
+
[mysqldump]
quick
max_allowed_packet = 16M
Index: support-files/my-medium.cnf.sh
===================================================================
--- support-files/my-medium.cnf.sh.orig
+++ support-files/my-medium.cnf.sh
@@ -26,6 +26,8 @@ socket = @MYSQL_UNIX_ADDR@
[mysqld]
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
+# Change following line if you want to store your database elsewhere
+datadir = /var/lib/mysql
skip-locking
key_buffer_size = 16M
max_allowed_packet = 1M
@@ -129,7 +131,13 @@ server-id = 1
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
+# The safe_mysqld script
+[safe_mysqld]
+log-error = /var/log/mysql/mysqld.log
+socket = @MYSQL_UNIX_ADDR@
+
[mysqldump]
+socket = @MYSQL_UNIX_ADDR@
quick
max_allowed_packet = 16M
Index: support-files/my-small.cnf.sh
===================================================================
--- support-files/my-small.cnf.sh.orig
+++ support-files/my-small.cnf.sh
@@ -65,6 +65,10 @@ server-id = 1
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
+# The safe_mysqld script
+[safe_mysqld]
+log-error = /var/log/mysql/mysqld.log
+
[mysqldump]
quick
max_allowed_packet = 16M
++++++ mysql-enable-plugins.patch ++++++
diff -Naru scripts/mysql_fix_privilege_tables.sql scripts/mysql_fix_privilege_tables.sql
--- scripts/mysql_fix_privilege_tables.sql 2008-11-14 18:03:14.000000000 +0100
+++ scripts/mysql_fix_privilege_tables.sql 2009-01-09 18:57:47.000000000 +0100
@@ -24,6 +24,17 @@
CREATE TABLE IF NOT EXISTS plugin ( name char(64) binary DEFAULT '' NOT NULL, dl char(128) DEFAULT '' NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='MySQL plugins';
+-- Remember for later if plugin table already existed
+set @had_plugin_table= @@warning_count != 0;
+
+-- Install plugins by default if they didn't existed
+CREATE TEMPORARY TABLE tmp_plugin LIKE plugin;
+INSERT INTO tmp_plugin (name,dl) VALUES ('ARCHIVE','ha_archive.so');
+INSERT INTO tmp_plugin (name,dl) VALUES ('FEDERATED','ha_federated.so');
+INSERT INTO tmp_plugin (name,dl) VALUES ('BLACKHOLE','ha_blackhole.so');
+INSERT INTO tmp_plugin (name,dl) VALUES ('EXAMPLE','ha_example.so');
+INSERT INTO plugin SELECT * FROM tmp_plugin WHERE @had_plugin_table=0;
+DROP TABLE tmp_plugin;
CREATE TABLE IF NOT EXISTS servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
diff -Naru scripts/mysql_fix_privilege_tables_sql.c scripts/mysql_fix_privilege_tables_sql.c
--- scripts/mysql_fix_privilege_tables_sql.c 2008-11-14 18:03:19.000000000 +0100
+++ scripts/mysql_fix_privilege_tables_sql.c 2009-01-09 19:02:35.000000000 +0100
@@ -36,6 +36,17 @@
"\n "
"CREATE TABLE IF NOT EXISTS plugin ( name char(64) binary DEFAULT '' NOT NULL, dl char(128) DEFAULT '' NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='MySQL plugins';\n "
"\n "
+"-- Remember for later if plugin table already existed\n "
+"set @had_plugin_table= @@warning_count != 0;\n "
+"\n "
+"-- Install plugins by default if they didn't existed\n "
+"CREATE TEMPORARY TABLE tmp_plugin LIKE plugin;\n "
+"INSERT INTO tmp_plugin (name,dl) VALUES ('ARCHIVE','ha_archive.so');\n "
+"INSERT INTO tmp_plugin (name,dl) VALUES ('FEDERATED','ha_federated.so');\n "
+"INSERT INTO tmp_plugin (name,dl) VALUES ('BLACKHOLE','ha_blackhole.so');\n "
+"INSERT INTO tmp_plugin (name,dl) VALUES ('EXAMPLE','ha_example.so');\n "
+"INSERT INTO plugin SELECT * FROM tmp_plugin WHERE @had_plugin_table=0;\n "
+"DROP TABLE tmp_plugin;\n "
"\n "
"CREATE TABLE IF NOT EXISTS servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';\n "
"\n "
diff -Naru scripts/mysql_system_tables.sql scripts/mysql_system_tables.sql
--- scripts/mysql_system_tables.sql 2008-11-14 17:37:05.000000000 +0100
+++ scripts/mysql_system_tables.sql 2009-01-09 19:00:35.000000000 +0100
@@ -24,6 +24,17 @@
CREATE TABLE IF NOT EXISTS plugin ( name char(64) binary DEFAULT '' NOT NULL, dl char(128) DEFAULT '' NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='MySQL plugins';
+-- Remember for later if plugin table already existed
+set @had_plugin_table= @@warning_count != 0;
+
+-- Install plugins by default if they didn't existed
+CREATE TEMPORARY TABLE tmp_plugin LIKE plugin;
+INSERT INTO tmp_plugin (name,dl) VALUES ('ARCHIVE','ha_archive.so');
+INSERT INTO tmp_plugin (name,dl) VALUES ('FEDERATED','ha_federated.so');
+INSERT INTO tmp_plugin (name,dl) VALUES ('BLACKHOLE','ha_blackhole.so');
+INSERT INTO tmp_plugin (name,dl) VALUES ('EXAMPLE','ha_example.so');
+INSERT INTO plugin SELECT * FROM tmp_plugin WHERE @had_plugin_table=0;
+DROP TABLE tmp_plugin;
CREATE TABLE IF NOT EXISTS servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
++++++ mysql-group.patch ++++++
Index: configure.in
===================================================================
--- configure.in.orig
+++ configure.in
@@ -772,6 +772,14 @@ AC_ARG_WITH(mysqld-user,
[ MYSQLD_USER=mysql ]
)
AC_SUBST(MYSQLD_USER)
+AC_ARG_WITH(mysqld-group,
+ [ --with-mysqld-group=groupname
+ What group the mysqld daemon shall be run as.],
+ [ MYSQLD_GROUP=$withval ],
+ [ MYSQLD_GROUP=mysql ]
+ )
+AC_SUBST(MYSQLD_GROUP)
+
# If we should allow LOAD DATA LOCAL
AC_MSG_CHECKING(If we should should enable LOAD DATA LOCAL by default)
Index: scripts/Makefile.am
===================================================================
--- scripts/Makefile.am.orig
+++ scripts/Makefile.am
@@ -185,6 +185,7 @@ SUFFIXES = .sh
-e 's!@''TARGET_LINUX''@!@TARGET_LINUX@!' \
-e "s!@""CONF_COMMAND""@!@CONF_COMMAND@!" \
-e 's!@''MYSQLD_USER''@!@MYSQLD_USER@!' \
+ -e 's!@''MYSQLD_GROUP''@!@MYSQLD_GROUP@!' \
-e 's!@''STATIC_NSS_FLAGS''@!@STATIC_NSS_FLAGS@!' \
-e 's!@''NON_THREADED_LIBS''@!@NON_THREADED_LIBS@!' \
-e 's!@''ZLIB_DEPS''@!@ZLIB_DEPS@!' \
Index: scripts/mysqld_safe.sh
===================================================================
--- scripts/mysqld_safe.sh.orig
+++ scripts/mysqld_safe.sh
@@ -19,6 +19,7 @@ logging=init
want_syslog=0
syslog_tag=
user='@MYSQLD_USER@'
+group='@MYSQLD_GROUP@'
pid_file=
err_log=
@@ -162,6 +163,7 @@ parse_arguments() {
--datadir=*) DATADIR="$val" ;;
--pid-file=*) pid_file="$val" ;;
--user=*) user="$val"; SET_USER=1 ;;
+ --group=*) group="$val"; SET_USER=1 ;;
# these might have been set in a [mysqld_safe] section of my.cnf
# they are added to mysqld command line to override settings from my.cnf
@@ -388,11 +390,17 @@ then
if test "$user" != "root" -o $SET_USER = 1
then
USER_OPTION="--user=$user"
+ GROUP_OPTION="--group=$group"
fi
# Change the err log to the right user, if it is in use
if [ $want_syslog -eq 0 ]; then
touch "$err_log"
- chown $user "$err_log"
+ if [ "$user" -a "$group" ]; then
+ chown $user:$group $err_log
+ else
+ [ "$user" ] && chown $user $err_log
+ [ "$group" ] && chgrp $group $err_log
+ fi
fi
if test -n "$open_files"
then
@@ -407,7 +415,12 @@ mysql_unix_port_dir=`dirname $safe_mysql
if [ ! -d $mysql_unix_port_dir ]
then
mkdir $mysql_unix_port_dir
- chown $user $mysql_unix_port_dir
+ if [ "$user" -a "$group" ]; then
+ chown $user:$group $mysql_unix_port_dir
+ else
+ [ "$user" ] && chown $user $mysql_unix_port_dir
+ [ "$group" ] && chgrp $group $mysql_unix_port_dir
+ fi
chmod 755 $mysql_unix_port_dir
fi
Index: scripts/mysql_install_db.sh
===================================================================
--- scripts/mysql_install_db.sh.orig
+++ scripts/mysql_install_db.sh
@@ -28,6 +28,7 @@ args=""
defaults=""
mysqld_opt=""
user=""
+group=""
force=0
in_rpm=0
@@ -63,6 +64,11 @@ Usage: $0 [OPTIONS]
user. You must be root to use this option. By default
mysqld runs using your current login name and files and
directories that it creates will be owned by you.
+ --group=group_name The login group to use for running mysqld. Files and
+ directories created by mysqld will be owned by this
+ group. You must be root to use this option. By default
+ mysqld runs using your current group and files and
+ directories that it creates will be owned by you.
All other options are passed to the mysqld program
@@ -103,11 +109,11 @@ parse_arguments()
--builddir=*) builddir=`parse_arg "$arg"` ;;
--srcdir=*) srcdir=`parse_arg "$arg"` ;;
--ldata=*|--datadir=*) ldata=`parse_arg "$arg"` ;;
- --user=*)
# Note that the user will be passed to mysqld so that it runs
# as 'user' (crucial e.g. if log-bin=/some_other_path/
# where a chown of datadir won't help)
- user=`parse_arg "$arg"` ;;
+ --user=*) user=`parse_arg "$arg"` ;;
+ --group=*) group=`parse_arg "$arg"` ;;
--skip-name-resolve) ip_only=1 ;;
--verbose) verbose=1 ;; # Obsolete
--rpm) in_rpm=1 ;;
@@ -360,7 +366,12 @@ do
fi
if test -w / -a ! -z "$user"
then
- chown $user $dir
+ if test -z "$group"
+ then
+ chown $user $dir
+ else
+ chown $user:$group $dir
+ fi
fi
done
@@ -369,6 +380,11 @@ then
args="$args --user=$user"
fi
+if test -n "$group"
+then
+ args="$args --group=$group"
+fi
+
# When doing a "cross bootstrap" install, no reference to the current
# host should be added to the system tables. So we filter out any
# lines which contain the current host name.
++++++ mysql-install_db-quiet.patch ++++++
--- scripts/mysql_install_db.sh 2008-11-24 14:41:54.000000000 +0100
+++ scripts/mysql_install_db.sh 2008-11-24 15:46:58.000000000 +0100
@@ -392,9 +392,10 @@
# the screen.
if test "$cross_bootstrap" -eq 0 && test -z "$srcdir"
then
- s_echo
- s_echo "To start mysqld at boot time you have to copy"
- s_echo "support-files/mysql.server to the right place for your system"
+# Output disabled, since the SUSE RPM comes with an init script installed
+# s_echo
+# s_echo "To start mysqld at boot time you have to copy"
+# s_echo "support-files/mysql.server to the right place for your system"
echo
echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !"
@@ -416,10 +417,10 @@
then
echo
echo "You can start the MySQL daemon with:"
- echo "cd $basedir ; $bindir/mysqld_safe &"
+ echo "rcmysql start"
echo
- echo "You can test the MySQL daemon with mysql-test-run.pl"
- echo "cd $basedir/mysql-test ; perl mysql-test-run.pl"
+ echo "You can test the MySQL daemon with mysql-test package"
+# echo "cd $basedir/mysql-test ; perl mysql-test-run.pl"
fi
echo
++++++ mysql-logrotate.patch ++++++
Index: support-files/mysql-log-rotate.sh
===================================================================
--- support-files/mysql-log-rotate.sh.orig
+++ support-files/mysql-log-rotate.sh
@@ -18,7 +18,7 @@
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !
-@localstatedir@/mysqld.log {
+/var/log/mysql/mysqld.log {
# create 600 mysql mysql
notifempty
daily
@@ -31,6 +31,14 @@
@bindir@/mysqladmin ping &>/dev/null
then
@bindir@/mysqladmin flush-logs
+ ret=$?
+ if test $ret -ne 0
+ then
+ echo "@sysconfdir@/logrotate.d/mysql failed, probably because" >&2
+ echo "the root acount is protected by password." >&2
+ echo "See comments in @sysconfdir@/logrotate.d/mysql on how to fix this" >&2
+ exit $ret
+ fi
fi
endscript
}
++++++ mysql-multi-configuration.patch ++++++
---
support-files/my-medium.cnf.sh | 43 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
--- support-files/my-medium.cnf.sh.orig
+++ support-files/my-medium.cnf.sh
@@ -158,3 +158,46 @@ write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
+
+[mysqld_multi]
+mysqld = /usr/bin/mysqld_safe
+mysqladmin = /usr/bin/mysqladmin
+log = /var/log/mysqld_multi.log
+# user = multi_admin
+# password = secret
+
+# If you want to use mysqld_multi uncomment 1 or more mysqld sections
+# below or add your own ones.
+
+# WARNING
+# --------
+# If you uncomment mysqld1 than make absolutely sure, that database mysql,
+# configured above, is not started. This may result in corrupted data!
+# [mysqld1]
+# port = @MYSQL_TCP_PORT@
+# datadir = /var/lib/mysql
+# pid-file = /var/lib/mysql/mysqld.pid
+# socket = /var/lib/mysql/mysql.sock
+# user = mysql
+
+# [mysqld2]
+# port = 3307
+# datadir = /var/lib/mysql-databases/mysqld2
+# pid-file = /var/lib/mysql-databases/mysqld2/mysql.pid
+# socket = /var/lib/mysql-databases/mysqld2/mysql.sock
+# user = mysql
+
+# [mysqld3]
+# port = 3308
+# datadir = /var/lib/mysql-databases/mysqld3
+# pid-file = /var/lib/mysql-databases/mysqld3/mysql.pid
+# socket = /var/lib/mysql-databases/mysqld3/mysql.sock
+# user = mysql
+
+# [mysqld6]
+# port = 3309
+# datadir = /var/lib/mysql-databases/mysqld6
+# pid-file = /var/lib/mysql-databases/mysqld6/mysql.pid
+# socket = /var/lib/mysql-databases/mysqld6/mysql.sock
+# user = mysql
+
++++++ mysql-plugins-avoid-version.patch ++++++
Index: storage/blackhole/Makefile.am
===================================================================
--- storage/blackhole/Makefile.am.orig
+++ storage/blackhole/Makefile.am
@@ -34,7 +34,7 @@ noinst_HEADERS = ha_blackhole.h
EXTRA_LTLIBRARIES = ha_blackhole.la
pkgplugin_LTLIBRARIES = @plugin_blackhole_shared_target@
-ha_blackhole_la_LDFLAGS=-module -rpath $(pkgplugindir)
+ha_blackhole_la_LDFLAGS=-module -avoid-version -rpath $(pkgplugindir)
ha_blackhole_la_CXXFLAGS=$(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_blackhole_la_CFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_blackhole_la_SOURCES=ha_blackhole.cc
Index: storage/archive/Makefile.am
===================================================================
--- storage/archive/Makefile.am.orig
+++ storage/archive/Makefile.am
@@ -35,7 +35,7 @@ noinst_PROGRAMS = archive_test archive_r
EXTRA_LTLIBRARIES = ha_archive.la
pkgplugin_LTLIBRARIES = @plugin_archive_shared_target@
-ha_archive_la_LDFLAGS = -module -rpath $(pkgplugindir)
+ha_archive_la_LDFLAGS = -module -avoid-version -rpath $(pkgplugindir)
ha_archive_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_archive_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_archive_la_SOURCES = ha_archive.cc azio.c
Index: storage/example/Makefile.am
===================================================================
--- storage/example/Makefile.am.orig
+++ storage/example/Makefile.am
@@ -34,7 +34,7 @@ noinst_HEADERS = ha_example.h
EXTRA_LTLIBRARIES = ha_example.la
pkgplugin_LTLIBRARIES = @plugin_example_shared_target@
-ha_example_la_LDFLAGS = -module -rpath $(pkgplugindir)
+ha_example_la_LDFLAGS = -module -avoid-version -rpath $(pkgplugindir)
ha_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_example_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_example_la_SOURCES = ha_example.cc
Index: storage/federated/Makefile.am
===================================================================
--- storage/federated/Makefile.am.orig
+++ storage/federated/Makefile.am
@@ -34,7 +34,7 @@ noinst_HEADERS = ha_federated.h
EXTRA_LTLIBRARIES = ha_federated.la
pkgplugin_LTLIBRARIES = @plugin_federated_shared_target@
-ha_federated_la_LDFLAGS = -module -rpath $(pkgplugindir)
+ha_federated_la_LDFLAGS = -module -avoid-version -rpath $(pkgplugindir)
ha_federated_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_federated_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_federated_la_SOURCES = ha_federated.cc
Index: storage/innodb_plugin/Makefile.am
===================================================================
--- storage/innodb_plugin/Makefile.am.orig
+++ storage/innodb_plugin/Makefile.am
@@ -329,7 +329,7 @@ libinnobase_a_CFLAGS= $(AM_CFLAGS)
EXTRA_LTLIBRARIES= ha_innodb_plugin.la
pkgplugin_LTLIBRARIES= @plugin_innodb_plugin_shared_target@
-ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir)
+ha_innodb_plugin_la_LDFLAGS= -module -avoid-version -rpath $(pkgplugindir)
ha_innodb_plugin_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
ha_innodb_plugin_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
ha_innodb_plugin_la_SOURCES= $(libinnobase_a_SOURCES)
++++++ mysql.SuSEfirewall2 ++++++
## Name: MySQL server
## Description: opens ports for MySQL in order to allow other hosts connect to it
# space separated list of allowed TCP ports
TCP="3306"
++++++ mysql_config.patch ++++++
--- scripts/mysql_config.sh.orig
+++ scripts/mysql_config.sh
@@ -92,7 +92,7 @@ fix_path pkgincludedir include/mysql inc
version='@VERSION@'
socket='@MYSQL_UNIX_ADDR@'
-ldflags='@LDFLAGS@'
+ldflags='@SAVE_LDFLAGS@'
if [ @MYSQL_TCP_PORT_DEFAULT@ -eq 0 ]; then
port=0
++++++ mysql_upgrade-exit-status.patch ++++++
returning non-zero exit status in this case is not nice to scripts using
mysql_upgrade (eg. our init script)
---
client/mysql_upgrade.c | 4 +++-
mysql-test/t/mysql_upgrade.test | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
--- client/mysql_upgrade.c.orig
+++ client/mysql_upgrade.c
@@ -758,7 +758,9 @@ int main(int argc, char **argv)
printf("This installation of MySQL is already upgraded to %s, "
"use --force if you still need to run mysql_upgrade\n",
MYSQL_SERVER_VERSION);
- die(NULL);
+ free_used_memory();
+ my_end(MY_CHECK_ERROR);
+ exit(0);
}
/*
--- mysql-test/t/mysql_upgrade.test.orig
+++ mysql-test/t/mysql_upgrade.test
@@ -19,7 +19,7 @@ file_exists $MYSQLTEST_VARDIR/master-dat
--echo Run it again - should say already completed
--replace_result $MYSQL_SERVER_VERSION VERSION
---error 1
+--error 0
--exec $MYSQL_UPGRADE --skip-verbose 2>&1
# It should have created a file in the MySQL Servers datadir
++++++ mysqld_multi.patch ++++++
---
scripts/mysqld_multi.sh | 108 ++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 100 insertions(+), 8 deletions(-)
Index: scripts/mysqld_multi.sh
===================================================================
--- scripts/mysqld_multi.sh.orig
+++ scripts/mysqld_multi.sh
@@ -2,6 +2,7 @@
use Getopt::Long;
use POSIX qw(strftime getcwd);
+use File::Path qw(mkpath);
$|=1;
$VER="2.16";
@@ -123,6 +124,7 @@ sub main
usage() if (!defined($ARGV[0]) ||
(!($ARGV[0] =~ m/^start$/i) &&
!($ARGV[0] =~ m/^stop$/i) &&
+ !($ARGV[0] =~ m/^reload$/i) &&
!($ARGV[0] =~ m/^report$/i)));
if (!$opt_no_log)
@@ -136,7 +138,7 @@ sub main
print strftime "%a %b %e %H:%M:%S %Y", localtime;
print "\n";
}
- if ($ARGV[0] =~ m/^start$/i)
+ if (($ARGV[0] =~ m/^start$/i) || ($ARGV[0] =~ m/^reload$/i))
{
if (!defined(($mysqld= my_which($opt_mysqld))) && $opt_verbose)
{
@@ -145,7 +147,11 @@ sub main
print "This is OK, if you are using option \"mysqld=...\" in ";
print "groups [mysqldN] separately for each.\n\n";
}
- start_mysqlds();
+ if ($ARGV[0] =~ m/^start$/i) {
+ start_mysqlds();
+ } elsif ($ARGV[0] =~ m/^reload$/i) {
+ reload_mysqlds();
+ }
}
else
{
@@ -301,6 +307,39 @@ sub start_mysqlds()
$com= "$mysqld";
for ($j = 0, $tmp= ""; defined($options[$j]); $j++)
{
+ if ("--datadir=" eq substr($options[$j], 0, 10)) {
+ $datadir = $options[$j];
+ $datadir =~ s/\-\-datadir\=//;
+ eval { mkpath($datadir) };
+ if ($@) {
+ print "FATAL ERROR: Cannot create data directory $datadir: $!\n";
+ exit(1);
+ }
+ if (! -d $datadir."/mysql") {
+ if (-w $datadir) {
+ print "\n\nInstalling new database in $datadir\n\n";
+ $install_cmd="@bindir@/mysql_install_db ";
+ $install_cmd.="--user=mysql ";
+ $install_cmd.="--datadir=$datadir";
+ system($install_cmd);
+ } else {
+ print "\n";
+ print "FATAL ERROR: Tried to create mysqld under group [$groups[$i]],\n";
+ print "but the data directory is not writable.\n";
+ print "data directory used: $datadir\n";
+ exit(1);
+ }
+ }
+
+ if (! -d $datadir."/mysql") {
+ print "\n";
+ print "FATAL ERROR: Tried to start mysqld under group [$groups[$i]],\n";
+ print "but no data directory was found or could be created.\n";
+ print "data directory used: $datadir\n";
+ exit(1);
+ }
+ }
+
if ("--mysqladmin=" eq substr($options[$j], 0, 13))
{
# catch this and ignore
@@ -365,6 +404,58 @@ sub start_mysqlds()
}
####
+#### reload multiple servers
+####
+
+sub reload_mysqlds()
+{
+ my (@groups, $com, $tmp, $i, @options, $j);
+
+ if (!$opt_no_log)
+ {
+ w2log("\nReloading MySQL servers\n","$opt_log",0,0);
+ }
+ else
+ {
+ print "\nReloading MySQL servers\n";
+ }
+ @groups = &find_groups($groupids);
+ for ($i = 0; defined($groups[$i]); $i++)
+ {
+ $mysqld_server = $mysqld;
+ @options = defaults_for_group($groups[$i]);
+
+ for ($j = 0, $tmp= ""; defined($options[$j]); $j++)
+ {
+ if ("--mysqladmin=" eq substr($options[$j], 0, 13))
+ {
+ # catch this and ignore
+ }
+ elsif ("--mysqld=" eq substr($options[$j], 0, 9))
+ {
+ $options[$j] =~ s/\-\-mysqld\=//;
+ $mysqld_server = $options[$j];
+ }
+ elsif ("--pid-file=" eq substr($options[$j], 0, 11))
+ {
+ $options[$j] =~ s/\-\-pid-file\=//;
+ $pid_file = $options[$j];
+ }
+ }
+ $com = "killproc -p $pid_file -HUP $mysqld_server";
+ system($com);
+
+ $com = "touch $pid_file";
+ system($com);
+ }
+ if (!$i && !$opt_no_log)
+ {
+ w2log("No MySQL servers to be reloaded (check your GNRs)",
+ "$opt_log", 0, 0);
+ }
+}
+
+###
#### stop multiple servers
####
@@ -727,7 +818,7 @@ sub usage
$my_progname version $VER by Jani Tolonen
Description:
-$my_progname can be used to start, or stop any number of separate
+$my_progname can be used to start, reload, or stop any number of separate
mysqld processes running in different TCP/IP ports and UNIX sockets.
$my_progname can read group [mysqld_multi] from my.cnf file. You may
@@ -745,16 +836,16 @@ starting from 1. These groups should be
[mysqld] group, but with those port, socket and any other options
that are to be used with each separate mysqld process. The number
in the group name has another function; it can be used for starting,
-stopping, or reporting any specific mysqld server.
+reloading, stopping, or reporting any specific mysqld server.
-Usage: $my_progname [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]
-or $my_progname [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
+Usage: $my_progname [OPTIONS] {start|reload|stop|report} [GNR,GNR,GNR...]
+or $my_progname [OPTIONS] {start|reload|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
-The GNR means the group number. You can start, stop or report any GNR,
+The GNR means the group number. You can start, reload, stop or report any GNR,
or several of them at the same time. (See --example) The GNRs list can
be comma separated or a dash combined. The latter means that all the
GNRs between GNR1-GNR2 will be affected. Without GNR argument all the
-groups found will either be started, stopped, or reported. Note that
+groups found will either be started, reloaded, stopped, or reported. Note that
syntax for specifying GNRs must appear without spaces.
Options:
++++++ rc.mysql-multi ++++++
#!/bin/bash
# Copyright (c) 1995-2010 SuSE Linux AG Nuernberg, Germany.
#
# Author: Lenz Grimmer
# Maintainer: Michal Hrusecky
#
# mysqld_multi extension added by Richard Bos, 2008
#
# /etc/init.d/mysql
#
# and its symbolic link
#
# /usr/sbin/rcmysql
#
### BEGIN INIT INFO
# Provides: mysql
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Default-Start: 2 3 5
# Default-Stop:
# Short-Description: Start the MySQL database server
# Description: Start the MySQL database server
### END INIT INFO
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num>
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
. /etc/rc.status
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
# Check for the location of initscript
if [ "`echo "$0" | grep "^\."`" ] || [ "`echo "$0" | grep "^[^/].*/"`" ]; then
MYSELF="`pwd`/$0"
else
MYSELF="$0"
fi
parse_arguments() {
for arg do
case "$arg" in
--basedir=*) basedir="`echo "$arg" | sed -e 's/^[^=]*=//'`" ;;
--datadir=*) datadir="`echo "$arg" | sed -e 's/^[^=]*=//'`" ;;
--pid-file=*) pid_file="`echo "$arg" | sed -e 's/^[^=]*=//'`" ;;
--socket=*) socket="`echo "$arg" | sed -e 's/^[^=]*=//'`" ;;
--log-error=*) log_error="`echo "$arg" | sed -e 's/^[^=]*=//'`" ;;
esac
done
}
wait_for_socket()
{
local i
for((i=0; i<150; i++)); do
sleep 0.2
test -S $1 && i='' && break
done
test -z "$i" || return 1
return 0
}
# Don't run killproc -TERM, as it could send a SIGKILL as well, possibly
# resulting in database corruption. Run kill -TERM manually instead, wait
# approximately 300 seconds and fail if mysql doesn't respond. This will at
# least prevent the SIGKILL when doing 'rcmysql stop' manually. During system
# shutdown, we are out of luck...
# See https://bugzilla.novell.com/show_bug.cgi?id=223209
kill_mysql ()
{
local pid exe
test -e "$pid_file" || return 7 # not running
pid=`cat "$pid_file"` || return 4 # insufficient privileges
if ! test -e /proc/version; then
mount -n -t proc proc /proc
test -e /proc/version || return 100
fi
test -L "/proc/$pid/exe" || return 7
exe=`readlink "/proc/$pid/exe"` || return 4
test "`echo "$exe" | grep "^$MYSQLD"`" || return 7
kill -STOP "$pid"
kill -TERM "$pid" || return 4 # suboptimal
kill -CONT "$pid"
for i in `seq 3000`; do
# mysqld removes its pid file
test -e "$pid_file" || return 0
LC_ALL=C sleep 0.1
done
test -e "$pid_file" || return 0
return 1
}
# Helper function which can end with any status
set_return_value() {
return $1
}
# Checks for obsolete database
check_obsolete() {
# check for ISAM tables
tables="`find "$datadir" -name '*.ISM' 2> /dev/null | sed "s@$datadir/*@@; s@.ISM@@; s@/@.@;"`"
if test "$tables" ; then
echo
echo "Some tables still use ISAM format, which is NO LONGER SUPPORTED"
echo "since mysql 5.0. To use these tables, you would need to open them"
echo "from an older mysql server and convert to something better (eg. MyISAM)."
echo
echo "Tables using ISAM are: "
echo " $tables "
echo
fi
# check for bdb tables
tables="`find "$datadir" -name '*.db' 2> /dev/null | sed "s@$datadir/*@@; s@.db@@; s@/@.@;"`"
if test -n "$tables" ; then
echo
echo "Some tables still use BerkeleyDB format, which is NO LONGER SUPPORTED"
echo "since mysql 5.1. To use these tables, you would need to open them"
echo "from an older mysql server and convert to something better (eg. MyISAM)."
echo
echo "Tables using BerkeleyDB are: "
echo " $tables "
echo
fi
}
# Check if we want to run multiple instances.
[[ "`cat /etc/my.cnf | sed -n 's|^[[:blank:]]*\[mysqld[0-9]\+\]|yes|p'`" ]] && MYSQLD_MULTI=yes
# This was old way how to specify this, left for backward compatibility.
[[ -f /etc/sysconfig/mysql ]] && . /etc/sysconfig/mysql
if [[ "$MYSQLD_MULTI" == "yes" ]]; then
[[ -x /usr/bin/mysqld_multi ]] || {
echo -n "MySQL: /usr/bin/mysqld_multi not found"
rc_failed 5; rc_status -v; rc_exit;
}
case "$1" in
start)
# FIXME:
# We assume a fresh install if the directory $datadir/mysql
# does not exist and create the privilege database
# if ! test -d $datadir/mysql; then
# echo -n "Creating MySQL privilege database... "
# mysql_install_db --user=$mysql_daemon_user --datadir=$datadir || {
# rc_failed; rc_status -v; rc_exit
# }
# fi
echo -n "Starting service multi MySQL "
mysqld_multi start
# Remember status and be verbose
rc_status -v
;;
stop)
echo -n "Shutting down service multi MySQL "
mysqld_multi stop
# Remember status and be verbose
rc_status -v
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
"$MYSELF" status >/dev/null && "$MYSELF" restart
# Remember status and be quiet
rc_status
;;
restart|force-reload)
echo "Restarting service multi MySQL "
"$MYSELF" stop
"$MYSELF" start
rc_status
;;
reload)
echo -n "Reloading service multi MySQL "
mysqld_multi reload
rc_status -v
;;
status)
STATUS=$(mysqld_multi report)
echo -n "$STATUS"
# Set the status for rc_status
echo "$STATUS" | grep -q "is running"
rc_status -v
;;
*)
echo "Usage: $MYSELF {start|stop|status|reload|restart|try-restart|force-reload}"
exit 1
;;
esac
else
# Test, if mysqld or mysql-max actually exist
unset MYSQLD
# use mysqld-debug only if explicitly requested (TODO: sysconfig variable?)
if test "$MYSQLD_DEBUG" = yes -a -x /usr/sbin/mysqld-debug
then
MYSQLD=/usr/sbin/mysqld-debug
elif test -x /usr/sbin/mysqld-max
then
MYSQLD=/usr/sbin/mysqld-max
elif test -x /usr/sbin/mysqld
then
MYSQLD=/usr/sbin/mysqld
fi
test "$MYSQLD" || {
echo -n "Nor /usr/sbin/mysqld nor /usr/sbin/mysqld-max exists";
rc_failed 5; rc_status -v; rc_exit;
}
# The following section has been taken from
# the original MySQL init script
# Note: If you want to change these variables, you'll make your life easier
# if you do so in /etc/my.cnf, which is preserved during upgrades
basedir=/usr
datadir=/var/lib/mysql
mysql_daemon_user=mysql
mysql_daemon_group=mysql
pid_file=/var/run/mysql/mysqld.pid
socket=/var/run/mysql/mysql.sock
print_defaults=/usr/bin/my_print_defaults
log_error=/var/log/mysql/mysqld.log
mode=$1 # start or stop
log_base="`echo "$log_error" | sed 's|\.log$||'`"
[ "$log_base" \!= "$log_error" ] || log_base="/var/log/mysql/mysql"
log_upgrade="${log_base}-upgrade.log"
log_upgrade_run="${log_base}-upgrade-run.log"
log_query="${log_base}-query.log"
parse_arguments `$print_defaults $defaults mysqld mysql_server`
export TMPDIR="`cat /var/run/mysql/tmpdir 2> /dev/null`"
# Safeguard (relative paths, core dumps..)
cd "$basedir"
case "$1" in
start)
# exit gracefully, if we are already running
"$MYSELF" status >/dev/null && echo -n "Starting service MySQL " && \
rc_status -v && rc_exit
# prepare tmp dir
if [ "$TMPDIR" ] && [ -d "$TMPDIR" ] && \
[ "`ls -ld "$TMPDIR" | grep "^drwx------[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ]; then
rm -rf "$TMPDIR"
fi
TMPDIR="`mktemp -d -p /var/tmp mysql.XXXXXX | tee /var/run/mysql/tmpdir`"
[ -z "$TMPDIR" ] || chown "$mysql_daemon_user:$mysql_daemon_group" "$TMPDIR"
[ "`ls -ld "$TMPDIR" | grep "^drwx------[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ] || {
echo "Can't create secure $TMPDIR"
rc_failed; rc_status -v; rc_exit;
}
# Test, if safe_mysqld actually exists
SAFE_MYSQLD=/usr/bin/mysqld_safe
test -x $SAFE_MYSQLD || {
echo "$SAFE_MYSQLD does not exist ";
rc_failed 5; rc_status -v; rc_exit;
}
debug_flags=""
if test "$MYSQLD_DEBUG" = yes; then
# add --log, --core-file and --debug
# but only if not already set in my.cnf
if ! $print_defaults mysqld | \
grep -q -e '--log$' -e '--log[[:blank:]=]'
then
debug_flags="--log=${log_query}"
fi
if ! $print_defaults mysqld | grep -q -e '^--debug\>' &&
test "$MYSQLD" = /usr/sbin/mysqld-debug
then
debug_flags="$debug_flags --debug=d:t:F:L:o,$datadir/mysqld.trace"
fi
if ! $print_defaults mysqld | grep -q -e '^--core-file\>'
then
debug_flags="$debug_flags --core-file"
fi
fi
# Creating parent directories for logs
for i in "$log_upgrade" "$log_query" "$log_error"; do
log_dir="`dirname "$i"`"
if [ \! -d "$log_dir" ]; then
mkdir -p "$log_dir"
chmod 660 "$log_dir"
fi
done
# We assume a fresh install if the directory $datadir/mysql
# does not exist and create the privilege database
if ! test -d "$datadir/mysql"; then
echo "Creating MySQL privilege database... "
mysql_install_db --user="$mysql_daemon_user" --datadir="$datadir" ||{
rc_failed; rc_status -v; rc_exit
}
fi
check_obsolete
# Run mysql_upgrade on every package install/upgrade. Not allways
# necessary, but doesn't do any harm.
if test -f "$datadir/.run-mysql_upgrade" ; then
echo >> "$log_upgrade"
echo "`LANG="" date` - upgrading MySQL..." >> "$log_upgrade"
echo >> "$log_upgrade"
echo "Will update MySQL now, if you encounter any problems, please read following file:" | tee -a "$log_upgrade"
echo " /usr/share/doc/packages/mysql/README.SuSE" | tee -a "$log_upgrade"
# Check logs for inconsistencies
SRCLOGS=""
ALL_SRCLOGS=""
for i in "$log_error" /var/lib/mysql/mysqld.log \
/var/log/mysqld.log ; do
if test -f "$i"; then
SRCLOGS="$i"
ALL_SRCLOGS="${ALL_SRCLOGS} ${i}"
fi
done
if [ "${ALL_SRCLOGS}" \!= " ${SRCLOGS}" ]; then
echo "Log files inconsistency, please merge following files manually:"
echo $ALL_SRCLOGS | sed 's|[[:blank:]]\+|\n|' | sed 's|^|\t|'
else
if [ "$SRCLOGS" ]; then
[ "$SRCLOGS" = "$log_error" ] || mv "$SRCLOGS" "$log_error"
fi
fi
check_obsolete >> "$log_upgrade"
# instead of running mysqld --bootstrap, which wouldn't allow
# us to run mysql_upgrade, we start a full-featured server with
# --skip-grant-tables and restict access to it by unix
# permissions of the named socket
protected="`cat /var/run/mysql/protecteddir 2> /dev/null`"
if [ -d "$protected" ]; then
pid="`cat "$protected/mysqld.pid" 2> /dev/null`"
if [ "$pid" ] && [ -d "/proc/$pid" ] &&
[ "`readlink "/proc/$pid/exe" | grep "mysql"`" ]; then
echo "Can't update as another updating process is currently running" | tee -a "$log_upgrade"
echo "Please check process $pid and terminate it before restarting MySQL" | tee -a "$log_upgrade"
rc_failed; rc_status -v; rc_exit;
else
rm -rf "$protected"
fi
fi
protected="`mktemp -d -p /var/tmp mysql-protected.XXXXXX | tee /var/run/mysql/protecteddir`"
[ -z "$protected" ] || chown "$mysql_daemon_user:$mysql_daemon_group" "$protected"
[ "`ls -ld "$protected" | grep "^drwx------[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ] || {
echo "Can't create secure $protected" | tee -a "$log_upgrade"
rc_failed; rc_status -v; rc_exit;
}
echo "Running protected MySQL... " | tee -a "$log_upgrade"
$SAFE_MYSQLD \
--mysqld=${MYSQLD#/usr/sbin/} \
$debug_flags \
--skip-networking \
--skip-grant-tables \
--datadir="$datadir" \
--user="$mysql_daemon_user" \
--log-error="$log_upgrade_run" \
--socket="$protected/mysql.sock" \
--pid-file="$protected/mysqld.pid" \
--group="$mysql_daemon_group" &>/dev/null &
wait_for_socket "$protected/mysql.sock" || {
echo "error: $protected/mysql.sock file didn't appeared... " | tee -a "$log_upgrade"
echo " Try checking \"$log_upgrade_run\"... " | tee -a "$log_upgrade"
rc_failed; rc_status -v; rc_exit;
}
echo "Upgrading MySQL... " | tee -a "$log_upgrade"
/usr/bin/mysql_upgrade \
--socket="$protected/mysql.sock" | tee -a "$log_upgrade"
[ "$PIPESTATUS" -ne 0 ] && {
rc_failed; rc_status -v;
kill -TERM "`cat $protected/mysqld.pid`"
rc_exit; }
kill -TERM "`cat $protected/mysqld.pid`"
rm -rf "$protected"
# Fix ownerships and permissions for $datadir
chmod 750 "$datadir"
chown -R "$mysql_daemon_user:$mysql_daemon_group" "$datadir"
rm -f "$datadir/.run-mysql_upgrade" \
"$datadir"/{update-stamp-*,mysql/stamp-4.1} # used in the past
chown "$mysql_daemon_user:$mysql_daemon_group" "$log_upgrade"
chmod 640 "$log_upgrade"
fi
echo -n "Starting service MySQL "
$SAFE_MYSQLD \
--mysqld=${MYSQLD#/usr/sbin/} \
$debug_flags \
--user="$mysql_daemon_user" \
--pid-file="$pid_file" \
--socket="$socket" \
--datadir="$datadir" &>/dev/null &
wait_for_socket "$socket" || {
# let's not treat this as a fatal error
echo "warning: $socket didn't appear within 30 seconds"
}
chmod a+r "$pid_file"
# Rmember status and be verbose
rc_status -v
;;
stop)
echo -n "Shutting down service MySQL "
kill_mysql
if [ "$TMPDIR" ] && [ -d "$TMPDIR" ] && \
[ "`ls -ld "$TMPDIR" | grep "^drwx------[[:blank:]]\+[0-9]\+[[:blank:]]\+$mysql_daemon_user[[:blank:]]\+$mysql_daemon_group[[:blank:]]\+.*"`" ]; then
rm -rf "$TMPDIR"
fi
# Remember status and be verbose
rc_status -v
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
"$MYSELF" status >/dev/null && "$MYSELF" restart
# Remember status and be quiet
rc_status
;;
restart|force-reload)
echo "Restarting service MySQL "
"$MYSELF" stop
"$MYSELF" start
rc_status
;;
reload)
echo -n "Reloading service MySQL "
kill -HUP "`cat "$pid_file"`"
touch "$pid_file"
rc_status -v
;;
check|status)
echo -n "Checking for service MySQL: "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# Status has a slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
# NOTE: checkproc returns LSB compliant status values,
# but it checks for running binary first and only
# if it doesn't find running process with proper
# name it checks pidfile. So we can't use it because
# akonadi runs it's own database.
# checkproc -p $pid_file $MYSQLD
if [ -f "$pid_file" ]; then
if ! [ -e /proc/version ]; then
mount -n -t proc proc /proc
test -e /proc/version || set_return_value 100
fi
pid="`cat "$pid_file"`"
if [ "$pid" ] && [ -d "/proc/$pid" ]; then
cmd=`cat "/proc/$pid/cmdline" 2> /dev/null`
exe=`readlink "/proc/$pid/exe" 2> /dev/null`
if [ "`echo "$exe" | grep "^$MYSQLD"`" ] || [ "`echo "$cmd" | grep "^$MYSQLD"`" ]; then
set_return_value 0
else
set_return_value 1
fi
else
set_return_value 1
fi
else
set_return_value 3
fi
rc_status -v
;;
*)
echo "Usage: $MYSELF {start|stop|status|reload|restart|try-restart|force-reload}"
exit 1
;;
esac
fi
rc_exit
# vim: ft=sh
++++++ suse-test-run ++++++
#!/usr/bin/perl
#
# Test the SUSE mysql(-Max) package using the MySQL testsuite
my $id = getpwnam("mysql") or die "can't find user \"mysql\": $!";
my $dir = "/usr/share/mysql-test/";
if ($< == 0) {
($<, $>) = ($id, $id);
if ($< != $id || $> != $id) {
die "can't switch to user mysql(id $id): $!";
}
}
chdir($dir) or die "can't cd to $dir: $!";
exec("./mysql-test-run.pl", "--big-test", @ARGV);
die "can't execute mysql-test-run.pl: $!";
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org