List:Commits« Previous MessageNext Message »
From:Ole John Aske Date:March 17 2011 8:17am
Subject:bzr push into mysql-5.1-telco-7.0-spj-scan-vs-scan branch
(ole.john.aske:3446 to 3447)
View as plain text  
 3447 Ole John Aske	2011-03-17 [merge]
      Merge from telco mainline -> SPJ-scan-scan

    removed:
      mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_d_d.inc
      mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_d_u.inc
      mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_i_i.inc
      mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_init.inc
      mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_u_d.inc
      mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_u_u.inc
      storage/ndb/test/sql/
      storage/ndb/test/sql/BANK.sql
      storage/ndb/test/sql/T1.sql
      storage/ndb/test/sql/test_create_drop.pl
      storage/ndb/test/sql/test_range_bounds.pl
      storage/ndb/tools/clean-links.sh
      storage/ndb/tools/make-errors.pl
      storage/ndb/tools/make-links.sh
    added:
      mysql-test/suite/binlog/r/binlog_incident_ignore.result
      mysql-test/suite/binlog/t/binlog_incident_ignore-master.opt
      mysql-test/suite/binlog/t/binlog_incident_ignore.test
      mysql-test/suite/rpl/r/rpl_skip_incident.result
      mysql-test/suite/rpl/t/rpl_skip_incident-master.opt
      mysql-test/suite/rpl/t/rpl_skip_incident-slave.opt
      mysql-test/suite/rpl/t/rpl_skip_incident.test
      mysql-test/suite/rpl_ndb/r/rpl_ndb_ignore_db.result
      mysql-test/suite/rpl_ndb/r/rpl_ndb_skip_gap_event.result
      mysql-test/suite/rpl_ndb/t/rpl_ndb_ignore_db-master.opt
      mysql-test/suite/rpl_ndb/t/rpl_ndb_ignore_db.test
      mysql-test/suite/rpl_ndb/t/rpl_ndb_skip_gap_event-slave.opt
      mysql-test/suite/rpl_ndb/t/rpl_ndb_skip_gap_event.test
    renamed:
      mysql-test/include/ndb_conflict_info.inc => mysql-test/suite/rpl_ndb/t/ndb_conflict_info.inc
      mysql-test/include/ndb_conflict_info_init.inc => mysql-test/suite/rpl_ndb/t/ndb_conflict_info_init.inc
    modified:
      mysql-test/suite/ndb/r/ndb_basic.result
      mysql-test/suite/ndb_binlog/r/ndb_binlog_ignore_db.result
      mysql-test/suite/ndb_binlog/t/ndb_binlog_ignore_db-master.opt
      mysql-test/suite/ndb_binlog/t/ndb_binlog_ignore_db.test
      mysql-test/suite/rpl_ndb/ndb_master-slave.inc
      mysql-test/suite/rpl_ndb/r/rpl_ndb_gap_event.result
      mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_1.inc
      mysql-test/suite/rpl_ndb/t/rpl_ndb_gap_event.test
      sql/ha_ndbcluster.cc
      sql/ha_ndbcluster.h
      sql/log.cc
      sql/log_event.cc
      sql/log_event.h
      sql/rpl_injector.h
      storage/ndb/docs/doxygen/Doxyfile.mgmapi
      storage/ndb/docs/doxygen/Doxyfile.ndbapi
      storage/ndb/include/ndb_config.h.in
      storage/ndb/ndb_configure.cmake
      storage/ndb/src/common/portlib/NdbCondition.c
      storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
      storage/ndb/src/kernel/blocks/pgman.cpp
      storage/ndb/src/kernel/blocks/tsman.cpp
 3446 Ole John Aske	2011-03-17
      SPJ-scan-scan Fixed a problem where parameters for a pushed lookup query might be specified
      in incorrect order.

    modified:
      mysql-test/suite/ndb/r/ndb_join_pushdown.result
      mysql-test/suite/ndb/t/ndb_join_pushdown.test
      sql/ha_ndbcluster.cc
=== added file 'mysql-test/suite/binlog/r/binlog_incident_ignore.result'
--- a/mysql-test/suite/binlog/r/binlog_incident_ignore.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/r/binlog_incident_ignore.result	2011-03-14 22:52:14 +0000
@@ -0,0 +1,13 @@
+RESET MASTER;
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1),(2),(3);
+SELECT * FROM t1;
+a
+1
+2
+3
+REPLACE INTO t1 VALUES (4);
+DROP TABLE t1;
+FLUSH LOGS;
+Contain RELOAD DATABASE
+1

=== added file 'mysql-test/suite/binlog/t/binlog_incident_ignore-master.opt'
--- a/mysql-test/suite/binlog/t/binlog_incident_ignore-master.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/t/binlog_incident_ignore-master.opt	2011-03-14 22:52:14 +0000
@@ -0,0 +1,2 @@
+--loose-debug=+d,incident_database_resync_on_replace
+--binlog-ignore-db=test
\ No newline at end of file

=== added file 'mysql-test/suite/binlog/t/binlog_incident_ignore.test'
--- a/mysql-test/suite/binlog/t/binlog_incident_ignore.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/t/binlog_incident_ignore.test	2011-03-14 22:52:14 +0000
@@ -0,0 +1,4 @@
+# The purpose of this test is to verify that incident log events
+# ignore database level binlog filters 
+
+--source suite/binlog/t/binlog_incident.test

=== modified file 'mysql-test/suite/ndb/r/ndb_basic.result'
--- a/mysql-test/suite/ndb/r/ndb_basic.result	2011-02-09 14:59:39 +0000
+++ b/mysql-test/suite/ndb/r/ndb_basic.result	2011-03-17 08:17:18 +0000
@@ -62,7 +62,6 @@ Ndb_api_wait_nanos_count_slave	#
 Ndb_api_wait_scan_result_count	#
 Ndb_api_wait_scan_result_count_session	#
 Ndb_api_wait_scan_result_count_slave	#
-Ndb_cluster_connection_pool	#
 Ndb_cluster_node_id	#
 Ndb_config_from_host	#
 Ndb_config_from_port	#

=== modified file 'mysql-test/suite/ndb_binlog/r/ndb_binlog_ignore_db.result'
--- a/mysql-test/suite/ndb_binlog/r/ndb_binlog_ignore_db.result	2009-02-01 21:05:19 +0000
+++ b/mysql-test/suite/ndb_binlog/r/ndb_binlog_ignore_db.result	2011-03-15 10:49:09 +0000
@@ -9,3 +9,47 @@ show binlog events from <binlog_start>;
 Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 mysqld-bin.000001	#	Query	1	#	use `test`; drop table if exists t1
 drop database mysqltest;
+--bug58698 Epoch not in ndb_apply_status 
+reset master;
+use mysql;
+-- MyISAM table in mysql db
+create table invisible(a int primary key) engine=myisam;
+insert into invisible values (1);
+insert into invisible values (2);
+delete from invisible;
+drop table invisible;
+-- Should be nothing in binlog
+show binlog events from <binlog_start>;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+-- Ndb table in mysql db
+create table invisible(a int primary key) engine=ndb;
+insert into invisible values (1);
+insert into invisible values (2);
+delete from invisible;
+drop table invisible;
+-- Should be nothing in binlog
+show binlog events from <binlog_start>;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+-- ndb_binlog_index table (MyISAM) in mysql db 
+insert into ndb_binlog_index values (12, 'F', 23, 0, 0, 0, 0, 3, 44, 55);
+insert into ndb_binlog_index values (20, 'G', 23, 0, 0, 0, 0, 5, 44, 55);
+delete from ndb_binlog_index;
+-- Should be nothing in binlog
+show binlog events from <binlog_start>;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+-- Non-ignored db (test2)
+create database test2;
+use test2;
+create table t1 (a int primary key) engine=ndb;
+insert into t1 values (1);
+insert into t1 values (2);
+delete from t1;
+drop table t1;
+drop database test2;
+-- Should have events in Binlog, *including ndb_apply_status*
+use test;
+create table raw_binlog_rows (txt varchar(1000));
+select count(1) > 0 from raw_binlog_rows where txt like '%ndb_apply_status%';
+count(1) > 0
+1
+drop table raw_binlog_rows;

=== modified file 'mysql-test/suite/ndb_binlog/t/ndb_binlog_ignore_db-master.opt'
--- a/mysql-test/suite/ndb_binlog/t/ndb_binlog_ignore_db-master.opt	2008-02-25 13:50:20 +0000
+++ b/mysql-test/suite/ndb_binlog/t/ndb_binlog_ignore_db-master.opt	2011-03-14 23:28:51 +0000
@@ -1 +1,2 @@
 --binlog-ignore-db=mysqltest
+--binlog-ignore-db=mysql
\ No newline at end of file

=== modified file 'mysql-test/suite/ndb_binlog/t/ndb_binlog_ignore_db.test'
--- a/mysql-test/suite/ndb_binlog/t/ndb_binlog_ignore_db.test	2008-02-25 13:50:20 +0000
+++ b/mysql-test/suite/ndb_binlog/t/ndb_binlog_ignore_db.test	2011-03-15 10:49:09 +0000
@@ -14,3 +14,66 @@ insert into t1 values (1, 1);
 -- source include/show_binlog_events2.inc
 
 drop database mysqltest;
