From: Ole John Aske Date: March 17 2011 8:17am Subject: bzr commit into mysql-5.1-telco-7.0-spj-scan-vs-scan branch (ole.john.aske:3447) List-Archive: http://lists.mysql.com/commits/133172 Message-Id: <20110317081727.CEF14223@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///net/fimafeng09/export/home/tmp/oleja/mysql/mysql-5.1-telco-7.0-spj-scan-scan/ based on revid:ole.john.aske@stripped 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 === 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 ; 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 ; +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 ; +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 ; +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 #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 limit 0,1; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000002 # Incident 1 #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 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 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 ptr, Page_request page_req) { jamEntry(); + +#ifdef VM_TRACE Ptr 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(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 = <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 <$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 < 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: revision is a merge).