diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/r/partition.result clean-bug21210/mysql-test/r/partition.result
--- clean-compare/mysql-test/r/partition.result	2006-09-08 03:37:03 -04:00
+++ clean-bug21210/mysql-test/r/partition.result	2006-09-19 07:44:14 -04:00
@@ -21,32 +21,6 @@
 partitions 1e+300;
 ERROR 42000: Only normal integers allowed as number here near '1e+300' at line 3
 create table t1 (a int)
-engine = innodb
-partition by key (a);
-show table status;
-Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
-t1	InnoDB	10	Compact	2	8192	16384	0	0	0	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
-insert into t1 values (0), (1), (2), (3);
-show table status;
-Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
-t1	InnoDB	10	Compact	4	4096	16384	0	0	0	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
-drop table t1;
-create table t1 (a int auto_increment primary key)
-engine = innodb
-partition by key (a);
-show table status;
-Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
-t1	InnoDB	10	Compact	2	8192	16384	0	0	0	1	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
-insert into t1 values (NULL), (NULL), (NULL), (NULL);
-show table status;
-Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
-t1	InnoDB	10	Compact	4	4096	16384	0	0	0	5	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
-insert into t1 values (NULL), (NULL), (NULL), (NULL);
-show table status;
-Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
-t1	InnoDB	10	Compact	8	2048	16384	0	0	0	9	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
-drop table t1;
-create table t1 (a int)
 partition by key (a)
 (partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
 ERROR 42000: Incorrect table name 'part-data'
@@ -1039,17 +1013,6 @@
   `a` int(11) DEFAULT NULL
 ) /*!50100 PARTITION BY KEY (a) (PARTITION p0) */
 set session sql_mode='';
-drop table t1;
-create table t1 (a int)
-partition by key (a)
-(partition p1 engine = innodb);
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
 drop table t1;
 create table t1 (a int)
 partition by key (a)
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/r/partition_error.result clean-bug21210/mysql-test/r/partition_error.result
--- clean-compare/mysql-test/r/partition_error.result	2006-06-21 18:53:30 -04:00
+++ clean-bug21210/mysql-test/r/partition_error.result	2006-09-08 03:17:59 -04:00
@@ -1,28 +1,4 @@
 drop table if exists t1;