+
+--echo --bug58698 Epoch not in ndb_apply_status 
+reset master;
+use mysql;
+
+--echo -- MyISAM table in mysql db
+create table invisible(a int primary key) engine=myisam;
+insert into invisible values (1);
+insert into invisible values (2);
+delete from invisible;
+drop table invisible;
+
+--echo -- Should be nothing in binlog
+-- source include/show_binlog_events2.inc
+
+--echo -- Ndb table in mysql db
+create table invisible(a int primary key) engine=ndb;
+insert into invisible values (1);
+insert into invisible values (2);
+delete from invisible;
+drop table invisible;
+
+--echo -- Should be nothing in binlog
+-- source include/show_binlog_events2.inc
+
+--echo -- ndb_binlog_index table (MyISAM) in mysql db 
+
+insert into ndb_binlog_index values (12, 'F', 23, 0, 0, 0, 0, 3, 44, 55);
+insert into ndb_binlog_index values (20, 'G', 23, 0, 0, 0, 0, 5, 44, 55);
+
+delete from ndb_binlog_index;
+
+--echo -- Should be nothing in binlog
+-- source include/show_binlog_events2.inc
+
+--echo -- Non-ignored db (test2)
+create database test2;
+use test2;
+
+create table t1 (a int primary key) engine=ndb;
+
+insert into t1 values (1);
+insert into t1 values (2);
+
+delete from t1;
+
+drop table t1;
+
+drop database test2;
+
+--echo -- Should have events in Binlog, *including ndb_apply_status*
+use test;
+create table raw_binlog_rows (txt varchar(1000));
+--disable_query_log
+let $MYSQLD_DATADIR= `select @@datadir;`;
+--exec $MYSQL_BINLOG --verbose $MYSQLD_DATADIR/mysqld-bin.000001 > $MYSQLTEST_VARDIR/tmp/ndb_binlog_mysqlbinlog.sql
+
+--eval load data local infile '$MYSQLTEST_VARDIR/tmp/ndb_binlog_mysqlbinlog.sql' into table raw_binlog_rows columns terminated by '\n';
+--enable_query_log
+
+select count(1) > 0 from raw_binlog_rows where txt like '%ndb_apply_status%';
+
+drop table raw_binlog_rows;
\ No newline at end of file

=== added file 'mysql-test/suite/rpl/r/rpl_skip_incident.result'
--- a/mysql-test/suite/rpl/r/rpl_skip_incident.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/r/rpl_skip_incident.result	2011-03-14 21:34:06 +0000
@@ -0,0 +1,28 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+**** On Master ****
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1),(2),(3);
+SELECT * FROM t1;
+a
+1
+2
+3
+REPLACE INTO t1 VALUES (4);
+SELECT * FROM t1;
+a
+1
+2
+3
+4
+Checking that both slave threads are running.
+Should have two binary logs here
+show binary logs;
+Log_name	File_size
+master-bin.000001	#
+master-bin.000002	#
+DROP TABLE t1;

=== added file 'mysql-test/suite/rpl/t/rpl_skip_incident-master.opt'
--- a/mysql-test/suite/rpl/t/rpl_skip_incident-master.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_skip_incident-master.opt	2011-03-14 21:34:06 +0000
@@ -0,0 +1 @@
+--loose-debug=+d,incident_database_resync_on_replace

=== added file 'mysql-test/suite/rpl/t/rpl_skip_incident-slave.opt'
--- a/mysql-test/suite/rpl/t/rpl_skip_incident-slave.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_skip_incident-slave.opt	2011-03-14 21:34:06 +0000
@@ -0,0 +1 @@
+--slave-skip-error=1590

=== added file 'mysql-test/suite/rpl/t/rpl_skip_incident.test'
--- a/mysql-test/suite/rpl/t/rpl_skip_incident.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_skip_incident.test	2011-03-14 21:34:06 +0000
@@ -0,0 +1,28 @@
+--source include/master-slave.inc
+--source include/have_debug.inc
+
+--echo **** On Master ****
+CREATE TABLE t1 (a INT);
+
+INSERT INTO t1 VALUES (1),(2),(3);
+SELECT * FROM t1;
+
+# This will generate an incident log event and store it in the binary
+# log before the replace statement.
+REPLACE INTO t1 VALUES (4);
+
+--sync_slave_with_master
+
+# Now, we should have inserted the row into the table and the slave
+# should be running. We should also have rotated to a new binary log.
+
+SELECT * FROM t1;
+source include/check_slave_is_running.inc;
+
+connection master;
+
+--echo Should have two binary logs here
+--replace_column 2 #
+show binary logs;
+DROP TABLE t1;
+--sync_slave_with_master

=== modified file 'mysql-test/suite/rpl_ndb/ndb_master-slave.inc'
--- a/mysql-test/suite/rpl_ndb/ndb_master-slave.inc	2010-10-22 15:16:26 +0000
+++ b/mysql-test/suite/rpl_ndb/ndb_master-slave.inc	2011-03-16 10:52:36 +0000
@@ -7,7 +7,6 @@ connect (master1,127.0.0.1,root,,test,$M
 connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
 -- connection slave
 -- source suite/rpl_ndb/have_one_ndb.inc
--- source include/ndb_conflict_info_init.inc
 
 connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,);
 
