Update to mysql version 5.0.67

This commit is contained in:
Tom Lane 2008-08-23 20:31:19 +00:00 committed by Michal Schorm
parent 92b7d42add
commit 67c46965b4
9 changed files with 60 additions and 279 deletions

View File

@ -1 +1 @@
mysql-5.0.51a.tar.gz
mysql-5.0.67.tar.gz

View File

@ -1,14 +1,21 @@
diff -Naur mysql-5.0.15.orig/include/my_global.h mysql-5.0.15/include/my_global.h
--- mysql-5.0.15.orig/include/my_global.h 2005-10-16 21:27:27.000000000 -0400
+++ mysql-5.0.15/include/my_global.h 2005-11-02 16:16:37.000000000 -0500
@@ -107,6 +107,10 @@
#define _GNU_SOURCE 1
"extern int errno" is just a really bad idea.
diff -Naur mysql-5.0.67.orig/include/my_sys.h mysql-5.0.67/include/my_sys.h
--- mysql-5.0.67.orig/include/my_sys.h 2008-08-04 08:19:12.000000000 -0400
+++ mysql-5.0.67/include/my_sys.h 2008-08-23 14:39:08.000000000 -0400
@@ -208,13 +208,8 @@
#endif
#endif /* MSDOS */
+#ifdef __linux__
+#define HAVE_ERRNO_AS_DEFINE
+#endif
-#ifndef errno /* did we already get it? */
-#ifdef HAVE_ERRNO_AS_DEFINE
#include <errno.h> /* errno is a define */
-#else
-extern int errno; /* declare errno */
-#endif
-#endif /* #ifndef errno */
+
/*
Temporary solution to solve bug#7156. Include "sys/types.h" before
the thread headers, else the function madvise() will not be defined
extern char NEAR errbuff[NRERRBUFFS][ERRMSGSIZE];
extern char *home_dir; /* Home directory for user */
extern const char *my_progname; /* program-name (printed in errors) */

View File

