#At file:///home/svoj/devel/mysql/WL4037/mysql-6.0-backup/
2640 Sergey Vojtovich 2008-06-25 [merge]
Auto merged.
added:
mysql-test/r/backup_many_dbs.result
mysql-test/r/backup_procedures.result
mysql-test/t/backup_many_dbs.test
mysql-test/t/backup_procedures.test
modified:
sql/backup/backup_aux.h
per-file messages:
mysql-test/r/backup_many_dbs.result
Auto merged.
mysql-test/r/backup_procedures.result
Auto merged.
mysql-test/t/backup_many_dbs.test
Auto merged.
mysql-test/t/backup_procedures.test
Auto merged.
sql/backup/backup_aux.h
Auto merged.
=== added file 'mysql-test/r/backup_many_dbs.result'
--- a/mysql-test/r/backup_many_dbs.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/backup_many_dbs.result 2008-06-20 08:33:54 +0000
@@ -0,0 +1,106 @@
+Starting regression test for bug 33568
+DROP DATABASE IF EXISTS db1;
+DROP DATABASE IF EXISTS db2;
+DROP DATABASE IF EXISTS db3;
+DROP DATABASE IF EXISTS db4;
+DROP DATABASE IF EXISTS db5;
+DROP DATABASE IF EXISTS db6;
+DROP DATABASE IF EXISTS db7;
+DROP DATABASE IF EXISTS db8;
+DROP DATABASE IF EXISTS db9;
+DROP DATABASE IF EXISTS db10;
+DROP DATABASE IF EXISTS db11;
+DROP DATABASE IF EXISTS db12;
+DROP DATABASE IF EXISTS db13;
+DROP DATABASE IF EXISTS db14;
+DROP DATABASE IF EXISTS db15;
+DROP DATABASE IF EXISTS db16;
+DROP DATABASE IF EXISTS db17;
+DROP DATABASE IF EXISTS db18;
+Creating 18 databases
+CREATE DATABASE db1;
+CREATE DATABASE db2;
+CREATE DATABASE db3;
+CREATE DATABASE db4;
+CREATE DATABASE db5;
+CREATE DATABASE db6;
+CREATE DATABASE db7;
+CREATE DATABASE db8;
+CREATE DATABASE db9;
+CREATE DATABASE db10;
+CREATE DATABASE db11;
+CREATE DATABASE db12;
+CREATE DATABASE db13;
+CREATE DATABASE db14;
+CREATE DATABASE db15;
+CREATE DATABASE db16;
+CREATE DATABASE db17;
+CREATE DATABASE db18;
+Backing up the databases
+BACKUP DATABASE db1, db2, db3, db4, db5, db6, db7, db8, db9, db10, db11, db12, db13, db14, db15, db16, db17, db18
+TO 'bup_manydbs.bak';
+backup_id
+#
+Dropping the databases
+DROP DATABASE db1;
+DROP DATABASE db2;
+DROP DATABASE db3;
+DROP DATABASE db4;
+DROP DATABASE db5;
+DROP DATABASE db6;
+DROP DATABASE db7;
+DROP DATABASE db8;
+DROP DATABASE db9;
+DROP DATABASE db10;
+DROP DATABASE db11;
+DROP DATABASE db12;
+DROP DATABASE db13;
+DROP DATABASE db14;
+DROP DATABASE db15;
+DROP DATABASE db16;
+DROP DATABASE db17;
+DROP DATABASE db18;
+Restoring databases
+RESTORE FROM 'bup_manydbs.bak';
+backup_id
+#
+Checking that all dbs are there
+SHOW DATABASES LIKE 'db%';
+Database (db%)
+db1
+db10
+db11
+db12
+db13
+db14
+db15
+db16
+db17
+db18
+db2
+db3
+db4
+db5
+db6
+db7
+db8
+db9
+Cleaning up
+DROP DATABASE db1;
+DROP DATABASE db2;
+DROP DATABASE db3;
+DROP DATABASE db4;
+DROP DATABASE db5;
+DROP DATABASE db6;
+DROP DATABASE db7;
+DROP DATABASE db8;
+DROP DATABASE db9;
+DROP DATABASE db10;
+DROP DATABASE db11;
+DROP DATABASE db12;
+DROP DATABASE db13;
+DROP DATABASE db14;
+DROP DATABASE db15;
+DROP DATABASE db16;
+DROP DATABASE db17;
+DROP DATABASE db18;
=== added file 'mysql-test/r/backup_procedures.result'
--- a/mysql-test/r/backup_procedures.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/backup_procedures.result 2008-06-25 12:40:06 +0000
@@ -0,0 +1,41 @@
+
+Starting regression test for 34868 - Backup: restore failure if two procedures
+
+Create database and procedures
+DROP DATABASE IF EXISTS bup_proc;
+CREATE DATABASE bup_proc;
+USE bup_proc;
+CREATE PROCEDURE p1() SET @a=5;
+CREATE PROCEDURE p2() SET @a=100;
+
+Check that procedures are there before the backup
+CALL p1();
+SELECT @a;
+@a
+5
+CALL p2();
+SELECT @a;
+@a
+100
+
+Backup and restore
+BACKUP DATABASE bup_proc to 'bup_proc.bak';
+backup_id
+#
+DROP DATABASE bup_proc;
+RESTORE FROM 'bup_proc.bak';
+backup_id
+#
+
+Check that procedures are there after the restore
+CALL p1();
+SELECT @a;
+@a
+5
+CALL p2();
+SELECT @a;
+@a
+100
+
+Cleaning up
+DROP DATABASE bup_proc;
=== added file 'mysql-test/t/backup_many_dbs.test'
--- a/mysql-test/t/backup_many_dbs.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/backup_many_dbs.test 2008-06-20 08:33:54 +0000
@@ -0,0 +1,133 @@
+###########################################################################
+# Regression test for bug#33568
+###############################################################################
+--source include/have_innodb.inc
+--source include/not_embedded.inc
+--source include/have_debug.inc
+
+##############################################################
+--echo Starting regression test for bug 33568
+##############################################################
+
+--error 0,1
+--remove_file $MYSQLTEST_VARDIR/master-data/bup_manydbs.bak
+
+--disable_warnings
+DROP DATABASE IF EXISTS db1;
+DROP DATABASE IF EXISTS db2;
+DROP DATABASE IF EXISTS db3;
+DROP DATABASE IF EXISTS db4;
+DROP DATABASE IF EXISTS db5;
+DROP DATABASE IF EXISTS db6;
+DROP DATABASE IF EXISTS db7;
+DROP DATABASE IF EXISTS db8;
+DROP DATABASE IF EXISTS db9;
+DROP DATABASE IF EXISTS db10;
+DROP DATABASE IF EXISTS db11;
+DROP DATABASE IF EXISTS db12;
+DROP DATABASE IF EXISTS db13;
+DROP DATABASE IF EXISTS db14;
+DROP DATABASE IF EXISTS db15;
+DROP DATABASE IF EXISTS db16;
+DROP DATABASE IF EXISTS db17;
+DROP DATABASE IF EXISTS db18;
+--enable_warnings
+
+##############################################################
+--echo Creating 18 databases
+##############################################################
+
+# Create 18 databases. This is the threashold for provoking the bug (16
+# dbs works, nbr 17 overruns memory, nbr 18 crashes server due to
+# overrun memory
+
+CREATE DATABASE db1;
+CREATE DATABASE db2;
+CREATE DATABASE db3;
+CREATE DATABASE db4;
+CREATE DATABASE db5;
+CREATE DATABASE db6;
+CREATE DATABASE db7;
+CREATE DATABASE db8;
+CREATE DATABASE db9;
+CREATE DATABASE db10;
+CREATE DATABASE db11;
+CREATE DATABASE db12;
+CREATE DATABASE db13;
+CREATE DATABASE db14;
+CREATE DATABASE db15;
+CREATE DATABASE db16;
+CREATE DATABASE db17;
+CREATE DATABASE db18;
+
+
+##############################################################
+--echo Backing up the databases
+##############################################################
+
+#Backup and restore data.
+replace_column 1 #;
+BACKUP DATABASE db1, db2, db3, db4, db5, db6, db7, db8, db9, db10, db11, db12, db13, db14, db15, db16, db17, db18
+TO 'bup_manydbs.bak';
+
+##############################################################
+--echo Dropping the databases
+##############################################################
+DROP DATABASE db1;
+DROP DATABASE db2;
+DROP DATABASE db3;
+DROP DATABASE db4;
+DROP DATABASE db5;
+DROP DATABASE db6;
+DROP DATABASE db7;
+DROP DATABASE db8;
+DROP DATABASE db9;
+DROP DATABASE db10;
+DROP DATABASE db11;
+DROP DATABASE db12;
+DROP DATABASE db13;
+DROP DATABASE db14;
+DROP DATABASE db15;
+DROP DATABASE db16;
+DROP DATABASE db17;
+DROP DATABASE db18;
+
+##############################################################
+--echo Restoring databases
+##############################################################
+
+replace_column 1 #;
+RESTORE FROM 'bup_manydbs.bak';
+
+##############################################################
+--echo Checking that all dbs are there
+##############################################################
+
+SHOW DATABASES LIKE 'db%';
+
+##############################################################
+--echo Cleaning up
+##############################################################
+
+DROP DATABASE db1;
+DROP DATABASE db2;
+DROP DATABASE db3;
+DROP DATABASE db4;
+DROP DATABASE db5;
+DROP DATABASE db6;
+DROP DATABASE db7;
+DROP DATABASE db8;
+DROP DATABASE db9;
+DROP DATABASE db10;
+DROP DATABASE db11;
+DROP DATABASE db12;
+DROP DATABASE db13;
+DROP DATABASE db14;
+DROP DATABASE db15;
+DROP DATABASE db16;
+DROP DATABASE db17;
+DROP DATABASE db18;
+
+--error 0,1
+--remove_file $MYSQLTEST_VARDIR/master-data/bup_manydbs.bak
+
=== added file 'mysql-test/t/backup_procedures.test'
--- a/mysql-test/t/backup_procedures.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/backup_procedures.test 2008-06-25 12:40:06 +0000
@@ -0,0 +1,57 @@
+###########################################################################
+# Purpose: Regression test for 34868 - "Backup: restore failure if two
+# procedures". Test added because the bug has been fixed by
+# an unknown patch.
+###############################################################################
+--source include/not_embedded.inc
+
+--echo
+--echo Starting regression test for 34868 - Backup: restore failure if two procedures
+
+
+--error 0,1
+--remove_file $MYSQLTEST_VARDIR/master-data/bup_proc.bak
+
+--echo
+--echo Create database and procedures
+--disable_warnings
+DROP DATABASE IF EXISTS bup_proc;
+--enable_warnings
+
+CREATE DATABASE bup_proc;
+USE bup_proc;
+
+CREATE PROCEDURE p1() SET @a=5;
+CREATE PROCEDURE p2() SET @a=100;
+
+--echo
+--echo Check that procedures are there before the backup
+
+CALL p1();
+SELECT @a;
+CALL p2();
+SELECT @a;
+
+--echo
+--echo Backup and restore
+
+--replace_column 1 #
+BACKUP DATABASE bup_proc to 'bup_proc.bak';
+DROP DATABASE bup_proc;
+--replace_column 1 #
+RESTORE FROM 'bup_proc.bak';
+
+--echo
+--echo Check that procedures are there after the restore
+
+CALL p1();
+SELECT @a;
+CALL p2();
+SELECT @a;
+
+--echo
+--echo Cleaning up
+
+DROP DATABASE bup_proc;
+--error 0,1
+--remove_file $MYSQLTEST_VARDIR/master-data/bup_proc.bak
=== modified file 'sql/backup/backup_aux.h'
--- a/sql/backup/backup_aux.h 2008-03-05 17:48:12 +0000
+++ b/sql/backup/backup_aux.h 2008-06-20 08:33:54 +0000
@@ -297,7 +297,7 @@ int Map<uint,T>::insert(ulong pos, T *pt
uchar *entry;
DYNAMIC_ARRAY *array= &this->array;
- while (pos > Base::array.max_element)
+ while (pos >= Base::array.max_element)
{
entry= alloc_dynamic(array);
if (!entry)
@@ -306,7 +306,7 @@ int Map<uint,T>::insert(ulong pos, T *pt
clear_free_space();
- if (pos > Base::array.max_element)
+ if (pos >= Base::array.max_element)
return 1;
if (pos >= Base::array.elements)
| Thread |
|---|
| • bzr commit into mysql-6.0-backup branch (svoj:2640) WL#4037 | Sergey Vojtovich | 25 Jun |