@@ -15,4 +14,3 @@ connect (slave1,127.0.0.1,root,,test,$SL
 
 # Set the default connection to 'master'
 connection master;
-source include/ndb_conflict_info_init.inc;

=== modified file 'mysql-test/suite/rpl_ndb/r/rpl_ndb_gap_event.result'
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_gap_event.result	2010-03-24 16:01:31 +0000
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_gap_event.result	2011-03-14 21:42:25 +0000
@@ -13,4 +13,10 @@ show binlog events in 'master-bin.000002
 Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 master-bin.000002	#	Incident	1	<end_pos>	#1 (LOST_EVENTS)
 drop table if exists t1;
+Get IO thread to reconnect to Master
+start slave;
+Slave_IO_Running	Yes
+Slave_SQL_Running	No
+Last_Errno	1590
+Last_Error	The incident LOST_EVENTS occured on the master. Message: mysqld startup
 drop table if exists t1;

=== added file 'mysql-test/suite/rpl_ndb/r/rpl_ndb_ignore_db.result'
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_ignore_db.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_ignore_db.result	2011-03-14 23:28:51 +0000
@@ -0,0 +1,33 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+delete from mysql.ndb_apply_status;
+use mysql;
+create table t1 (a int primary key, b int) engine=myisam;
+create table t2 (a int primary key, b int) engine=ndb;
+insert into t1 values (1,1), (2,2);
+insert into t2 values (1,1), (2,2);
+delete from t1;
+delete from t2;
+use test;
+create table t3 (a int primary key, b int) engine=ndb;
+insert into t3 values (1,1), (2,2);
+select count(1) from information_schema.tables where table_schema="mysql" and (table_name = "t1" or table_name="t2");
+count(1)
+0
+use test;
+select * from t3 order by a;
+a	b
+1	1
+2	2
+select count(1) from mysql.ndb_apply_status;
+count(1)
+1
+use mysql;
+drop table t1;
+drop table t2;
+use test;
+drop table t3;

=== added file 'mysql-test/suite/rpl_ndb/r/rpl_ndb_skip_gap_event.result'
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_skip_gap_event.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_skip_gap_event.result	2011-03-15 00:43:19 +0000
@@ -0,0 +1,28 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+create table t1(pk int not null primary key, i int) engine = ndb;
+select count(*) from t1;
+count(*)
+1000
+Restarting mysqld
+show binlog events in 'master-bin.000002'  from <start_pos> limit 0,1;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000002	#	Incident	1	<end_pos>	#1 (LOST_EVENTS)
+start slave;
+Sync Slave with master
+Show that Slave has not stopped (has skipped GAP)
+Slave_IO_Running	Yes
+Slave_SQL_Running	Yes
+Last_Errno	0
+Last_Error	
+Show that replication can continue
+insert into t1 values (1001, 1001);
+select count(*) from t1;
+count(*)
+1001
+drop table if exists t1;
+drop table t1;

=== renamed file 'mysql-test/include/ndb_conflict_info.inc' => 'mysql-test/suite/rpl_ndb/t/ndb_conflict_info.inc'
=== renamed file 'mysql-test/include/ndb_conflict_info_init.inc' => 'mysql-test/suite/rpl_ndb/t/ndb_conflict_info_init.inc'
=== modified file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_1.inc'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_1.inc	2010-01-27 09:29:10 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_1.inc	2011-03-16 11:07:13 +0000
@@ -1,5 +1,5 @@
 --connection slave
---source include/ndb_conflict_info_init.inc
+--source suite/rpl_ndb/t/ndb_conflict_info_init.inc
 
 --connection master
 
@@ -32,7 +32,7 @@ commit;
 --connection slave
 select * from t1 order by a, d;
 select * from t2 order by a, d;
---source include/ndb_conflict_info.inc
+--source suite/rpl_ndb/t/ndb_conflict_info.inc
 
 --echo *** master - update 2 rows in different tables
 --connection master
@@ -43,7 +43,7 @@ update t2 set b="Master t2 a=3 at c=3", 
 --connection slave
 select * from t1 order by a, d;
 select * from t2 order by a, d;
---source include/ndb_conflict_info.inc
+--source suite/rpl_ndb/t/ndb_conflict_info.inc
 
 --echo *** master - delete all
 --connection master
@@ -54,8 +54,8 @@ delete from t2;
 --connection slave
 select * from t1 order by a, d;
 select * from t2 order by a, d;
---source include/ndb_conflict_info.inc
---source include/ndb_conflict_info_init.inc
+--source suite/rpl_ndb/t/ndb_conflict_info.inc
+--source suite/rpl_ndb/t/ndb_conflict_info_init.inc
 
 --echo ************************
 --echo * start conflict testing
@@ -76,7 +76,7 @@ commit;
 --echo *** slave - check conflict info, no conflicts yet
 --sync_slave_with_master
 --connection slave
---source include/ndb_conflict_info.inc
+--source suite/rpl_ndb/t/ndb_conflict_info.inc
 
 --echo *** slave - check insert some data
 select * from t1 order by a, d;
@@ -110,7 +110,7 @@ commit;
 --echo *** slave - check conflict info, there should be some
 --sync_slave_with_master
 --connection slave
---source include/ndb_conflict_info.inc
+--source suite/rpl_ndb/t/ndb_conflict_info.inc
 
 --echo *** slave - check update some data that causes conflicts
 select * from t1 order by a, d;
@@ -133,7 +133,7 @@ commit;
 --echo *** slave - check conflict info, change depends on calling test
 --sync_slave_with_master
 --connection slave
---source include/ndb_conflict_info.inc
+--source suite/rpl_ndb/t/ndb_conflict_info.inc
 
 --echo *** slave - check higer timestamp
 select * from t1 order by a, d;

=== removed file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_d_d.inc'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_d_d.inc	2009-02-16 15:54:40 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_d_d.inc	1970-01-01 00:00:00 +0000
@@ -1,20 +0,0 @@
---echo ***
---echo *** conflicting timestamps on delete-delete
---echo ***
-
---echo *** slave - cause conflict
---connection slave
---source include/ndb_conflict_info_init.inc
-update t1 set b="slave  X=3", X=3 where a=1;
-delete from t1 where a=1;
-
---echo *** master - cause conflict
---connection master
-delete from t1 where a=1;
-delete from t1 where a=2;
-
---echo *** slave - check data
---sync_slave_with_master
---connection slave
---source include/ndb_conflict_info.inc
-select * from t1 order by a;

=== removed file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_d_u.inc'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_d_u.inc	2009-02-16 15:54:40 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_d_u.inc	1970-01-01 00:00:00 +0000
@@ -1,19 +0,0 @@
---echo ***
---echo *** conflicting timestamps on delete-update
---echo ***
-
---echo *** slave - cause conflict
---connection slave
---source include/ndb_conflict_info_init.inc
-update t1 set b="slave  X=3", X=3 where a=1;
-
---echo *** master - cause conflict
---connection master
-delete from t1 where a=1;
-delete from t1 where a=2;
-
---echo *** slave - check data
---sync_slave_with_master
---connection slave
---source include/ndb_conflict_info.inc
-select * from t1 order by a;

=== removed file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_i_i.inc'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_i_i.inc	2009-02-16 15:54:40 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_i_i.inc	1970-01-01 00:00:00 +0000
@@ -1,22 +0,0 @@
---echo ***
---echo *** conflicting timestamps on insert
---echo ***
-
---connection master
-delete from t1 where a=1;
---sync_slave_with_master
-
---echo *** slave - cause conflict
---connection slave
---source include/ndb_conflict_info_init.inc
-insert into t1 values(1, "slave  X=3", 3, "1");
-
---echo *** master - cause conflict
---connection master
-insert into t1 values(1, "master X=2", 2, "1");
-
---echo *** slave - check data
---sync_slave_with_master
---connection slave
---source include/ndb_conflict_info.inc
-select * from t1 order by a;

=== removed file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_init.inc'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_init.inc	2009-02-16 15:54:40 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_init.inc	1970-01-01 00:00:00 +0000
@@ -1,28 +0,0 @@
---echo *** reset and init
---disable_query_log
---disable_result_log
---connection slave
-stop slave;
-delete from t1;
---error 0,1146
-delete from `test`.`t1$EX`;
-
---connection master
-delete from t1;
-reset master;
-
---connection slave
-reset slave;
-start slave;
---source include/ndb_conflict_info_init.inc
---disable_query_log
---disable_result_log
-
---connection master
-insert into t1 values (1, "master X=1", 1, "1");
-insert into t1 values (2, "master X=1", 1, "2");
-insert into t1 values (3, "master X=1", 1, "3");
-
---sync_slave_with_master
---enable_query_log
---enable_result_log

=== removed file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_u_d.inc'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_u_d.inc	2009-02-16 15:54:40 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_u_d.inc	1970-01-01 00:00:00 +0000
@@ -1,19 +0,0 @@
---echo ***
---echo *** conflicting timestamps on update-delete
---echo ***
-
---echo *** slave - cause conflict
---connection slave
---source include/ndb_conflict_info_init.inc
-delete from t1 where a=1;
-
---echo *** master - cause conflict
---connection master
-update t1 set b="master X=2", X=2 where a=1;
-update t1 set b="master X=2", X=2 where a=2;
-
---echo *** slave - check data
---sync_slave_with_master
---connection slave
---source include/ndb_conflict_info.inc
-select * from t1 order by a;

=== removed file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_u_u.inc'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_u_u.inc	2009-02-16 15:54:40 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_conflict_u_u.inc	1970-01-01 00:00:00 +0000
@@ -1,19 +0,0 @@
---echo ***
---echo *** conflicting timestamps on update
---echo ***
-
---echo *** slave - cause conflict
---connection slave
---source include/ndb_conflict_info_init.inc
-update t1 set b="slave  X=3", X=3 where a=1;
-
---echo *** master - cause conflict
---connection master
-update t1 set b="master X=2", X=2 where a=1;
-update t1 set b="master X=2", X=2 where a=2;
-
---echo *** slave - check data
---sync_slave_with_master
---connection slave
---source include/ndb_conflict_info.inc
-select * from t1 order by a;

=== modified file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_gap_event.test'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_gap_event.test	2010-10-22 15:16:26 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_gap_event.test	2011-03-15 17:29:28 +0000
@@ -36,7 +36,17 @@ let $off_set=0;
 
 drop table if exists t1;
 
+--echo Get IO thread to reconnect to Master
 --connection slave
+--disable_result_log
+start slave;
+--enable_result_log
+
+-- source include/wait_for_slave_sql_to_stop.inc
+
+let $status_items= Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_Error;	
+-- source include/show_slave_status.inc
+
 drop table if exists t1;
 
 

=== added file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_ignore_db-master.opt'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_ignore_db-master.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_ignore_db-master.opt	2011-03-14 23:28:51 +0000
@@ -0,0 +1 @@
+--binlog-ignore-db=mysql

=== added file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_ignore_db.test'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_ignore_db.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_ignore_db.test	2011-03-14 23:47:26 +0000
@@ -0,0 +1,45 @@
+--source include/have_ndb.inc
+--source include/have_binlog_format_mixed_or_row.inc
+--source suite/rpl_ndb/ndb_master-slave.inc
+
+# We are not binlogging changes to the mysql db.  Check
+# that changes to tables in the mysql db are not replicated
+# but ndb_apply_status events are
+
+--connection slave
+delete from mysql.ndb_apply_status;
+
+--connection master
+use mysql;
+create table t1 (a int primary key, b int) engine=myisam;
+create table t2 (a int primary key, b int) engine=ndb;
+
+insert into t1 values (1,1), (2,2);
+insert into t2 values (1,1), (2,2);
+
+delete from t1;
+delete from t2;
+
+use test;
+create table t3 (a int primary key, b int) engine=ndb;
+insert into t3 values (1,1), (2,2);
+
+--sync_slave_with_master slave
+--connection slave
+
+select count(1) from information_schema.tables where table_schema="mysql" and (table_name = "t1" or table_name="t2"); 
+
+use test;
+select * from t3 order by a;
+
+select count(1) from mysql.ndb_apply_status;
+
+--connection master
+use mysql;
+drop table t1;
+drop table t2;
+
+use test;
+drop table t3;
+
+--sync_slave_with_master slave

=== added file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_skip_gap_event-slave.opt'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_skip_gap_event-slave.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_skip_gap_event-slave.opt	2011-03-14 21:42:25 +0000
@@ -0,0 +1 @@
+--slave-skip-errors=1590
\ No newline at end of file

=== added file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_skip_gap_event.test'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_skip_gap_event.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_skip_gap_event.test	2011-03-15 00:46:48 +0000
@@ -0,0 +1,69 @@
+--source include/have_ndb.inc
+--source include/have_binlog_format_mixed_or_row.inc
+--source suite/rpl_ndb/ndb_master-slave.inc
+
+--connection master
+create table t1(pk int not null primary key, i int) engine = ndb;
+
+#
+# insert more records into tables
+#
+let $1=1000;
+disable_query_log;
+while ($1)
+{
+ eval insert into t1 values($1, $1);
+ dec $1;
+}
+enable_query_log;
+
+--sync_slave_with_master
+# connect to slave and ensure data is there.
+--connection slave
+select count(*) from t1;
+
+--connection master
+
+--echo Restarting mysqld
+let $mysqld_name=mysqld.1.1;
+--source include/restart_mysqld.inc
+#show binlog events in 'master-bin.000002';
+let $log_name=master-bin.000002;
+let $start_pos=107;
+let $end_pos=143;
+let $off_set=0;
+-- source include/show_binlog_using_logname.inc
+
+--disable_result_log
+--connection slave
+# Get slave to try reconnection now.  Ignore errors if already started.
+start slave;
+--connection master
+--enable_result_log
+
+--echo Sync Slave with master
+--sync_slave_with_master
+
+--connection slave
+
+--echo Show that Slave has not stopped (has skipped GAP)
+
+let $status_items= Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_Error;	
+-- source include/show_slave_status.inc
+
+--echo Show that replication can continue
+--connection master
+insert into t1 values (1001, 1001);
+
+--sync_slave_with_master
+
+--connection slave
+
+select count(*) from t1;
+
+drop table if exists t1;
+
+--connection master
+drop table t1;
+
+

=== modified file 'sql/ha_ndbcluster.cc'
--- a/sql/ha_ndbcluster.cc	2011-03-17 08:02:01 +0000
+++ b/sql/ha_ndbcluster.cc	2011-03-17 08:17:18 +0000
@@ -1320,11 +1320,6 @@ SHOW_VAR ndb_status_variables_dynamic[]=
   {NullS, NullS, SHOW_LONG}
 };
 