@ -1,114 +0,0 @@
Back-port upstream fix for CVE-2007-5925.
diff -Naur mysql-5.0.51a.orig/innobase/include/db0err.h mysql-5.0.51a/innobase/include/db0err.h
--- mysql-5.0.51a.orig/innobase/include/db0err.h 2008-01-11 09:43:41.000000000 -0500
+++ mysql-5.0.51a/innobase/include/db0err.h 2008-07-27 14:40:23.000000000 -0400
@@ -57,6 +57,18 @@
buffer pool (for big transactions,
InnoDB stores the lock structs in the
buffer pool) */
+#define DB_FOREIGN_DUPLICATE_KEY 46 /* foreign key constraints
+ activated by the operation would
+ lead to a duplicate key in some
+ table */
+#define DB_TOO_MANY_CONCURRENT_TRXS 47 /* when InnoDB runs out of the
+ preconfigured undo slots, this can
+ only happen when there are too many
+ concurrent transactions */
+#define DB_UNSUPPORTED 48 /* when InnoDB sees any artefact or
+ a feature that it can't recoginize or
+ work with e.g., FT indexes created by
+ a later version of the engine. */
/* The following are partial failure codes */
#define DB_FAIL 1000
diff -Naur mysql-5.0.51a.orig/innobase/include/page0cur.h mysql-5.0.51a/innobase/include/page0cur.h
--- mysql-5.0.51a.orig/innobase/include/page0cur.h 2008-01-11 09:43:26.000000000 -0500
+++ mysql-5.0.51a/innobase/include/page0cur.h 2008-07-27 14:40:23.000000000 -0400
@@ -22,6 +22,7 @@
/* Page cursor search modes; the values must be in this order! */
+#define PAGE_CUR_UNSUPP 0
#define PAGE_CUR_G 1
#define PAGE_CUR_GE 2
#define PAGE_CUR_L 3
diff -Naur mysql-5.0.51a.orig/sql/ha_innodb.cc mysql-5.0.51a/sql/ha_innodb.cc
--- mysql-5.0.51a.orig/sql/ha_innodb.cc 2008-01-11 09:43:39.000000000 -0500
+++ mysql-5.0.51a/sql/ha_innodb.cc 2008-07-27 14:40:23.000000000 -0400
@@ -521,6 +521,9 @@
mark_transaction_to_rollback(thd, TRUE);
return(HA_ERR_LOCK_TABLE_FULL);
+ } else if (error == DB_UNSUPPORTED) {
+
+ return(HA_ERR_UNSUPPORTED);
} else {
return(-1); // Unknown error
}
@@ -3710,11 +3713,21 @@
and comparison of non-latin1 char type fields in
innobase_mysql_cmp() to get PAGE_CUR_LE_OR_EXTENDS to
work correctly. */
-
- default: assert(0);
+ case HA_READ_MBR_CONTAIN:
+ case HA_READ_MBR_INTERSECT:
+ case HA_READ_MBR_WITHIN:
+ case HA_READ_MBR_DISJOINT:
+ my_error(ER_TABLE_CANT_HANDLE_SPKEYS, MYF(0));
+ return(PAGE_CUR_UNSUPP);
+ /* do not use "default:" in order to produce a gcc warning:
+ enumeration value '...' not handled in switch
+ (if -Wswitch or -Wall is used)
+ */
}
- return(0);
+ my_error(ER_CHECK_NOT_IMPLEMENTED, MYF(0), "this functionality");
+
+ return(PAGE_CUR_UNSUPP);
}
/*
@@ -3852,11 +3865,18 @@
last_match_mode = (uint) match_mode;
- innodb_srv_conc_enter_innodb(prebuilt->trx);
+ if (mode != PAGE_CUR_UNSUPP) {
- ret = row_search_for_mysql((byte*) buf, mode, prebuilt, match_mode, 0);
+ innodb_srv_conc_enter_innodb(prebuilt->trx);
- innodb_srv_conc_exit_innodb(prebuilt->trx);
+ ret = row_search_for_mysql((byte*) buf, mode, prebuilt,
+ match_mode, 0);
+
+ innodb_srv_conc_exit_innodb(prebuilt->trx);
+ } else {
+
+ ret = DB_UNSUPPORTED;
+ }
if (ret == DB_SUCCESS) {
error = 0;
@@ -5171,8 +5191,16 @@
mode2 = convert_search_mode_to_innobase(max_key ? max_key->flag :
HA_READ_KEY_EXACT);
- n_rows = btr_estimate_n_rows_in_range(index, range_start,
- mode1, range_end, mode2);
+ if (mode1 != PAGE_CUR_UNSUPP && mode2 != PAGE_CUR_UNSUPP) {
+
+ n_rows = btr_estimate_n_rows_in_range(index, range_start,
+ mode1, range_end,
+ mode2);
+ } else {
+
+ n_rows = 0;
+ }
+
dtuple_free_for_mysql(heap1);
dtuple_free_for_mysql(heap2);

View File

@ -4,10 +4,10 @@ like /usr/share/mysql-test, we have to hack up the paths in install_test_db.
This patch also improves the documentation a tad.
diff -Naur mysql-5.0.40.orig/mysql-test/README mysql-5.0.40/mysql-test/README
--- mysql-5.0.40.orig/mysql-test/README 2007-04-20 10:14:42.000000000 -0400
+++ mysql-5.0.40/mysql-test/README 2007-05-23 14:41:03.000000000 -0400
@@ -6,6 +6,17 @@
diff -Naur mysql-5.0.67.orig/mysql-test/README mysql-5.0.67/mysql-test/README
--- mysql-5.0.67.orig/mysql-test/README 2008-08-04 08:19:20.000000000 -0400
+++ mysql-5.0.67/mysql-test/README 2008-08-23 16:25:14.000000000 -0400
@@ -6,6 +6,19 @@
actually have a co-existing MySQL installation. The tests will not
conflict with it.
@ -20,12 +20,14 @@ diff -Naur mysql-5.0.40.orig/mysql-test/README mysql-5.0.40/mysql-test/README
+so you need not start the mysqld service beforehand. If you have not
+installed mysql-cluster, use
+ sudo -u mysql ./mysql-test-run --skip-ndbcluster
+to skip the cluster-related tests.
+to skip the cluster-related tests. To clean up afterwards, remove the
+created "var" subdirectory, eg
+ sudo -u mysql rm -rf /usr/share/mysql-test/var
+
All tests must pass. If one or more of them fail on your system, please
read the following manual section for instructions on how to report the
problem:
@@ -25,7 +36,8 @@
@@ -25,7 +38,8 @@
With no test cases named on the command line, mysql-test-run falls back
to the normal "non-extern" behavior. The reason for this is that some
@ -35,9 +37,9 @@ diff -Naur mysql-5.0.40.orig/mysql-test/README mysql-5.0.40/mysql-test/README
You can create your own test cases. To create a test case, create a new
diff -Naur mysql-5.0.40.orig/mysql-test/install_test_db.sh mysql-5.0.40/mysql-test/install_test_db.sh
--- mysql-5.0.40.orig/mysql-test/install_test_db.sh 2007-04-20 10:14:31.000000000 -0400
+++ mysql-5.0.40/mysql-test/install_test_db.sh 2007-05-23 14:39:44.000000000 -0400
diff -Naur mysql-5.0.67.orig/mysql-test/install_test_db.sh mysql-5.0.67/mysql-test/install_test_db.sh
--- mysql-5.0.67.orig/mysql-test/install_test_db.sh 2008-08-04 08:19:21.000000000 -0400
+++ mysql-5.0.67/mysql-test/install_test_db.sh 2008-08-23 16:21:59.000000000 -0400
@@ -26,18 +26,15 @@
libexecdir=../libexec

View File

@ -1,39 +0,0 @@
You'd think MySQL AB would have learned last year that a test that's designed
to fail next January 1st isn't a good idea. Short-sightedness seems to still
reign supreme over there, however. We will dike out this test, and we will
not put it back as long as it's designed to depend on the value of now().
Whatever bit of testing coverage we might lose here is not worth packages
that break annually.
diff -Naur mysql-5.0.45.orig/mysql-test/r/view.result mysql-5.0.45/mysql-test/r/view.result
--- mysql-5.0.45.orig/mysql-test/r/view.result 2007-07-04 09:49:09.000000000 -0400
+++ mysql-5.0.45/mysql-test/r/view.result 2008-01-07 22:26:00.000000000 -0500
@@ -2709,14 +2709,6 @@
SHOW CREATE VIEW v1;
View Create View
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select (year(now()) - year(`t1`.`DOB`)) AS `Age` from `t1` having (`Age` < 75)
-SELECT (year(now())-year(DOB)) AS Age FROM t1 HAVING Age < 75;
-Age
-43
-39
-SELECT * FROM v1;
-Age
-43
-39
DROP VIEW v1;
DROP TABLE t1;
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, a char(6) DEFAULT 'xxx');
diff -Naur mysql-5.0.45.orig/mysql-test/t/view.test mysql-5.0.45/mysql-test/t/view.test
--- mysql-5.0.45.orig/mysql-test/t/view.test 2007-07-04 09:49:09.000000000 -0400
+++ mysql-5.0.45/mysql-test/t/view.test 2008-01-07 22:25:44.000000000 -0500
@@ -2560,9 +2560,6 @@
FROM t1 HAVING Age < 75;
SHOW CREATE VIEW v1;
-SELECT (year(now())-year(DOB)) AS Age FROM t1 HAVING Age < 75;
-SELECT * FROM v1;
-
DROP VIEW v1;
DROP TABLE t1;

View File

@ -1,75 +0,0 @@
Repair 5.0.50 SSL breakage, per upstream bug
http://bugs.mysql.com/bug.php?id=33050
diff -Naur mysql-5.0.54a.orig/vio/viossl.c mysql-5.0.54a/vio/viossl.c
--- mysql-5.0.54a.orig/vio/viossl.c 2008-01-11 09:08:38.000000000 -0500
+++ mysql-5.0.54a/vio/viossl.c 2008-02-12 15:30:42.000000000 -0500
@@ -172,20 +172,15 @@
vio_delete(vio);
}
-int sslaccept(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
-{
- DBUG_ENTER("sslaccept");
- DBUG_RETURN(sslconnect(ptr, vio, timeout));
-}
-
-int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
+static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
+ int (*connect_accept_func)(SSL*))
{
SSL *ssl;
my_bool unused;
my_bool was_blocking;
- DBUG_ENTER("sslconnect");
+ DBUG_ENTER("ssl_do");
DBUG_PRINT("enter", ("ptr: 0x%lx, sd: %d ctx: 0x%lx",
(long) ptr, vio->sd, (long) ptr->ssl_context));
@@ -204,13 +199,9 @@
SSL_SESSION_set_timeout(SSL_get_session(ssl), timeout);
SSL_set_fd(ssl, vio->sd);
- /*
- SSL_do_handshake will select between SSL_connect
- or SSL_accept depending on server or client side
- */
- if (SSL_do_handshake(ssl) < 1)
+ if (connect_accept_func(ssl) < 1)
{
- DBUG_PRINT("error", ("SSL_do_handshake failure"));
+ DBUG_PRINT("error", ("SSL_connect/accept failure"));
report_errors(ssl);
SSL_free(ssl);
vio_blocking(vio, was_blocking, &unused);
@@ -259,6 +250,20 @@
}
+int sslaccept(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
+{
+ DBUG_ENTER("sslaccept");
+ DBUG_RETURN(ssl_do(ptr, vio, timeout, SSL_accept));
+}
+
+
+int sslconnect(struct st_VioSSLFd *ptr, Vio *vio, long timeout)
+{
+ DBUG_ENTER("sslconnect");
+ DBUG_RETURN(ssl_do(ptr, vio, timeout, SSL_connect));
+}
+
+
int vio_ssl_blocking(Vio *vio __attribute__((unused)),
my_bool set_blocking_mode,
my_bool *old_mode)
@@ -269,4 +274,6 @@
return (set_blocking_mode ? 0 : 1);
}
+
+
#endif /* HAVE_OPENSSL */