-create table t1 (a int)
-engine = x
-partition by key (a);
-Warnings:
-Error	1286	Unknown table engine 'x'
-show create table t1;
-Table	Create Table
-t1	CREATE TABLE `t1` (
-  `a` int(11) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a)  */
-drop table t1;
-create table t1 (a int)
-engine = innodb
-partition by list (a)
-(partition p0 values in (0));
-alter table t1 engine = x;
-Warnings:
-Error	1286	Unknown table engine 'x'
-show create table t1;
-Table	Create Table
-t1	CREATE TABLE `t1` (
-  `a` int(11) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (0) ENGINE = InnoDB) */
-drop table t1;
 partition by list (a)
 partitions 3
 (partition x1 values in (1,2,9,4) tablespace ts1,
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/r/partition_innodb.result clean-bug21210/mysql-test/r/partition_innodb.result
--- clean-compare/mysql-test/r/partition_innodb.result	2006-05-18 13:16:42 -04:00
+++ clean-bug21210/mysql-test/r/partition_innodb.result	2006-09-08 03:17:59 -04:00
@@ -3,3 +3,74 @@
 Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
 t1	InnoDB	10	Compact	2	8192	16384	0	0	0	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
 drop table t1;
+create table t1 (a int)
+engine = innodb
+partition by key (a);
+show table status;
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+t1	InnoDB	10	Compact	2	8192	16384	0	0	0	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
+insert into t1 values (0), (1), (2), (3);
+show table status;
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+t1	InnoDB	10	Compact	4	4096	16384	0	0	0	NULL	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
+drop table t1;
+create table t1 (a int auto_increment primary key)
+engine = innodb
+partition by key (a);
+show table status;
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+t1	InnoDB	10	Compact	2	8192	16384	0	0	0	1	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
+insert into t1 values (NULL), (NULL), (NULL), (NULL);
+show table status;
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+t1	InnoDB	10	Compact	4	4096	16384	0	0	0	5	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
+insert into t1 values (NULL), (NULL), (NULL), (NULL);
+show table status;
+Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
+t1	InnoDB	10	Compact	8	2048	16384	0	0	0	9	NULL	NULL	NULL	latin1_swedish_ci	NULL	partitioned	
+drop table t1;
+create table t1 (a int)
+partition by key (a)
+(partition p1 engine = innodb);
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+drop table t1;
+create table t1 (a date)
+engine = innodb
+partition by range (year(a))
+(partition p0 values less than (2006),
+partition p1 values less than (2007));
+explain partitions select * from t1
+where a between '2006-01-01' and '2007-06-01';
+id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t1	p1	ALL	NULL	NULL	NULL	NULL	2	Using where
+drop table t1;
+create table t1 (a int)
+engine = x
+partition by key (a);
+Warnings:
+Error	1286	Unknown table engine 'x'
+show create table t1;
+Table	Create Table
+t1	CREATE TABLE `t1` (
+  `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a)  */
+drop table t1;
+create table t1 (a int)
+engine = innodb
+partition by list (a)
+(partition p0 values in (0));
+alter table t1 engine = x;
+Warnings:
+Error	1286	Unknown table engine 'x'
+show create table t1;
+Table	Create Table
+t1	CREATE TABLE `t1` (
+  `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION p0 VALUES IN (0) ENGINE = InnoDB) */
+drop table t1;
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/r/partition_range.result clean-bug21210/mysql-test/r/partition_range.result
--- clean-compare/mysql-test/r/partition_range.result	2006-08-05 16:12:22 -04:00
+++ clean-bug21210/mysql-test/r/partition_range.result	2006-09-08 03:17:59 -04:00
@@ -1,14 +1,4 @@
 drop table if exists t1;
-create table t1 (a date)
-engine = innodb
-partition by range (year(a))
-(partition p0 values less than (2006),
-partition p1 values less than (2007));
-explain partitions select * from t1
-where a between '2006-01-01' and '2007-06-01';
-id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	p1	ALL	NULL	NULL	NULL	NULL	2	Using where
-drop table t1;
 create table t1 (a int unsigned)
 partition by range (a)
 (partition pnull values less than (0),
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/t/partition-master.opt clean-bug21210/mysql-test/t/partition-master.opt
--- clean-compare/mysql-test/t/partition-master.opt	1969-12-31 19:00:00 -05:00
+++ clean-bug21210/mysql-test/t/partition-master.opt	2006-09-08 05:50:38 -04:00
@@ -0,0 +1 @@
+--symbolic-links=1
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/t/partition.test clean-bug21210/mysql-test/t/partition.test
--- clean-compare/mysql-test/t/partition.test	2006-09-06 14:23:37 -04:00
+++ clean-bug21210/mysql-test/t/partition.test	2006-09-19 07:44:14 -04:00
@@ -43,27 +43,6 @@
 partitions 1e+300;
 
 #
-# Bug 21173: SHOW TABLE STATUS crashes server in InnoDB
-#
-create table t1 (a int)
-engine = innodb
-partition by key (a);
-show table status;
-insert into t1 values (0), (1), (2), (3);
-show table status;
-drop table t1;
-
-create table t1 (a int auto_increment primary key)
-engine = innodb
-partition by key (a);
-show table status;
-insert into t1 values (NULL), (NULL), (NULL), (NULL);
-show table status;
-insert into t1 values (NULL), (NULL), (NULL), (NULL);
-show table status;
-drop table t1;
-
-#
 # Bug 21350: Data Directory problems
 #
 -- error 1103
@@ -1191,22 +1170,6 @@
 set session sql_mode='no_table_options';
 show create table t1;
 set session sql_mode='';
-drop table t1;
-
-#
-# BUG 19122 Crash after ALTER TABLE t1 REBUILD PARTITION p1
-#
-create table t1 (a int)
-partition by key (a)
-(partition p1 engine = innodb);
-
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
-alter table t1 rebuild partition p1;
 drop table t1;
 
 #
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/t/partition_error.test clean-bug21210/mysql-test/t/partition_error.test
--- clean-compare/mysql-test/t/partition_error.test	2006-06-20 16:38:38 -04:00
+++ clean-bug21210/mysql-test/t/partition_error.test	2006-09-08 03:17:59 -04:00
@@ -8,23 +8,6 @@
 drop table if exists t1;
 --enable_warnings
 
-#
-# Bug 20397: Partitions: Crash when using non-existing engine
-#
-create table t1 (a int)
-engine = x
-partition by key (a);
-show create table t1;
-drop table t1;
-
-create table t1 (a int)
-engine = innodb
-partition by list (a)
-(partition p0 values in (0));
-
-alter table t1 engine = x;
-show create table t1;
-drop table t1;
 
 #
 # Partition by key stand-alone error
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/t/partition_innodb.test clean-bug21210/mysql-test/t/partition_innodb.test
--- clean-compare/mysql-test/t/partition_innodb.test	2006-06-12 03:05:19 -04:00
+++ clean-bug21210/mysql-test/t/partition_innodb.test	2006-09-08 03:17:59 -04:00
@@ -8,3 +8,71 @@
 show table status like 't1';
 drop table t1;
 
+#
+# Bug 21173: SHOW TABLE STATUS crashes server in InnoDB
+#
+create table t1 (a int)
+engine = innodb
+partition by key (a);
+show table status;
+insert into t1 values (0), (1), (2), (3);
+show table status;
+drop table t1;
+
+create table t1 (a int auto_increment primary key)
+engine = innodb
+partition by key (a);
+show table status;
+insert into t1 values (NULL), (NULL), (NULL), (NULL);
+show table status;
+insert into t1 values (NULL), (NULL), (NULL), (NULL);
+show table status;
+drop table t1;
+
+#
+# BUG 19122 Crash after ALTER TABLE t1 REBUILD PARTITION p1
+#
+create table t1 (a int)
+partition by key (a)
+(partition p1 engine = innodb);
+
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+alter table t1 rebuild partition p1;
+drop table t1;
+
+#
+# Bug 21339: Crash in Explain Partitions
+#
+create table t1 (a date)
+engine = innodb
+partition by range (year(a))
+(partition p0 values less than (2006),
+ partition p1 values less than (2007));
+explain partitions select * from t1
+where a between '2006-01-01' and '2007-06-01';
+drop table t1;
+
+#
+# Bug 20397: Partitions: Crash when using non-existing engine
+#
+create table t1 (a int)
+engine = x
+partition by key (a);
+show create table t1;
+drop table t1;
+
+create table t1 (a int)
+engine = innodb
+partition by list (a)
+(partition p0 values in (0));
+
+alter table t1 engine = x;
+show create table t1;
+drop table t1;
+
+
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/mysql-test/t/partition_range.test clean-bug21210/mysql-test/t/partition_range.test
--- clean-compare/mysql-test/t/partition_range.test	2006-08-05 16:12:22 -04:00
+++ clean-bug21210/mysql-test/t/partition_range.test	2006-09-08 03:17:59 -04:00
@@ -10,18 +10,6 @@
 --enable_warnings
 
 #
-# Bug 21339: Crash in Explain Partitions
-#
-create table t1 (a date)
-engine = innodb
-partition by range (year(a))
-(partition p0 values less than (2006),
- partition p1 values less than (2007));
-explain partitions select * from t1
-where a between '2006-01-01' and '2007-06-01';
-drop table t1;
-
-#
 # More checks for partition pruning
 #
 create table t1 (a int unsigned)
diff -Nur --exclude=RCS --exclude=CVS --exclude=SCCS --exclude=BitKeeper --exclude=ChangeSet clean-compare/sql/ha_partition.cc clean-bug21210/sql/ha_partition.cc
--- clean-compare/sql/ha_partition.cc	2006-09-19 08:01:40 -04:00
+++ clean-bug21210/sql/ha_partition.cc	2006-09-19 07:48:37 -04:00
@@ -1364,6 +1364,7 @@
   i= 0;
   part_count= 0;
   orig_count= 0;
+  first= TRUE;
   part_it.rewind();
   do
   {
@@ -1391,9 +1392,16 @@
           DBUG_RETURN(ER_OUTOFMEMORY);
         }
       } while (++j < no_subparts);
+      if (part_elem->part_state == PART_CHANGED)
+        orig_count+= no_subparts;
+      else if (temp_partitions && first)
+      {
+        orig_count+= (no_subparts * temp_partitions);
+        first= FALSE;
+      }
     }
   } while (++i < no_parts);
-
+  first= FALSE;
   /*
     Step 5:
       Create the new partitions and also open, lock and call external_lock