-SHOW_VAR ndb_status_variables_fixed[]= {
-  {"cluster_connection_pool",(char*) &opt_ndb_cluster_connection_pool, SHOW_LONG},
-  {NullS, NullS, SHOW_LONG}
-};
-
 SHOW_VAR ndb_status_conflict_variables[]= {
   {"fn_max",     (char*) &g_ndb_status_conflict_fn_max, SHOW_LONG},
   {"fn_old",     (char*) &g_ndb_status_conflict_fn_old, SHOW_LONG},
@@ -1802,7 +1797,6 @@ Thd_ndb::Thd_ndb()
   m_handler= NULL;
   m_error= FALSE;
   m_error_code= 0;
-  query_state&= NDB_QUERY_NORMAL;
   options= 0;
   (void) my_hash_init(&open_tables, table_alias_charset, 5, 0, 0,
                       (my_hash_get_key)thd_ndb_share_get_key, 0, 0);
@@ -7859,7 +7853,6 @@ int ha_ndbcluster::start_statement(THD *
         DBUG_RETURN(error);
 
     thd_ndb->init_open_tables();
-    thd_ndb->query_state&= NDB_QUERY_NORMAL;
     thd_ndb->m_slow_path= FALSE;
     if (!(thd_options(thd) & OPTION_BIN_LOG) ||
         thd->variables.binlog_format == BINLOG_FORMAT_STMT)
@@ -13784,7 +13777,6 @@ ha_ndbcluster::read_multi_range_first(KE
   KEY* key_info= table->key_info + active_index;
   NDB_INDEX_TYPE cur_index_type= get_index_type(active_index);
   ulong reclength= table_share->reclength;
-  Thd_ndb *thd_ndb= m_thd_ndb;
   NdbTransaction *trans= m_thd_ndb->trans;
   int error;
 
@@ -13819,7 +13811,6 @@ ha_ndbcluster::read_multi_range_first(KE
   if (unlikely((error= close_scan())))
     DBUG_RETURN(error);
 
-  thd_ndb->query_state|= NDB_QUERY_MULTI_READ_RANGE;
   m_disable_multi_read= FALSE;
 
   /*
@@ -14369,7 +14360,6 @@ ha_ndbcluster::read_multi_range_next(KEY
 
   if (multi_range_curr == multi_range_end)
   {
-    m_thd_ndb->query_state&= NDB_QUERY_NORMAL;
     DBUG_RETURN(HA_ERR_END_OF_FILE);
   }
 
@@ -16669,7 +16659,6 @@ static int show_ndb_vars(THD *thd, SHOW_
 
 SHOW_VAR ndb_status_variables_export[]= {
   {"Ndb",          (char*) &show_ndb_vars,                 SHOW_FUNC},
-  {"Ndb",          (char*) &ndb_status_variables_fixed,    SHOW_ARRAY},
   {"Ndb_conflict", (char*) &ndb_status_conflict_variables, SHOW_ARRAY},
   {"Ndb",          (char*) &ndb_status_injector_variables, SHOW_ARRAY},
   {"Ndb",          (char*) &ndb_status_slave_variables,    SHOW_ARRAY},

=== modified file 'sql/ha_ndbcluster.h'
--- a/sql/ha_ndbcluster.h	2011-02-23 13:09:10 +0000
+++ b/sql/ha_ndbcluster.h	2011-03-17 08:17:18 +0000
@@ -283,11 +283,6 @@ inline void set_binlog_use_update(NDB_SH
 inline my_bool get_binlog_use_update(NDB_SHARE *share)
 { return (share->flags & NSF_BINLOG_USE_UPDATE) != 0; }
 
-typedef enum ndb_query_state_bits {
-  NDB_QUERY_NORMAL = 0,
-  NDB_QUERY_MULTI_READ_RANGE = 1
-} NDB_QUERY_STATE_BITS;
-
 /*
   Place holder for ha_ndbcluster thread specific data
 */
@@ -348,7 +343,6 @@ class Thd_ndb 
   uint32 options;
   uint32 trans_options;
   List<NDB_SHARE> changed_tables;
-  uint query_state;
   HASH open_tables;
   /*
     This is a memroot used to buffer rows for batched execution.

=== modified file 'sql/log.cc'
--- a/sql/log.cc	2010-10-12 11:54:35 +0000
+++ b/sql/log.cc	2011-03-15 11:14:43 +0000
@@ -4135,6 +4135,10 @@ int THD::binlog_write_table_map(TABLE *t
   Table_map_log_event
     the_event(this, table, table->s->table_map_id, is_trans);
 
+#ifndef MCP_BUG11799583
+  the_event.flags |= LOG_EVENT_NO_FILTER_F;
+#endif
+
   if (is_trans && binlog_table_maps == 0)
     binlog_start_trans_and_stmt();
 

=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc	2010-10-20 15:21:27 +0000
+++ b/sql/log_event.cc	2011-03-14 21:58:28 +0000
@@ -9659,6 +9659,15 @@ int
 Incident_log_event::do_apply_event(Relay_log_info const *rli)
 {
   DBUG_ENTER("Incident_log_event::do_apply_event");
+
+#ifndef MCP_BUG59889
+  if (ignored_error_code(ER_SLAVE_INCIDENT))
+  {
+    DBUG_PRINT("info", ("Ignoring Incident"));
+    DBUG_RETURN(0);
+  }
+#endif
+   
   rli->report(ERROR_LEVEL, ER_SLAVE_INCIDENT,
               ER(ER_SLAVE_INCIDENT),
               description(),

=== modified file 'sql/log_event.h'
--- a/sql/log_event.h	2010-10-20 11:10:46 +0000
+++ b/sql/log_event.h	2011-03-15 11:59:15 +0000
@@ -501,6 +501,14 @@ struct sql_ex_info
  */
 #define LOG_EVENT_NO_DB_CHECK_F 0x80
 
+#ifndef MCP_BUG11799583
+/* 
+   Define LOG_EVENT_NO_FILTER_F as alias for LOG_EVENT_NO_DB_CHECK
+   to make it possible to write code that is forward compatible with 5.5
+*/
+#define LOG_EVENT_NO_FILTER_F LOG_EVENT_NO_DB_CHECK_F
+#endif
+
 /**
   @def OPTIONS_WRITTEN_TO_BIN_LOG
 

=== modified file 'sql/rpl_injector.h'
--- a/sql/rpl_injector.h	2011-02-01 14:58:55 +0000
+++ b/sql/rpl_injector.h	2011-03-14 23:47:26 +0000
@@ -175,6 +175,9 @@ public:
           use_table() is called after any *_row() function has been
           called for the transaction.
 
+          The caller is responsible for filtering out table map events
+          which shouldn't be included due to binlog_do/ignore db.
+
         RETURN VALUE
 
           0         All OK

=== modified file 'storage/ndb/docs/doxygen/Doxyfile.mgmapi'
--- a/storage/ndb/docs/doxygen/Doxyfile.mgmapi	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/docs/doxygen/Doxyfile.mgmapi	2011-03-14 13:48:33 +0000
@@ -552,7 +552,7 @@ EXTRA_PACKAGES         = 
 # the first chapter. If it is left blank doxygen will generate a 
 # standard header. Notice: only use this tag if you know what you are doing!
 
-LATEX_HEADER           = ../doxygen/header.mgmapi.tex
+LATEX_HEADER           =
 
 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
 # is prepared for conversion to pdf (using ps2pdf). The pdf file will 

=== modified file 'storage/ndb/docs/doxygen/Doxyfile.ndbapi'
--- a/storage/ndb/docs/doxygen/Doxyfile.ndbapi	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/docs/doxygen/Doxyfile.ndbapi	2011-03-14 13:48:33 +0000
@@ -552,7 +552,7 @@ EXTRA_PACKAGES         = 
 # the first chapter. If it is left blank doxygen will generate a 
 # standard header. Notice: only use this tag if you know what you are doing!
 
-LATEX_HEADER           = ../doxygen/header.ndbapi.tex
+LATEX_HEADER           =
 
 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
 # is prepared for conversion to pdf (using ps2pdf). The pdf file will 

=== modified file 'storage/ndb/include/ndb_config.h.in'
--- a/storage/ndb/include/ndb_config.h.in	2011-02-02 00:40:07 +0000
+++ b/storage/ndb/include/ndb_config.h.in	2011-03-15 15:50:34 +0000
@@ -41,3 +41,5 @@
 #cmakedefine HAVE__BITSCANFORWARD 1
 #cmakedefine HAVE_PTHREAD_MUTEXATTR_INIT 1
 #cmakedefine HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
+#cmakedefine HAVE_PTHREAD_SETSCHEDPARAM 1
+

=== modified file 'storage/ndb/ndb_configure.cmake'
--- a/storage/ndb/ndb_configure.cmake	2011-02-02 00:40:07 +0000
+++ b/storage/ndb/ndb_configure.cmake	2011-03-15 15:50:34 +0000
@@ -43,6 +43,7 @@ CHECK_FUNCTION_EXISTS(mlock HAVE_MLOCK)
 CHECK_FUNCTION_EXISTS(ffs HAVE_FFS)
 CHECK_FUNCTION_EXISTS(pthread_mutexattr_init HAVE_PTHREAD_MUTEXATTR_INIT)
 CHECK_FUNCTION_EXISTS(pthread_mutexattr_settype HAVE_PTHREAD_MUTEXATTR_SETTYPE)
+cHECK_FUNCTION_EXISTS(pthread_setschedparam HAVE_PTHREAD_SETSCHEDPARAM)
 
 CHECK_INCLUDE_FILES(sun_prefetch.h HAVE_SUN_PREFETCH_H)
 

=== modified file 'storage/ndb/src/common/portlib/NdbCondition.c'
--- a/storage/ndb/src/common/portlib/NdbCondition.c	2011-02-03 14:20:36 +0000
+++ b/storage/ndb/src/common/portlib/NdbCondition.c	2011-03-15 15:55:03 +0000
@@ -30,11 +30,10 @@ static int clock_id = CLOCK_REALTIME;
 void
 NdbCondition_initialize(int need_monotonic)
 {
-  init = 1;
 #if defined HAVE_CLOCK_GETTIME && defined HAVE_PTHREAD_CONDATTR_SETCLOCK && \
     defined CLOCK_MONOTONIC
   
-  int res, init = 0;
+  int res;
   pthread_cond_t tmp;
   pthread_condattr_t attr;
 
@@ -71,6 +70,8 @@ nogo:
           res);
   fflush(stderr);
   return;
+#else
+  init = 1;
 #endif
 }
 

=== modified file 'storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp'
--- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2011-02-18 08:50:50 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2011-03-17 08:17:18 +0000
@@ -9023,8 +9023,7 @@ Dbdict::alterTable_toLocal(Signal* signa
   ndbrequire(blockIndex < AlterTableRec::BlockCount);
   const Uint32 blockNo = alterTabPtr.p->m_blockNo[blockIndex];
 
-  const char* const blockName = getBlockName(blockNo);
-  D("alterTable_toLocal" << V(blockIndex) << V(blockName));
+  D("alterTable_toLocal" << V(blockIndex) << V(getBlockName(blockNo)));
 
   AlterTabReq* req = (AlterTabReq*)signal->getDataPtrSend();
   req->senderRef = reference();
@@ -9613,8 +9612,7 @@ Dbdict::alterTable_abortToLocal(Signal* 
   const Uint32 blockIndex = blockCount - 1;
   const Uint32 blockNo = alterTabPtr.p->m_blockNo[blockIndex];
 
-  const char* const blockName = getBlockName(blockNo);
-  D("alterTable_abortToLocal" << V(blockIndex) << V(blockName));
+  D("alterTable_abortToLocal" << V(blockIndex) << V(getBlockName(blockNo)));
 
   Uint32 connectPtr = RNIL;
   switch(blockNo){
@@ -18663,11 +18661,10 @@ Dbdict::execDICT_TAKEOVER_REF(Signal* si
   Uint32 senderRef = ref->senderRef;
   Uint32 nodeId = refToNode(senderRef);
   Uint32 masterRef = ref->masterRef;
-  Uint32 errorCode = ref->errorCode;
   NodeRecordPtr masterNodePtr;
   jamEntry();
 #ifdef VM_TRACE
-  ndbout_c("Dbdict::execDICT_TAKEOVER_REF: error %u, from %u", errorCode, nodeId);
+  ndbout_c("Dbdict::execDICT_TAKEOVER_REF: error %u, from %u", ref->errorCode, nodeId);
 #endif
   /*
     Slave has died (didn't reply) or doesn't not have any transaction
@@ -18698,12 +18695,12 @@ Dbdict::execDICT_TAKEOVER_CONF(Signal* s
   Uint32 senderRef = conf->senderRef;
   Uint32 nodeId = refToNode(senderRef);
   //Uint32 clientRef = conf->clientRef;
-  Uint32 op_count = conf->op_count;
-  Uint32 trans_key = conf->trans_key;
-  Uint32 rollforward_op = conf->rollforward_op;
-  Uint32 rollforward_op_state = conf->rollforward_op_state;
-  Uint32 rollback_op = conf->rollback_op;
-  Uint32 rollback_op_state = conf->rollback_op_state;
+  //Uint32 op_count = conf->op_count;
+  //Uint32 trans_key = conf->trans_key;
+  //Uint32 rollforward_op = conf->rollforward_op;
+  //Uint32 rollforward_op_state = conf->rollforward_op_state;
+  //Uint32 rollback_op = conf->rollback_op;
+  //Uint32 rollback_op_state = conf->rollback_op_state;
   NodeRecordPtr masterNodePtr;
   
   /*
@@ -18716,7 +18713,9 @@ Dbdict::execDICT_TAKEOVER_CONF(Signal* s
   ndbassert(getOwnNodeId() == c_masterNodeId);
   c_nodes.getPtr(masterNodePtr, c_masterNodeId);
 #ifdef VM_TRACE
-  ndbout_c("execDICT_TAKEOVER_CONF: Node %u, trans %u(%u), count %u, rollf %u/%u, rb %u/%u", nodeId, trans_key, conf->trans_state, op_count, rollforward_op, rollforward_op_state, rollback_op, rollback_op_state);
+  ndbout_c("execDICT_TAKEOVER_CONF: Node %u, trans %u(%u), count %u, rollf %u/%u, rb %u/%u",
+           nodeId, conf->trans_key, conf->trans_state, conf->op_count, conf->rollforward_op,
+           conf->rollforward_op_state, conf->rollback_op, conf->rollback_op_state);
 #endif
 
   /*
@@ -23208,11 +23207,7 @@ Dbdict::seizeSchemaOp(SchemaOpPtr& op_pt
         jam();
         c_schemaOpHash.add(op_ptr);
         op_ptr.p->m_magic = SchemaOp::DICT_MAGIC;
-        const char* opType = info.m_opType;
-        D("seizeSchemaOp" << V(op_key) << V(opType));
-#ifdef MARTIN
-        ndbout_c("Dbdict::seizeSchemaOp: op_key %u, op_type %s", op_key, opType);
-#endif
+        D("seizeSchemaOp" << V(op_key) << V(info.m_opType));
         return true;
       }
       c_schemaOpHash.release(op_ptr);
@@ -23240,11 +23235,7 @@ Dbdict::findSchemaOp(SchemaOpPtr& op_ptr
 void
 Dbdict::releaseSchemaOp(SchemaOpPtr& op_ptr)
 {
-  Uint32 op_key = op_ptr.p->op_key;
-  D("releaseSchemaOp" << V(op_key));
-#ifdef MARTIN
-  ndbout_c("Dbdict::releaseSchemaOp: op_key %u", op_key);
-#endif
+  D("releaseSchemaOp" << V(op_ptr.p->op_key));
 
   const OpInfo& info = getOpInfo(op_ptr);
   (this->*(info.m_release))(op_ptr);
@@ -23582,11 +23573,7 @@ Dbdict::findSchemaTrans(SchemaTransPtr& 
 void
 Dbdict::releaseSchemaTrans(SchemaTransPtr& trans_ptr)
 {
-  Uint32 trans_key = trans_ptr.p->trans_key;
-  D("releaseSchemaTrans" << V(trans_key));
-#ifdef MARTIN
-  ndbout_c("Dbdict::releaseSchemaTrans: Releasing trans %u", trans_key);
-#endif
+  D("releaseSchemaTrans" << V(trans_ptr.p->trans_key));
 
   LocalDLFifoList<SchemaOp> list(c_schemaOpPool, trans_ptr.p->m_op_list);
   SchemaOpPtr op_ptr;
@@ -26873,8 +26860,7 @@ Dbdict::findTxHandle(TxHandlePtr& tx_ptr
 void
 Dbdict::releaseTxHandle(TxHandlePtr& tx_ptr)
 {
-  Uint32 tx_key = tx_ptr.p->tx_key;
-  D("releaseTxHandle" << V(tx_key));
+  D("releaseTxHandle" << V(tx_ptr.p->tx_key));
 
   ndbrequire(tx_ptr.p->m_magic == TxHandle::DICT_MAGIC);
   tx_ptr.p->m_magic = 0;

=== modified file 'storage/ndb/src/kernel/blocks/pgman.cpp'
--- a/storage/ndb/src/kernel/blocks/pgman.cpp	2011-02-01 23:27:25 +0000
+++ b/storage/ndb/src/kernel/blocks/pgman.cpp	2011-03-15 16:11:47 +0000
@@ -1670,11 +1670,14 @@ int
 Pgman::get_page_no_lirs(Signal* signal, Ptr<Page_entry> ptr, Page_request page_req)
 {
   jamEntry();
+
+#ifdef VM_TRACE
   Ptr<Page_request> tmp = { &page_req, RNIL};
 
   D(">get_page");
   D(ptr);
   D(tmp);
+#endif
 
   Uint32 req_flags = page_req.m_flags;
 
@@ -2791,8 +2794,6 @@ void
 Pgman::execDBINFO_SCANREQ(Signal *signal)
 {
   DbinfoScanReq req= *(DbinfoScanReq*)signal->theData;
-  const Ndbinfo::ScanCursor* cursor =
-    reinterpret_cast<const Ndbinfo::ScanCursor*>(DbinfoScan::getCursorPtr(&req));
   Ndbinfo::Ratelimit rl;
 
   jamEntry();
@@ -2800,7 +2801,6 @@ Pgman::execDBINFO_SCANREQ(Signal *signal
   case Ndbinfo::DISKPAGEBUFFER_TABLEID:
   {
     jam();
-    BlockNumber bn = blockToMain(number());
     Ndbinfo::Row row(signal, req);
     row.write_uint32(getOwnNodeId());
     row.write_uint32(instance());   // block instance

=== modified file 'storage/ndb/src/kernel/blocks/tsman.cpp'
--- a/storage/ndb/src/kernel/blocks/tsman.cpp	2011-01-30 20:56:00 +0000
+++ b/storage/ndb/src/kernel/blocks/tsman.cpp	2011-03-15 16:11:47 +0000
@@ -1229,9 +1229,8 @@ Tsman::load_extent_page_callback(Signal*
   Uint32 senderRef = ptr.p->m_create.m_senderRef;  
   Uint32 senderData = ptr.p->m_create.m_senderData;
   Uint32 extent_pages = ptr.p->m_create.m_extent_pages;
-  Uint32 requestInfo = ptr.p->m_create.m_requestInfo;
   Uint32 data_pages = ptr.p->m_create.m_data_pages;
-  ndbassert(requestInfo == CreateFileImplReq::Commit);
+  ndbassert(ptr.p->m_create.m_requestInfo == CreateFileImplReq::Commit);
 
   Uint32 eh= File_formats::Datafile::extent_header_words(ptr.p->m_extent_size);
   Uint32 per_page = File_formats::Datafile::EXTENT_PAGE_WORDS/eh;

=== removed directory 'storage/ndb/test/sql'
=== removed file 'storage/ndb/test/sql/BANK.sql'
--- a/storage/ndb/test/sql/BANK.sql	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/test/sql/BANK.sql	1970-01-01 00:00:00 +0000
@@ -1,59 +0,0 @@
--- Copyright (C) 2005 MySQL AB
---
--- This program is free software; you can redistribute it and/or modify
--- it under the terms of the GNU General Public License as published by
--- the Free Software Foundation; version 2 of the License.
---
--- This program is distributed in the hope that it will be useful,
--- but WITHOUT ANY WARRANTY; without even the implied warranty of
--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--- GNU General Public License for more details.
---
--- You should have received a copy of the GNU General Public License
--- along with this program; if not, write to the Free Software
--- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
-
-CREATE DATABASE IF NOT EXISTS BANK default charset=latin1 default collate=latin1_bin;
-USE BANK;
-DROP TABLE IF EXISTS GL;
-CREATE TABLE GL ( TIME BIGINT UNSIGNED NOT NULL,
-                  ACCOUNT_TYPE INT UNSIGNED NOT NULL,
-                  BALANCE INT UNSIGNED NOT NULL,
-                  DEPOSIT_COUNT INT UNSIGNED NOT NULL,
-                  DEPOSIT_SUM INT UNSIGNED NOT NULL,
-                  WITHDRAWAL_COUNT INT UNSIGNED NOT NULL,
-                  WITHDRAWAL_SUM INT UNSIGNED NOT NULL,
-                  PURGED INT UNSIGNED NOT NULL,
-                  PRIMARY KEY USING HASH (TIME,ACCOUNT_TYPE))
-   ENGINE = NDB;
-
-DROP TABLE IF EXISTS ACCOUNT;
-CREATE TABLE ACCOUNT ( ACCOUNT_ID INT UNSIGNED NOT NULL,
-                       OWNER INT UNSIGNED NOT NULL,
-                       BALANCE INT UNSIGNED NOT NULL,
-                       ACCOUNT_TYPE INT UNSIGNED NOT NULL,
-                       PRIMARY KEY USING HASH (ACCOUNT_ID))
-   ENGINE = NDB;
-
-DROP TABLE IF EXISTS TRANSACTION;
-CREATE TABLE TRANSACTION ( TRANSACTION_ID BIGINT UNSIGNED NOT NULL,
-                           ACCOUNT INT UNSIGNED NOT NULL,
-                           ACCOUNT_TYPE INT UNSIGNED NOT NULL,
-                           OTHER_ACCOUNT INT UNSIGNED NOT NULL,
-                           TRANSACTION_TYPE INT UNSIGNED NOT NULL,
-                           TIME BIGINT UNSIGNED NOT NULL,
-                           AMOUNT INT UNSIGNED NOT NULL,
-                           PRIMARY KEY USING HASH (TRANSACTION_ID,ACCOUNT))
-   ENGINE = NDB;
-
-DROP TABLE IF EXISTS SYSTEM_VALUES;
-CREATE TABLE SYSTEM_VALUES ( SYSTEM_VALUES_ID INT UNSIGNED NOT NULL,
-                             VALUE BIGINT UNSIGNED NOT NULL,
-                             PRIMARY KEY USING HASH (SYSTEM_VALUES_ID))
-   ENGINE = NDB;
-
-DROP TABLE IF EXISTS ACCOUNT_TYPE;
-CREATE TABLE ACCOUNT_TYPE ( ACCOUNT_TYPE_ID INT UNSIGNED NOT NULL,
-                            DESCRIPTION CHAR(64) NOT NULL,
-                            PRIMARY KEY USING HASH (ACCOUNT_TYPE_ID))
-   ENGINE = NDB;

=== removed file 'storage/ndb/test/sql/T1.sql'
--- a/storage/ndb/test/sql/T1.sql	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/test/sql/T1.sql	1970-01-01 00:00:00 +0000
@@ -1,24 +0,0 @@
--- Copyright (C) 2005 MySQL AB
---
--- This program is free software; you can redistribute it and/or modify
--- it under the terms of the GNU General Public License as published by
--- the Free Software Foundation; version 2 of the License.
---
--- This program is distributed in the hope that it will be useful,
--- but WITHOUT ANY WARRANTY; without even the implied warranty of
--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--- GNU General Public License for more details.
---
--- You should have received a copy of the GNU General Public License
--- along with this program; if not, write to the Free Software
--- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
-
-create database if not exists TEST_DB;
-use TEST_DB;
-drop table if exists T1;
-create table T1 (KOL1 int unsigned not null,
-                 KOL2 int unsigned not null,
-	         KOL3 int unsigned not null,
-	         KOL4 int unsigned not null,
-	         KOL5 int unsigned not null,
-	         primary key using hash(KOL1)) engine=ndb;

=== removed file 'storage/ndb/test/sql/test_create_drop.pl'
--- a/storage/ndb/test/sql/test_create_drop.pl	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/test/sql/test_create_drop.pl	1970-01-01 00:00:00 +0000
@@ -1,194 +0,0 @@
-# Copyright (C) 2005 MySQL AB
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
-
-use strict;
-use IO::Socket;
-use DBI;
-
-# mgm info
-my $mgmhost = "localhost";
-my $mgmport = 38101;
-
-# location of ndb_x_fs
-my $datadir = "c2";
-my @schemafiles = <$datadir/ndb_*_fs/D[12]/DBDICT/P0.SchemaLog>;
-@schemafiles or die "no schemafiles in $datadir";
-
-my $dsn;
-$dsn = "dbi:mysql:test:localhost;port=38100";
-
-# this works better for me
-my $cnf = $ENV{MYSQL_HOME} . "/var/my.cnf";
-$dsn = "dbi:mysql:database=test;host=localhost;mysql_read_default_file=$cnf";
-
-my $dbh;
-$dbh = DBI->connect($dsn, 'root', undef, { RaiseError => 0, PrintError => 0 });
-$dbh or die $DBI::errstr;
-
-# mgm commands
-
-my $mgm = undef;
-
-sub mgmconnect {
-  $mgm = IO::Socket::INET->new(
-    Proto => "tcp",
-    PeerHost => $mgmhost,
-    PeerPort => $mgmport);
-  $mgm or die "connect to mgm failed: $!";
-  $mgm->autoflush(1);
-};
-
-mgmconnect();
-warn "connected to mgm $mgmhost $mgmport\n";
-
-my $nodeinfo = {};
-
-sub getnodeinfo {
-  $nodeinfo = {};
-  $mgm->print("get status\n");
-  $mgm->print("\n");
-  while (defined($_ = $mgm->getline)) {
-    /^node\s+status/ && last;
-  }
-  while (defined($_ = $mgm->getline)) {
-    /^\s*$/ && last;
-    /^node\.(\d+)\.(\w+):\s*(\S+)/ && ($nodeinfo->{$1}{$2} = $3);
-  }
-}
-
-getnodeinfo();
-
-my @dbnode = ();
-for my $n (keys %$nodeinfo) {
-  my $p = $nodeinfo->{$n};
-  ($p->{type} eq 'NDB') && push(@dbnode, $n);
-}
-@dbnode = sort { $a <=> $b } @dbnode;
-@dbnode or die "mgm error, found no db nodes";
-warn "db nodes: @dbnode\n";
-
-sub restartnode {
-  my($n, $initialstart) = @_;
-  warn "restart node $n initialstart=$initialstart\n";
-  $mgm->print("restart node\n");
-  $mgm->print("node: $n\n");
-  $mgm->print("initialstart: $initialstart\n");
-  $mgm->print("\n");
-  while (1) {
-    sleep 5;
-    getnodeinfo();
-    my $status = $nodeinfo->{$n}{status};
-    my $sp = $nodeinfo->{$n}{startphase};
-    warn "node $n status: $status sp: $sp\n";
-    last if $status eq 'STARTED';
-  }
-}
-
-sub restartall {
-  warn "restart all\n";
-  $mgm->print("restart all\n");
-  $mgm->print("\n");
-  while (1) {
-    sleep 5;
-    getnodeinfo();
-    my $ok = 1;
-    for my $n (@dbnode) {
-      my $status = $nodeinfo->{$n}{status};
-      my $sp = $nodeinfo->{$n}{startphase};
-      warn "node $n status: $status sp: $sp\n";
-      $ok = 0 if $status ne 'STARTED';
-    }
-    last if $ok;
-  }
-}
-
-# the sql stuff
-
-my $maxtab = 300;
-my @tab = ();
-
-sub create {
-  my($n) = @_;
-  my $sql = "create table t$n (a int primary key, b varchar(20), key (b)) engine=ndb";
-  warn "create t$n\n";
-  $dbh->do($sql) or die "$sql\n$DBI::errstr";
-}
-
-sub drop {
-  my($n) = @_;
-  my $sql = "drop table t$n";
-  warn "drop t$n\n";
-  $dbh->do($sql) or die "$sql\n$DBI::errstr";
-}
-
-sub dropall {
-  for my $n (0..($maxtab-1)) {
-    my $sql = "drop table if exists t$n";
-    $dbh->do($sql) or die "$sql\n$DBI::errstr";
-  }
-}
-
-sub createdrop {
-  my $n = int(rand($maxtab));
-  if (! $tab[$n]) {
-    create($n);
-    $tab[$n] = 1;
-  } else {
-    drop($n);
-    $tab[$n] = 0;
-  }
-}
-
-sub checkschemafiles {
-  system("printSchemaFile -ce @schemafiles");
-  $? == 0 or die "schemafiles check failed";
-}
-
-sub randomrestart {
-  my($k) = @_;
-  my $s = int(rand(500));
-  if ($s < 2) {
-    my $i = $k % scalar(@dbnode);
-    my $n = $dbnode[$i];
-    my $initialstart = ($s < 1 ? 0 : 1);
-    restartnode($n, $initialstart);
-    return 1;
-  }
-  if ($s < 3) {
-    restartall();
-    return 1;
-  }
-  return 0;
-}
-
-# deterministic
-srand(1);
-
-warn "drop any old tables\n";
-dropall();
-
-my $loop = 1000000;
-for my $k (0..($loop-1)) {
-  warn "$k\n";
-  createdrop();
-  checkschemafiles();
-  if (randomrestart($k)) {
-    checkschemafiles();
-  }
-}
-
-$dbh->disconnect or die $DBI::errstr;
-
-# vim: set sw=2:

=== removed file 'storage/ndb/test/sql/test_range_bounds.pl'
--- a/storage/ndb/test/sql/test_range_bounds.pl	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/test/sql/test_range_bounds.pl	1970-01-01 00:00:00 +0000
@@ -1,233 +0,0 @@
-# Copyright (C) 2005 MySQL AB
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
-
-#
-# test range scan bounds
-# give option --all to test all cases
-# set MYSQL_HOME to installation top
-#
-
-use strict;
-use integer;
-use Getopt::Long;
-use DBI;
-
-my $opt_all = 0;
-my $opt_cnt = 5;
-my $opt_verbose = 0;
-GetOptions("all" => \$opt_all, "cnt=i" => \$opt_cnt, "verbose" => \$opt_verbose)
-  or die "options are:  --all --cnt=N --verbose";
-
-my $mysql_home = $ENV{MYSQL_HOME};
-defined($mysql_home) or die "no MYSQL_HOME";
-my $dsn = "dbi:mysql:database=test;host=localhost;mysql_read_default_file=$mysql_home/var/my.cnf";
-my $opts = { RaiseError => 0, PrintError => 0, AutoCommit => 1, };
-
-my $dbh;
-my $sth;
-my $sql;
-
-$dbh = DBI->connect($dsn, "root", undef, $opts) or die $DBI::errstr;
-
-my $table = 't';
-
-$sql = "drop table if exists $table";
-$dbh->do($sql) or die $DBI::errstr;
-
-sub cut ($$$) {
-  my($op, $key, $val) = @_;
-  $op = '==' if $op eq '=';
-  my(@w) = @$val;
-  eval "\@w = grep(\$_ $op $key, \@w)";
-  $@ and die $@;
-  return [ @w ];
-}
-
-sub mkdummy ($) {
-  my ($val) = @_;
-  return {
-    'dummy' => 1,
-    'exp' => '9 = 9',
-    'res' => $val,
-  };
-}
-
-sub mkone ($$$$) {
-  my($col, $op, $key, $val) = @_;
-  my $res = cut($op, $key, $val);
-  return {
-    'exp' => "$col $op $key",
-    'res' => $res,
-  };
-}
-
-sub mktwo ($$$$$$) {
-  my($col, $op1, $key1, $op2, $key2, $val) = @_;
-  my $res = cut($op2, $key2, cut($op1, $key1, $val));
-  return {
-    'exp' => "$col $op1 $key1 and $col $op2 $key2",
-    'res' => $res,
-  };
-}
-
-sub mkall ($$$$) {
-  my($col, $key1, $key2, $val) = @_;
-  my @a = ();
-  my $p = mkdummy($val);
-  push(@a, $p) if $opt_all;
-  my @ops = qw(< <= = >= >);
-  for my $op (@ops) {
-    my $p = mkone($col, $op, $key1, $val);
-    push(@a, $p) if $opt_all || @{$p->{res}} != 0;
-  }
-  my @ops1 = $opt_all ? @ops : qw(= >= >);
-  my @ops2 = $opt_all ? @ops : qw(<= <);
-  for my $op1 (@ops1) {
-    for my $op2 (@ops2) {
-      my $p = mktwo($col, $op1, $key1, $op2, $key2, $val);
-      push(@a, $p) if $opt_all || @{$p->{res}} != 0;
-    }
-  }
-  warn scalar(@a)." cases\n" if $opt_verbose;
-  return \@a;
-}
-
-my $casecnt = 0;
-
-sub verify ($$$) {
-  my($sql, $ord, $res) = @_;
-  warn "$sql\n" if $opt_verbose;
-  $sth = $dbh->prepare($sql) or die "prepare: $sql: $DBI::errstr";
-  $sth->execute() or die "execute: $sql: $DBI::errstr";
-  #
-  # BUG: execute can return success on error so check again
-  #
-  $sth->err and die "execute: $sql: $DBI::errstr";
-  my @out = ();
-  for my $b (@{$res->[0]}) {
-    for my $c (@{$res->[1]}) {
-      for my $d (@{$res->[2]}) {
-	push(@out, [$b, $c, $d]);
-      }
-    }
-  }
-  if ($ord) {
-    @out = sort {
-      $ord * ($a->[0] - $b->[0]) ||
-      $ord * ($a->[1] - $b->[1]) ||
-      $ord * ($a->[2] - $b->[2]) ||
-      0
-    } @out;
-  }
-  my $cnt = scalar @out;
-  my $n = 0;
-  while (1) {
-    my $row = $sth->fetchrow_arrayref;
-    $row || last;
-    @$row == 3 or die "bad row: $sql:  @$row";
-    for my $v (@$row) {
-      $v =~ s/^\s+|\s+$//g;
-      $v =~ /^\d+$/ or die "bad value: $sql:  $v";
-    }
-    if ($ord) {
-      my $out = $out[$n];
-      $row->[0] == $out->[0] &&
-      $row->[1] == $out->[1] &&
-      $row->[2] == $out->[2] or
-        die "$sql: row $n: got row @$row != @$out";
-    }
-    $n++;
-  }
-  $sth->err and die "fetch: $sql: $DBI::errstr";
-  $n == $cnt or die "verify: $sql: got row count $n != $cnt";
-  $casecnt++;
-}
-
-for my $nn ("bcd", "") {
-  my %nn;
-  for my $x (qw(b c d)) {
-    $nn{$x} = $nn =~ /$x/ ? "not null" : "null";
-  }
-  warn "create table\n";
-  $sql = <<EOF;
-create table $table (
-  a int primary key,
-  b int $nn{b},
-  c int $nn{c},
-  d int $nn{d},
-  index (b, c, d)
-) engine=ndb
-EOF
-  $dbh->do($sql) or die $DBI::errstr;
-  warn "insert\n";
-  $sql = "insert into $table values(?, ?, ?, ?)";
-  $sth = $dbh->prepare($sql) or die $DBI::errstr;
-  my @val = (0..($opt_cnt-1));
-  my $v0 = 0;
-  for my $v1 (@val) {
-    for my $v2 (@val) {
-      for my $v3 (@val) {
-	$sth->bind_param(1, $v0) or die $DBI::errstr;
-	$sth->bind_param(2, $v1) or die $DBI::errstr;
-	$sth->bind_param(3, $v2) or die $DBI::errstr;
-	$sth->bind_param(4, $v3) or die $DBI::errstr;
-	$sth->execute or die $DBI::errstr;
-	$v0++;
-      }
-    }
-  }
-  warn "generate cases\n";
-  my $key1 = 1;
-  my $key2 = 3;
-  my $a1 = mkall('b', $key1, $key2, \@val);
-  my $a2 = mkall('c', $key1, $key2, \@val);
-  my $a3 = mkall('d', $key1, $key2, \@val);
-  warn "select\n";
-  for my $ord (0, +1, -1) {
-    my $orderby =
-      $ord == 0 ? "" :
-      $ord == +1 ? " order by b, c, d" :
-      $ord == -1 ? " order by b desc, c desc, d desc" : die "not here";
-    for my $p1 (@$a1) {
-      my $res = [ $p1->{res}, \@val, \@val ];
-      $sql = "select b, c, d from $table" .
-	     " where $p1->{exp}" .
-	     $orderby;
-      verify($sql, $ord, $res);
-      for my $p2 (@$a2) {
-	my $res = [ $p1->{res}, $p2->{res}, \@val ];
-	$sql = "select b, c, d from $table" .
-	       " where $p1->{exp} and $p2->{exp}" .
-	       $orderby;
-	verify($sql, $ord, $res);
-	for my $p3 (@$a3) {
-	  my $res = [ $p1->{res}, $p2->{res}, $p3->{res} ];
-	  $sql = "select b, c, d from $table" .
-		 " where $p1->{exp} and $p2->{exp} and $p3->{exp}" .
-		 $orderby;
-	  verify($sql, $ord, $res);
-	}
-      }
-    }
-  }
-  warn "drop table\n";
-  $sql = "drop table $table";
-  $dbh->do($sql) or die $DBI::errstr;
-}
-
-warn "verified $casecnt cases\n";
-warn "done\n";
-
-# vim: set sw=2:

=== removed file 'storage/ndb/tools/clean-links.sh'
--- a/storage/ndb/tools/clean-links.sh	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/tools/clean-links.sh	1970-01-01 00:00:00 +0000
@@ -1,36 +0,0 @@
-#! /bin/sh
-
-# Copyright (C) 2003, 2005 MySQL AB
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
-
-# 1 - Dir
-# 2 - Link dst
-
-if [ $# -lt 1 ]
-then
-    exit 0
-fi
-
-files=`find $1 -type l -maxdepth 1`
-res=$?
-if [ $res -ne 0 ] || [ "$files" = "" ]
-then
-    exit 0
-fi
-
-rm -f $files
-
-
-

=== removed file 'storage/ndb/tools/make-errors.pl'
--- a/storage/ndb/tools/make-errors.pl	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/tools/make-errors.pl	1970-01-01 00:00:00 +0000
@@ -1,196 +0,0 @@
-#! /usr/local/bin/perl
-
-# Copyright (C) 2003, 2005 MySQL AB
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
-
-use strict;
-use Getopt::Long;
-use XML::Parser;
-
-(my $progname = $0) =~ s!^.*/!!;
-
-sub usage {
-    my $errstr = "@_";
-    while (chomp($errstr)) {}
-    print <<END;
-$progname: $errstr
-$progname -- read codes.xml and write codes.hpp and codes.cpp
-usage: $progname [options] codes.xml
--c  check xml file only
--d  check xml file and show diff against old hpp and cpp
-END
-    exit(1);
-}
-
-my $opts = {};
-opts: {
-    local $SIG{__WARN__} = \&usage;
-    GetOptions($opts, qw(c d));
-}
-@ARGV == 1 or usage("one filename argument expected");
-my $filexml = shift;
-$filexml =~ /^(.*)\.xml$/ or usage("$filexml does not end in .xml");
-my $filehpp = "$1.hpp";
-my $filecpp = "$1.cpp";
-
-my $temphpp = "$filehpp-new";
-my $tempcpp = "$filecpp-new";
-unlink $temphpp, $tempcpp;
-open(HPP, ">$temphpp") or die "$temphpp: $!\n";
-open(CPP, ">$tempcpp") or die "$tempcpp: $!\n";
-
-my $i2 = " " x 2;
-my $i4 = " " x 4;
-my $lb = "{";
-my $rb = "}";
-
-sub disclaimer {
-    my $filename = shift;
-    return <<END;
-/*
- * $filename -- DO NOT EDIT !!
- *
- * To create a new version (both *.hpp and *.cpp):
- *
- * 1) edit $filexml
- * 2) perl tools/$progname $filexml
- * 3) check all files (*.xml *.hpp *.cpp) into CVS
- *
- * On RedHat linux requires perl-XML-Parser package.
- */
-END
-}
-
-my $classname = $filehpp;
-$classname =~ s!^.*/!!;
-$classname =~ s/\.hpp$//;
-
-sub handle_init {
-    my($parser) = @_;
-    my $guard = $filehpp;
-    $guard =~ s!^.*/!!;
-    $guard =~ s!([a-z])([A-Z])!${1}_${2}!g;
-    $guard =~ s!\.!_!g;
-    $guard = uc($guard);
-    print HPP "#ifndef $guard\n#define $guard\n\n";
-    print HPP disclaimer($filehpp), "\n";
-    print HPP "class $classname $lb\n";
-    print HPP "${i2}enum Value $lb\n";
-    print CPP disclaimer($filecpp), "\n";
-    print CPP "/* included in Ndberror.cpp */\n\n";
-}
-
-my %classhash = (
-    ApplicationError => 1,
-    NoDataFound => 1,
-    ConstraintViolation => 1,
-    SchemaError => 1,
-    UserDefinedError => 1,
-    InsufficientSpace => 1,
-    TemporaryResourceError => 1,
-    NodeRecoveryError => 1,
-    OverloadError => 1,
-    TimeoutExpired => 1,
-    UnknownResultError => 1,
-    InternalError => 1,
-    FunctionNotImplemented => 1,
-    UnknownErrorCode => 1,
-    NodeShutdown => 1,
-);
-
-my $section = undef;
-my %codehash = ();
-my %namehash = ();
-
-sub handle_start {
-    my($parser, $tag, %attr) = @_;
-    if ($tag eq 'Error') {
-	return;
-    }
-    if ($tag eq 'Section') {
-	$section = $attr{name};
-	$section =~ /^\w+$/ or
-	    $parser->xpcroak("invalid or missing section name");
-	return;
-    }
-    if ($tag eq 'Code') {
-	print HPP ",\n" if %codehash;
-	print CPP ",\n" if %codehash;
-	my $name = $attr{name};
-	my $class = $attr{class};
-	my $code = $attr{code};
-	my $message = $attr{message};
-	$name =~ /^\w+$/ or
-	    $parser->xpcroak("invalid or missing error name '$name'");
-	$namehash{$name}++ and
-	    $parser->xpcroak("duplicate error name '$name'");
-	$classhash{$class} or
-	    $parser->xpcroak("invalid or missing error class '$class'");
-	$code =~ /^\d+$/ or
-	    $parser->xpcroak("invalid or missing error code '$code'");
-	$codehash{$code}++ and
-	    $parser->xpcroak("duplicate error code '$code'");
-	$message =~ /\S/ or
-	    $parser->xpcroak("invalid or missing error message '$message'");
-	$message =~ s/^\s+|\s+$//g;
-	my $enum = "${section}_${name}";
-	print HPP "${i4}$enum = $code";
-	print CPP "${i2}$lb ${classname}::$enum,\n";
-	print CPP "${i4}NdbError::$class,\n";
-	print CPP "${i4}\"$message\"\n";
-	print CPP "${i2}$rb";
-	return;
-    }
-    $parser->xpcroak("unknown tag $tag");
-}
-
-sub handle_end {
-    my($parser, $tag) = @_;
-}
-
-sub handle_final {
-    print HPP "\n" if %codehash;
-    print HPP "${i2}$rb;\n";
-    print HPP "$rb;\n\n#endif\n";
-    print CPP ",\n" if 1;
-    return 1;
-}
-
-my $parser = new XML::Parser(
-    ParseParamEnt => 1,
-    Handlers => {
-	Init => \&handle_init,
-	Start => \&handle_start,
-	End => \&handle_end,
-	Final => \&handle_final,
-    },
-    ErrorContext => 0,
-);
-eval {
-    $parser->parsefile($filexml);
-};
-if ($@) {
-    my $errstr = join("\n", grep(m!\S! && ! m!^\s*at\s!, split(/\n/, $@)));
-    die "$filexml:\n$errstr\n";
-}
-
-close(HPP);
-close(CPP);
-rename($temphpp, $filehpp);
-rename($tempcpp, $filecpp);
-
-1;
-
-# vim:set sw=4:

=== removed file 'storage/ndb/tools/make-links.sh'
--- a/storage/ndb/tools/make-links.sh	2011-01-30 20:42:21 +0000
+++ b/storage/ndb/tools/make-links.sh	1970-01-01 00:00:00 +0000
@@ -1,35 +0,0 @@
-#! /bin/sh
-
-# Copyright (C) 2003, 2005 MySQL AB
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
-
-# 1 - Link top src
-# 2 - Link dst
-
-if [ $# -lt 2 ]
-then
-    exit 0
-fi
-
-name=`basename $2`
-files=`find $1/$name -type f -name '*.h*'`
-
-for i in $files
-do
-    ln -s $i $2/`basename $i`
-done
-
-
-

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.1-telco-7.0-spj-scan-vs-scan branch(ole.john.aske:3446 to 3447) Ole John Aske17 Mar