View File

@ -9,27 +9,27 @@ Also, tweak the Perl test script to find some files where we install them;
without this, the build-time test works but the mysql-test RPM doesn't.
diff -Naur mysql-5.0.40.orig/Makefile.am mysql-5.0.40/Makefile.am
--- mysql-5.0.40.orig/Makefile.am 2007-04-20 10:14:34.000000000 -0400
+++ mysql-5.0.40/Makefile.am 2007-05-23 12:59:49.000000000 -0400
@@ -126,11 +126,11 @@
diff -Naur mysql-5.0.67.orig/Makefile.am mysql-5.0.67/Makefile.am
--- mysql-5.0.67.orig/Makefile.am 2008-08-04 08:18:47.000000000 -0400
+++ mysql-5.0.67/Makefile.am 2008-08-23 13:49:56.000000000 -0400
@@ -127,11 +127,11 @@
test-ps:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol
+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --ssl --ps-protocol
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol
+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --ssl --ps-protocol
test-ns:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem)
+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --ssl
- @PERL@ ./mysql-test-run.pl $(force) $(mem)
+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --ssl
test: test-ns test-ps
diff -Naur mysql-5.0.40.orig/mysql-test/lib/mtr_process.pl mysql-5.0.40/mysql-test/lib/mtr_process.pl
--- mysql-5.0.40.orig/mysql-test/lib/mtr_process.pl 2007-04-20 10:39:41.000000000 -0400
+++ mysql-5.0.40/mysql-test/lib/mtr_process.pl 2007-05-23 12:59:49.000000000 -0400
@@ -148,6 +148,9 @@
diff -Naur mysql-5.0.67.orig/mysql-test/lib/mtr_process.pl mysql-5.0.67/mysql-test/lib/mtr_process.pl
--- mysql-5.0.67.orig/mysql-test/lib/mtr_process.pl 2008-08-04 08:32:17.000000000 -0400
+++ mysql-5.0.67/mysql-test/lib/mtr_process.pl 2008-08-23 13:48:23.000000000 -0400
@@ -150,6 +150,9 @@
{
# Child, redirect output and exec
@ -39,10 +39,10 @@ diff -Naur mysql-5.0.40.orig/mysql-test/lib/mtr_process.pl mysql-5.0.40/mysql-te
$SIG{INT}= 'DEFAULT'; # Parent do some stuff, we don't
my $log_file_open_mode = '>';
diff -Naur mysql-5.0.40.orig/mysql-test/mysql-test-run.pl mysql-5.0.40/mysql-test/mysql-test-run.pl
--- mysql-5.0.40.orig/mysql-test/mysql-test-run.pl 2007-04-20 10:14:30.000000000 -0400
+++ mysql-5.0.40/mysql-test/mysql-test-run.pl 2007-05-23 13:02:12.000000000 -0400
@@ -1465,13 +1465,15 @@
diff -Naur mysql-5.0.67.orig/mysql-test/mysql-test-run.pl mysql-5.0.67/mysql-test/mysql-test-run.pl
--- mysql-5.0.67.orig/mysql-test/mysql-test-run.pl 2008-08-04 08:19:21.000000000 -0400
+++ mysql-5.0.67/mysql-test/mysql-test-run.pl 2008-08-23 13:48:23.000000000 -0400
@@ -1510,13 +1510,15 @@
$exe_ndbd=
mtr_exe_maybe_exists("$ndb_path/src/kernel/ndbd",
@ -60,7 +60,7 @@ diff -Naur mysql-5.0.40.orig/mysql-test/mysql-test-run.pl mysql-5.0.40/mysql-tes
$exe_ndb_waiter=
mtr_exe_maybe_exists("$ndb_path/tools/ndb_waiter",
"$ndb_path/ndb_waiter");
@@ -1572,7 +1574,8 @@
@@ -1617,7 +1619,8 @@
# Look for mysql_fix_privilege_tables.sql script
$file_mysql_fix_privilege_tables=
mtr_file_exists("$glob_basedir/scripts/mysql_fix_privilege_tables.sql",
@ -70,7 +70,7 @@ diff -Naur mysql-5.0.40.orig/mysql-test/mysql-test-run.pl mysql-5.0.40/mysql-tes
if ( ! $opt_skip_ndbcluster and executable_setup_ndb()) {
mtr_warning("Could not find all required ndb binaries, " .
@@ -3999,7 +4002,7 @@
@@ -4094,7 +4097,7 @@
if ( defined $exe )
{

View File

@ -1,6 +1,6 @@
Name: mysql
Version: 5.0.51a
Release: 2%{?dist}
Version: 5.0.67
Release: 1%{?dist}
Summary: MySQL client programs and shared libraries
Group: Applications/Databases
URL: http://www.mysql.com
@ -31,10 +31,7 @@ Patch7: mysql-rpl-test.patch
Patch8: mysql-install-test.patch
Patch9: mysql-bdb-link.patch
Patch10: mysql-bdb-open.patch
Patch11: mysql-innodb-crash.patch
Patch12: mysql-ssl.patch
Patch13: mysql-no-dbug.patch
Patch14: mysql-ss-test.patch
Patch15: mysql-stack-guard.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@ -157,10 +154,7 @@ the MySQL sources.
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
libtoolize --force
@ -385,6 +379,7 @@ fi
%{_infodir}/*
%{_mandir}/man1/mysql.1*
%{_mandir}/man1/mysql_config.1*
%{_mandir}/man1/mysql_find_rows.1*
%{_mandir}/man1/mysql_tableinfo.1*
%{_mandir}/man1/mysql_waitpid.1*
@ -479,7 +474,6 @@ fi
%{_mandir}/man1/mysql_convert_table_format.1*
%{_mandir}/man1/myisam_ftdump.1*
%{_mandir}/man1/mysql.server.1*
%{_mandir}/man1/mysql_config.1*
%{_mandir}/man1/mysql_explain_log.1*
%{_mandir}/man1/mysql_fix_extensions.1*
%{_mandir}/man1/mysql_fix_privilege_tables.1*
@ -487,6 +481,7 @@ fi
%{_mandir}/man1/mysql_secure_installation.1*
%{_mandir}/man1/mysql_upgrade.1*
%{_mandir}/man1/mysql_zap.1*
%{_mandir}/man1/mysqlbug.1*
%{_mandir}/man1/mysqlbinlog.1*
%{_mandir}/man1/mysqlcheck.1*
%{_mandir}/man1/mysqld_multi.1*
@ -554,7 +549,6 @@ fi
%{_mandir}/man1/ndb_drop_table.1*
%{_mandir}/man1/ndb_error_reporter.1*
%{_mandir}/man1/ndb_mgm.1*
%{_mandir}/man1/ndb_mgmd.1*
%{_mandir}/man1/ndb_print_backup_file.1*
%{_mandir}/man1/ndb_print_schema_file.1*
%{_mandir}/man1/ndb_print_sys_file.1*
@ -564,7 +558,8 @@ fi
%{_mandir}/man1/ndb_show_tables.1*
#%{_mandir}/man1/ndb_size.pl.1*
%{_mandir}/man1/ndb_waiter.1*
%{_mandir}/man1/ndbd.1*
%{_mandir}/man8/ndbd.8*
%{_mandir}/man8/ndb_mgmd.8*
%files devel
%defattr(-,root,root)
@ -585,6 +580,11 @@ fi
%{_mandir}/man1/mysql_client_test.1*
%changelog
* Sat Aug 23 2008 Tom Lane <tgl@redhat.com> 5.0.67-1
- Update to mysql version 5.0.67
- Move mysql_config's man page to base package, again (apparently I synced
that change the wrong way while importing specfile changes for ndbcluster)
* Sun Jul 27 2008 Tom Lane <tgl@redhat.com> 5.0.51a-2
- Enable ndbcluster support
Resolves: #163758

View File

@ -1 +1 @@
a83dbdbb91267daf73d2297a9c283dd1 mysql-5.0.51a.tar.gz
7164483a5ffb8f7aa59b761c13cdbd6e mysql-5.0.67.tar.gz